Menu music and DAS on menu items.
This commit is contained in:
		
							parent
							
								
									fd40ba2ecc
								
							
						
					
					
						commit
						6d980285e3
					
				
							
								
								
									
										
											BIN
										
									
								
								bin/DMGTRIS.GBC
								
								
								
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/DMGTRIS.GBC
								
								
								
								
							
										
											Binary file not shown.
										
									
								
							| 
						 | 
					@ -37,5 +37,11 @@ SECTION "Bank ID 2", ROMX[$4000], BANK[2]
 | 
				
			||||||
    ENDR
 | 
					    ENDR
 | 
				
			||||||
    db $02
 | 
					    db $02
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SECTION "Bank ID 3", ROMX[$4000], BANK[3]
 | 
				
			||||||
 | 
					    REPT 7
 | 
				
			||||||
 | 
					        rst $00
 | 
				
			||||||
 | 
					    ENDR
 | 
				
			||||||
 | 
					    db $03
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ENDC
 | 
					ENDC
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -143,6 +143,7 @@ DEF SFX_LEVELLOCK       EQU 14
 | 
				
			||||||
DEF SFX_LEVELUP         EQU 15
 | 
					DEF SFX_LEVELUP         EQU 15
 | 
				
			||||||
DEF SFX_RANKUP          EQU 16
 | 
					DEF SFX_RANKUP          EQU 16
 | 
				
			||||||
DEF SFX_READYGO         EQU 17
 | 
					DEF SFX_READYGO         EQU 17
 | 
				
			||||||
 | 
					DEF MUSIC_MENU          EQU $EE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DEF STACK_SIZE          EQU 64
 | 
					DEF STACK_SIZE          EQU 64
 | 
				
			||||||
DEF GAME_OVER_R10       EQU 133
 | 
					DEF GAME_OVER_R10       EQU 133
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,30 +0,0 @@
 | 
				
			||||||
; DMGTRIS
 | 
					 | 
				
			||||||
; Copyright (C) 2023 - Randy Thiemann <randy.thiemann@gmail.com>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; This program is free software: you can redistribute it and/or modify
 | 
					 | 
				
			||||||
; it under the terms of the GNU General Public License as published by
 | 
					 | 
				
			||||||
; the Free Software Foundation, either version 3 of the License, or
 | 
					 | 
				
			||||||
; (at your option) any later version.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; This program is distributed in the hope that it will be useful,
 | 
					 | 
				
			||||||
; but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
					 | 
				
			||||||
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
					 | 
				
			||||||
; GNU General Public License for more details.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; You should have received a copy of the GNU General Public License
 | 
					 | 
				
			||||||
; along with this program.  If not, see <https://www.gnu.org/licenses/>.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
IF !DEF(BUILD_DATE_ASM)
 | 
					 | 
				
			||||||
DEF BUILD_DATE_ASM EQU 1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
SECTION "Build date", ROM0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    db "Built "
 | 
					 | 
				
			||||||
BuildDate::
 | 
					 | 
				
			||||||
    db __ISO_8601_UTC__
 | 
					 | 
				
			||||||
    db 0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
ENDC
 | 
					 | 
				
			||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| 
						 | 
					@ -0,0 +1,241 @@
 | 
				
			||||||
 | 
					# DMGTRIS
 | 
				
			||||||
 | 
					# Copyright (C) 2023 - Randy Thiemann <randy.thiemann@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 | 
					# it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					# the Free Software Foundation, either version 3 of the License, or
 | 
				
			||||||
 | 
					# (at your option) any later version.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# This program is distributed in the hope that it will be useful,
 | 
				
			||||||
 | 
					# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||||
 | 
					# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
				
			||||||
 | 
					# GNU General Public License for more details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# You should have received a copy of the GNU General Public License
 | 
				
			||||||
 | 
					# along with this program.  If not, see <https://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from construct import Struct, Const, Int32ul, Int16ul, Int8ul, Bytes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					vgm_header = Struct(
 | 
				
			||||||
 | 
					    "magic" / Const(b"Vgm "),
 | 
				
			||||||
 | 
					    "eof_offset" / Int32ul,
 | 
				
			||||||
 | 
					    "version" / Int32ul,
 | 
				
			||||||
 | 
					    "sn76489_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "ym2413_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "gd3_offset" / Int32ul,
 | 
				
			||||||
 | 
					    "total_samples" / Int32ul,
 | 
				
			||||||
 | 
					    "loop_offset" / Int32ul,
 | 
				
			||||||
 | 
					    "loop_samples" / Int32ul,
 | 
				
			||||||
 | 
					    "rate" / Int32ul,
 | 
				
			||||||
 | 
					    "sn_fb" / Int16ul,
 | 
				
			||||||
 | 
					    "sn_w" / Int8ul,
 | 
				
			||||||
 | 
					    "sn_c" / Int8ul,
 | 
				
			||||||
 | 
					    "ym2612_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "ym2151_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "vgm_data_offset" / Int32ul,
 | 
				
			||||||
 | 
					    "seg_pcm_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "seg_pcm_intf_reg" / Int32ul,
 | 
				
			||||||
 | 
					    "rf5c68_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "ym2203_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "ym2608_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "ym2610_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "ym3812_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "ym3526_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "y8950_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "ymf262_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "ymf278b_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "ymf271_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "ymz280b_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "rf5c164_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "pwm_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "ay8910_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "ay8910_type" / Int8ul,
 | 
				
			||||||
 | 
					    "ay8910_flags" / Int8ul,
 | 
				
			||||||
 | 
					    "ym2203_ay8910_flags" / Int8ul,
 | 
				
			||||||
 | 
					    "ym2608_ay8910_flags" / Int8ul,
 | 
				
			||||||
 | 
					    "volume_mod" / Int8ul,
 | 
				
			||||||
 | 
					    "reserved_0" / Bytes(1),
 | 
				
			||||||
 | 
					    "loop_base" / Int8ul,
 | 
				
			||||||
 | 
					    "loop_modifier" / Int8ul,
 | 
				
			||||||
 | 
					    "dmg_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "nes_apu_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "multi_pcm_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "upd7759_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "okim6258_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "okim6258_flags" / Int8ul,
 | 
				
			||||||
 | 
					    "k054539_flags" / Int8ul,
 | 
				
			||||||
 | 
					    "c140_chip_type" / Int8ul,
 | 
				
			||||||
 | 
					    "reserved_1" / Bytes(1),
 | 
				
			||||||
 | 
					    "okim6295_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "k051649_k052539_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "k054539_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "huc6280_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "c140_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "k053260_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "pokey_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "qsound_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "scsp_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "extra_hdr_offset" / Int32ul,
 | 
				
			||||||
 | 
					    "wonder_swan_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "vsu_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "saa1099_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "es5503_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "es5505_es5506_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "es5503_num_channels" / Int8ul,
 | 
				
			||||||
 | 
					    "es5505_es5506_num_channels" / Int8ul,
 | 
				
			||||||
 | 
					    "c352_clock_div" / Int8ul,
 | 
				
			||||||
 | 
					    "reserved_2" / Bytes(1),
 | 
				
			||||||
 | 
					    "x1_010_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "c352_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "ga20_clock" / Int32ul,
 | 
				
			||||||
 | 
					    "reserved_3" / Bytes(28)
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					b3_command = Struct(
 | 
				
			||||||
 | 
					    "command" / Const(b'\xB3'),
 | 
				
			||||||
 | 
					    "reg" / Int8ul,
 | 
				
			||||||
 | 
					    "data" / Int8ul
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					register_names = [
 | 
				
			||||||
 | 
					    "REG_UNK",               # 0x00
 | 
				
			||||||
 | 
					    "REG_UNK",               # 0x01
 | 
				
			||||||
 | 
					    "REG_UNK",               # 0x02
 | 
				
			||||||
 | 
					    "REG_UNK",               # 0x03
 | 
				
			||||||
 | 
					    "REG_UNK",               # 0x04
 | 
				
			||||||
 | 
					    "REG_UNK",               # 0x05
 | 
				
			||||||
 | 
					    "REG_UNK",               # 0x06
 | 
				
			||||||
 | 
					    "REG_UNK",               # 0x07
 | 
				
			||||||
 | 
					    "REG_UNK",               # 0x08
 | 
				
			||||||
 | 
					    "REG_UNK",               # 0x09
 | 
				
			||||||
 | 
					    "REG_UNK",               # 0x0A
 | 
				
			||||||
 | 
					    "REG_UNK",               # 0x0B
 | 
				
			||||||
 | 
					    "REG_UNK",               # 0x0C
 | 
				
			||||||
 | 
					    "REG_UNK",               # 0x0D
 | 
				
			||||||
 | 
					    "REG_UNK",               # 0x0E
 | 
				
			||||||
 | 
					    "REG_UNK",               # 0x0F
 | 
				
			||||||
 | 
					    "REG_NR10_CH1_SWEEP",    # 0x10
 | 
				
			||||||
 | 
					    "REG_NR11_CH1_LENDT",    # 0x11
 | 
				
			||||||
 | 
					    "REG_NR12_CH1_VOLEV",    # 0x12
 | 
				
			||||||
 | 
					    "REG_NR13_CH1_FRQLO",    # 0x13
 | 
				
			||||||
 | 
					    "REG_NR14_CH1_FRQHI",    # 0x14
 | 
				
			||||||
 | 
					    "REG_UNK",               # 0x15
 | 
				
			||||||
 | 
					    "REG_NR21_CH2_LENDT",    # 0x16
 | 
				
			||||||
 | 
					    "REG_NR22_CH2_VOLEV",    # 0x17
 | 
				
			||||||
 | 
					    "REG_NR23_CH2_FRQLO",    # 0x18
 | 
				
			||||||
 | 
					    "REG_NR24_CH2_FRQHI",    # 0x19
 | 
				
			||||||
 | 
					    "REG_NR30_CH3_DACEN",    # 0x1A
 | 
				
			||||||
 | 
					    "REG_NR31_CH3_LENGT",    # 0x1B
 | 
				
			||||||
 | 
					    "REG_NR32_CH3_VOLUM",    # 0x1C
 | 
				
			||||||
 | 
					    "REG_NR33_CH3_FRQLO",    # 0x1D
 | 
				
			||||||
 | 
					    "REG_NR34_CH3_FRQHI",    # 0x1E
 | 
				
			||||||
 | 
					    "REG_UNK",               # 0x1F
 | 
				
			||||||
 | 
					    "REG_NR41_CH4_LENGT",    # 0x20
 | 
				
			||||||
 | 
					    "REG_NR42_CH4_VOLEV",    # 0x21
 | 
				
			||||||
 | 
					    "REG_NR43_CH4_FQRND",    # 0x22
 | 
				
			||||||
 | 
					    "REG_NR44_CH4_CNTRL",    # 0x23
 | 
				
			||||||
 | 
					    "REG_NR50_MVOLVINPN",    # 0x24
 | 
				
			||||||
 | 
					    "REG_NR51_MASTERPAN",    # 0x25
 | 
				
			||||||
 | 
					    "REG_NR52_MASTERCTL",    # 0x26
 | 
				
			||||||
 | 
					    "REG_UNK",               # 0x27
 | 
				
			||||||
 | 
					    "REG_UNK",               # 0x28
 | 
				
			||||||
 | 
					    "REG_UNK",               # 0x29
 | 
				
			||||||
 | 
					    "REG_UNK",               # 0x2A
 | 
				
			||||||
 | 
					    "REG_UNK",               # 0x2B
 | 
				
			||||||
 | 
					    "REG_UNK",               # 0x2C
 | 
				
			||||||
 | 
					    "REG_UNK",               # 0x2D
 | 
				
			||||||
 | 
					    "REG_UNK",               # 0x2E
 | 
				
			||||||
 | 
					    "REG_UNK",               # 0x2F
 | 
				
			||||||
 | 
					    "REG_WAVE_PATTERN_0",    # 0x30
 | 
				
			||||||
 | 
					    "REG_WAVE_PATTERN_1",    # 0x31
 | 
				
			||||||
 | 
					    "REG_WAVE_PATTERN_2",    # 0x32
 | 
				
			||||||
 | 
					    "REG_WAVE_PATTERN_3",    # 0x33
 | 
				
			||||||
 | 
					    "REG_WAVE_PATTERN_4",    # 0x34
 | 
				
			||||||
 | 
					    "REG_WAVE_PATTERN_5",    # 0x35
 | 
				
			||||||
 | 
					    "REG_WAVE_PATTERN_6",    # 0x36
 | 
				
			||||||
 | 
					    "REG_WAVE_PATTERN_7",    # 0x37
 | 
				
			||||||
 | 
					    "REG_WAVE_PATTERN_8",    # 0x38
 | 
				
			||||||
 | 
					    "REG_WAVE_PATTERN_9",    # 0x39
 | 
				
			||||||
 | 
					    "REG_WAVE_PATTERN_A",    # 0x3A
 | 
				
			||||||
 | 
					    "REG_WAVE_PATTERN_B",    # 0x3B
 | 
				
			||||||
 | 
					    "REG_WAVE_PATTERN_C",    # 0x3C
 | 
				
			||||||
 | 
					    "REG_WAVE_PATTERN_D",    # 0x3D
 | 
				
			||||||
 | 
					    "REG_WAVE_PATTERN_E",    # 0x3E
 | 
				
			||||||
 | 
					    "REG_WAVE_PATTERN_F",    # 0x3F
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def chunks(lst, n):
 | 
				
			||||||
 | 
					    for i in range(0, len(lst), n):
 | 
				
			||||||
 | 
					        yield lst[i:i + n]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class DB:
 | 
				
			||||||
 | 
					    l = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __init__(self):
 | 
				
			||||||
 | 
					        self.l = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __str__(self):
 | 
				
			||||||
 | 
					        out = []
 | 
				
			||||||
 | 
					        for chunk in chunks(self.l, 8):
 | 
				
			||||||
 | 
					            out.append(f"    db {', '.join(chunk)}")
 | 
				
			||||||
 | 
					        return "\n".join(out) + "\n"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __repr__(self):
 | 
				
			||||||
 | 
					        return str(self)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __len__(self):
 | 
				
			||||||
 | 
					        return len(self.l)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def add(self, *args):
 | 
				
			||||||
 | 
					        if len(args) == 1:
 | 
				
			||||||
 | 
					            self.l.append(f"${args[0]:02X}")
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            self.l.append(register_names[args[0]])
 | 
				
			||||||
 | 
					            self.l.append(f"${args[1]:02X}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def trim(self):
 | 
				
			||||||
 | 
					        while self.l[-1] == "$FF":
 | 
				
			||||||
 | 
					            self.l.pop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for c, v in enumerate(register_names):
 | 
				
			||||||
 | 
					    if v != "REG_UNK":
 | 
				
			||||||
 | 
					        print(f"DEF {v} EQU ${c:02X}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					print()
 | 
				
			||||||
 | 
					print("sMusicMenu::")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					with open("menu.vgm", "rb") as f:
 | 
				
			||||||
 | 
					    data = f.read()
 | 
				
			||||||
 | 
					    header = vgm_header.parse(data)
 | 
				
			||||||
 | 
					    data_offset = 0x34 + header.vgm_data_offset
 | 
				
			||||||
 | 
					    data = data[data_offset:]
 | 
				
			||||||
 | 
					    db = DB()
 | 
				
			||||||
 | 
					    ctr = 0
 | 
				
			||||||
 | 
					    last = None
 | 
				
			||||||
 | 
					    while len(data) > 0:
 | 
				
			||||||
 | 
					        if data.startswith(b'\x67\x66'):
 | 
				
			||||||
 | 
					            data = data[3:]
 | 
				
			||||||
 | 
					            data = data[Int32ul.parse(data) + 4:]
 | 
				
			||||||
 | 
					        elif data.startswith(b'\xB3'):
 | 
				
			||||||
 | 
					            b3 = b3_command.parse(data)
 | 
				
			||||||
 | 
					            if last == 0x62:
 | 
				
			||||||
 | 
					                print(db)
 | 
				
			||||||
 | 
					                db = DB()
 | 
				
			||||||
 | 
					            db.add(b3.reg + 0x10, b3.data)
 | 
				
			||||||
 | 
					            last = 0xB3
 | 
				
			||||||
 | 
					            data = data[3:]
 | 
				
			||||||
 | 
					        elif data.startswith(b'\x62'):
 | 
				
			||||||
 | 
					            db.add(0xFF)
 | 
				
			||||||
 | 
					            last = 0x62
 | 
				
			||||||
 | 
					            data = data[1:]
 | 
				
			||||||
 | 
					        elif data.startswith(b'\x66'):
 | 
				
			||||||
 | 
					            if len(db) > 0:
 | 
				
			||||||
 | 
					                db.trim()
 | 
				
			||||||
 | 
					                db.add(0xFE)
 | 
				
			||||||
 | 
					                print(db, end="")
 | 
				
			||||||
 | 
					            break
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            print(f"Unknown command: ${data[0]:02X}")
 | 
				
			||||||
 | 
					            data = data[1:]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					print("sMusicMenuEnd::")
 | 
				
			||||||
							
								
								
									
										2053
									
								
								src/sfx.asm
								
								
								
								
							
							
						
						
									
										2053
									
								
								src/sfx.asm
								
								
								
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
					@ -121,6 +121,9 @@ SwitchToGameplay::
 | 
				
			||||||
    ld a, LCDCF_ON | LCDCF_BGON | LCDCF_OBJON | LCDCF_BLK01
 | 
					    ld a, LCDCF_ON | LCDCF_BGON | LCDCF_OBJON | LCDCF_BLK01
 | 
				
			||||||
    ldh [rLCDC], a
 | 
					    ldh [rLCDC], a
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ; Music end
 | 
				
			||||||
 | 
					    call SFXKill
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ; Make sure the first game loop starts just like all the future ones.
 | 
					    ; Make sure the first game loop starts just like all the future ones.
 | 
				
			||||||
    wait_vblank
 | 
					    wait_vblank
 | 
				
			||||||
    wait_vblank_end
 | 
					    wait_vblank_end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -123,6 +123,11 @@ SwitchToTitle::
 | 
				
			||||||
    ld a, LCDCF_ON | LCDCF_BGON | LCDCF_BLK01
 | 
					    ld a, LCDCF_ON | LCDCF_BGON | LCDCF_BLK01
 | 
				
			||||||
    ldh [rLCDC], a
 | 
					    ldh [rLCDC], a
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ; Music start
 | 
				
			||||||
 | 
					    call SFXKill
 | 
				
			||||||
 | 
					    ld a, MUSIC_MENU
 | 
				
			||||||
 | 
					    call SFXEnqueue
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ; Make sure the first game loop starts just like all the future ones.
 | 
					    ; Make sure the first game loop starts just like all the future ones.
 | 
				
			||||||
    wait_vblank
 | 
					    wait_vblank
 | 
				
			||||||
    wait_vblank_end
 | 
					    wait_vblank_end
 | 
				
			||||||
| 
						 | 
					@ -178,12 +183,24 @@ TitleEventLoopHandler::
 | 
				
			||||||
.left
 | 
					.left
 | 
				
			||||||
    ldh a, [hLeftState]
 | 
					    ldh a, [hLeftState]
 | 
				
			||||||
    cp a, 1
 | 
					    cp a, 1
 | 
				
			||||||
 | 
					    jp z, DecrementOption
 | 
				
			||||||
 | 
					    cp a, 16
 | 
				
			||||||
 | 
					    jr c, .right
 | 
				
			||||||
 | 
					    ldh a, [hFrameCtr]
 | 
				
			||||||
 | 
					    and 3
 | 
				
			||||||
 | 
					    cp a, 3
 | 
				
			||||||
    jr nz, .right
 | 
					    jr nz, .right
 | 
				
			||||||
    jp DecrementOption
 | 
					    jp DecrementOption
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.right
 | 
					.right
 | 
				
			||||||
    ldh a, [hRightState]
 | 
					    ldh a, [hRightState]
 | 
				
			||||||
    cp a, 1
 | 
					    cp a, 1
 | 
				
			||||||
 | 
					    jp z, IncrementOption
 | 
				
			||||||
 | 
					    cp a, 16
 | 
				
			||||||
 | 
					    jr c, .done
 | 
				
			||||||
 | 
					    ldh a, [hFrameCtr]
 | 
				
			||||||
 | 
					    and 3
 | 
				
			||||||
 | 
					    cp a, 3
 | 
				
			||||||
    jr nz, .done
 | 
					    jr nz, .done
 | 
				
			||||||
    jp IncrementOption
 | 
					    jp IncrementOption
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue