mirror of
https://github.com/pret/pokepuzzle.git
synced 2026-08-22 19:04:36 -05:00
Dump audio engine
This commit is contained in:
2
Makefile
2
Makefile
@@ -19,7 +19,7 @@ compare: baserom.gbc pokepuzzle.gbc
|
||||
$(OBJS): $$*.asm $$($$*_dep)
|
||||
@python $(EXTRAS)/gfx.py 2bpp $(2bppq)
|
||||
@python $(EXTRAS)/gfx.py 1bpp $(1bppq)
|
||||
rgbasm -E -i src/ -o $@ $<
|
||||
rgbasm -E -L -i src/ -o $@ $<
|
||||
|
||||
pokepuzzle.gbc: $(OBJS)
|
||||
rgblink -p 0xff -n $*.sym -m $*.map -O baserom.gbc -o $@ $^
|
||||
|
||||
7341
src/audio/engine.asm
Normal file
7341
src/audio/engine.asm
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1 +1,2 @@
|
||||
INCLUDE "constants/hardware_constants.asm"
|
||||
INCLUDE "constants/music_constants.asm"
|
||||
|
||||
74
src/constants/hardware_constants.asm
Normal file
74
src/constants/hardware_constants.asm
Normal file
@@ -0,0 +1,74 @@
|
||||
; Hardware registers
|
||||
rJOYP EQU $ff00 ; Joypad (R/W)
|
||||
rSB EQU $ff01 ; Serial transfer data (R/W)
|
||||
rSC EQU $ff02 ; Serial Transfer Control (R/W)
|
||||
rSC_ON EQU 7
|
||||
rSC_CGB EQU 1
|
||||
rSC_CLOCK EQU 0
|
||||
rDIV EQU $ff04 ; Divider Register (R/W)
|
||||
rTIMA EQU $ff05 ; Timer counter (R/W)
|
||||
rTMA EQU $ff06 ; Timer Modulo (R/W)
|
||||
rTAC EQU $ff07 ; Timer Control (R/W)
|
||||
rTAC_ON EQU 2
|
||||
rTAC_4096_HZ EQU 0
|
||||
rTAC_262144_HZ EQU 1
|
||||
rTAC_65536_HZ EQU 2
|
||||
rTAC_16384_HZ EQU 3
|
||||
rIF EQU $ff0f ; Interrupt Flag (R/W)
|
||||
rNR10 EQU $ff10 ; Channel 1 Sweep register (R/W)
|
||||
rNR11 EQU $ff11 ; Channel 1 Sound length/Wave pattern duty (R/W)
|
||||
rNR12 EQU $ff12 ; Channel 1 Volume Envelope (R/W)
|
||||
rNR13 EQU $ff13 ; Channel 1 Frequency lo (Write Only)
|
||||
rNR14 EQU $ff14 ; Channel 1 Frequency hi (R/W)
|
||||
rNR21 EQU $ff16 ; Channel 2 Sound Length/Wave Pattern Duty (R/W)
|
||||
rNR22 EQU $ff17 ; Channel 2 Volume Envelope (R/W)
|
||||
rNR23 EQU $ff18 ; Channel 2 Frequency lo data (W)
|
||||
rNR24 EQU $ff19 ; Channel 2 Frequency hi data (R/W)
|
||||
rNR30 EQU $ff1a ; Channel 3 Sound on/off (R/W)
|
||||
rNR31 EQU $ff1b ; Channel 3 Sound Length
|
||||
rNR32 EQU $ff1c ; Channel 3 Select output level (R/W)
|
||||
rNR33 EQU $ff1d ; Channel 3 Frequency's lower data (W)
|
||||
rNR34 EQU $ff1e ; Channel 3 Frequency's higher data (R/W)
|
||||
rNR41 EQU $ff20 ; Channel 4 Sound Length (R/W)
|
||||
rNR42 EQU $ff21 ; Channel 4 Volume Envelope (R/W)
|
||||
rNR43 EQU $ff22 ; Channel 4 Polynomial Counter (R/W)
|
||||
rNR44 EQU $ff23 ; Channel 4 Counter/consecutive; Initial (R/W)
|
||||
rNR50 EQU $ff24 ; Channel control / ON-OFF / Volume (R/W)
|
||||
rNR51 EQU $ff25 ; Selection of Sound output terminal (R/W)
|
||||
rNR52 EQU $ff26 ; Sound on/off
|
||||
rWave EQU $ff30
|
||||
rLCDC EQU $ff40 ; LCD Control (R/W)
|
||||
rLCDC_ENABLE EQU 7
|
||||
rLCDC_ENABLE_MASK EQU 1 << rLCDC_ENABLE
|
||||
rSTAT EQU $ff41 ; LCDC Status (R/W)
|
||||
rSCY EQU $ff42 ; Scroll Y (R/W)
|
||||
rSCX EQU $ff43 ; Scroll X (R/W)
|
||||
rLY EQU $ff44 ; LCDC Y-Coordinate (R)
|
||||
rLYC EQU $ff45 ; LY Compare (R/W)
|
||||
rDMA EQU $ff46 ; DMA Transfer and Start Address (W)
|
||||
rBGP EQU $ff47 ; BG Palette Data (R/W) - Non CGB Mode Only
|
||||
rOBP0 EQU $ff48 ; Object Palette 0 Data (R/W) - Non CGB Mode Only
|
||||
rOBP1 EQU $ff49 ; Object Palette 1 Data (R/W) - Non CGB Mode Only
|
||||
rWY EQU $ff4a ; Window Y Position (R/W)
|
||||
rWX EQU $ff4b ; Window X Position minus 7 (R/W)
|
||||
rKEY1 EQU $ff4d ; CGB Mode Only - Prepare Speed Switch
|
||||
rVBK EQU $ff4f ; CGB Mode Only - VRAM Bank
|
||||
rHDMA1 EQU $ff51 ; CGB Mode Only - New DMA Source, High
|
||||
rHDMA2 EQU $ff52 ; CGB Mode Only - New DMA Source, Low
|
||||
rHDMA3 EQU $ff53 ; CGB Mode Only - New DMA Destination, High
|
||||
rHDMA4 EQU $ff54 ; CGB Mode Only - New DMA Destination, Low
|
||||
rHDMA5 EQU $ff55 ; CGB Mode Only - New DMA Length/Mode/Start
|
||||
rRP EQU $ff56 ; CGB Mode Only - Infrared Communications Port
|
||||
rBGPI EQU $ff68 ; CGB Mode Only - Background Palette Index
|
||||
rBGPD EQU $ff69 ; CGB Mode Only - Background Palette Data
|
||||
rOBPI EQU $ff6a ; CGB Mode Only - Sprite Palette Index
|
||||
rOBPD EQU $ff6b ; CGB Mode Only - Sprite Palette Data
|
||||
rUNKNOWN1 EQU $ff6c ; (FEh) Bit 0 (Read/Write) - CGB Mode Only
|
||||
rSVBK EQU $ff70 ; CGB Mode Only - WRAM Bank
|
||||
rUNKNOWN2 EQU $ff72 ; (00h) - Bit 0-7 (Read/Write)
|
||||
rUNKNOWN3 EQU $ff73 ; (00h) - Bit 0-7 (Read/Write)
|
||||
rUNKNOWN4 EQU $ff74 ; (00h) - Bit 0-7 (Read/Write) - CGB Mode Only
|
||||
rUNKNOWN5 EQU $ff75 ; (8Fh) - Bit 4-6 (Read/Write)
|
||||
rUNKNOWN6 EQU $ff76 ; (00h) - Always 00h (Read Only)
|
||||
rUNKNOWN7 EQU $ff77 ; (00h) - Always 00h (Read Only)
|
||||
rIE EQU $ffff ; Interrupt Enable (R/W)
|
||||
761
src/home.asm
761
src/home.asm
@@ -53,3 +53,764 @@ SECTION "SGB Flag", ROM0[$146]
|
||||
|
||||
SECTION "Start", ROM0[$150]
|
||||
Start: ; 0150 (0:0150)
|
||||
|
||||
SECTION "Func_10c4", ROM0[$10c4]
|
||||
|
||||
Func_10c4: ; 10c4 (0:10c4)
|
||||
ld de, $2100
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, [wSongBank]
|
||||
ldh [hROMBank], a
|
||||
ld [de], a
|
||||
ld l, c
|
||||
ld h, b
|
||||
ld a, [hli]
|
||||
ld c, a
|
||||
ld b, [hl]
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [de], a
|
||||
jp Func_80000.asm_80023
|
||||
; 0x10dc
|
||||
|
||||
Func_10dc: ; 10dc (0:10dc)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(PointerTable_83401)
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ld a, [hli]
|
||||
ld [wc61e], a
|
||||
ld a, [hld]
|
||||
ld [wc61e + 1], a
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ret
|
||||
; 0x10f5
|
||||
|
||||
Func_10f5: ; 10f5 (0:10f5)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, $20
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ld a, [bc]
|
||||
ld l, a
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
jp Func_803e6
|
||||
; 0x110a
|
||||
|
||||
Func_110a: ; 110a (0:110a)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, $20
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ld l, c
|
||||
ld h, b
|
||||
ld a, [hli]
|
||||
ld c, a
|
||||
ld b, [hl]
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
jp Func_803cd.asm_803e3
|
||||
; 0x1122
|
||||
|
||||
Func_1122: ; 1122 (0:1122)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(PointerTable_82230)
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ld a, [hli]
|
||||
ld [wc624], a
|
||||
ld a, [hli]
|
||||
ld [wc624 + 1], a
|
||||
ld a, [hli]
|
||||
ld [wc629], a
|
||||
ld a, [hli]
|
||||
ld [wc629 + 1], a
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ret
|
||||
; 0x1143
|
||||
|
||||
Func_1143: ; 1143 (0:1143)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, $20
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ld a, [bc]
|
||||
ld e, a
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ret
|
||||
; 0x1156
|
||||
|
||||
Func_1156: ; 1156 (0:1156)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(PointerTable_81a31)
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ld a, [hli]
|
||||
ld [wc6c3], a
|
||||
ld a, [hld]
|
||||
ld [wc6c3 + 1], a
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ret
|
||||
; 0x116f
|
||||
|
||||
Func_116f: ; 116f (0:116f)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, $20
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
call wc6c2
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ret
|
||||
; 0x1183
|
||||
|
||||
Func_1183: ; 1183 (0:1183)
|
||||
ld de, $2100
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, [wSongBank]
|
||||
ldh [hROMBank], a
|
||||
ld [de], a
|
||||
ld l, c
|
||||
ld h, b
|
||||
ld a, [hli]
|
||||
ld c, a
|
||||
ld b, [hl]
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [de], a
|
||||
jp Func_80525.asm_80548
|
||||
; 0x119b
|
||||
|
||||
Func_119b: ; 119b (0:119b)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(PointerTable_83401)
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ld a, [hli]
|
||||
ld [wc64e], a
|
||||
ld a, [hld]
|
||||
ld [wc64e + 1], a
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ret
|
||||
; 0x11b4
|
||||
|
||||
Func_11b4: ; 11b4 (0:11b4)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, $20
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ld a, [bc]
|
||||
ld l, a
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
jp Func_8090b
|
||||
; 0x11c9
|
||||
|
||||
Func_11c9: ; 11c9 (0:11c9)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, $20
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ld l, c
|
||||
ld h, b
|
||||
ld a, [hli]
|
||||
ld c, a
|
||||
ld b, [hl]
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
jp Func_808f2.asm_80908
|
||||
; 0x11e1
|
||||
|
||||
Func_11e1: ; 11e1 (0:11e1)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(PointerTable_82230)
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ld a, [hli]
|
||||
ld [wc654], a
|
||||
ld a, [hli]
|
||||
ld [wc654 + 1], a
|
||||
ld a, [hli]
|
||||
ld [wc659], a
|
||||
ld a, [hli]
|
||||
ld [wc659 + 1], a
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ret
|
||||
; 0x1202
|
||||
|
||||
Func_1202: ; 1202 (0:1202)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, $20
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ld a, [bc]
|
||||
ld e, a
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ret
|
||||
; 0x1215
|
||||
|
||||
Func_1215: ; 1215 (0:1215)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(PointerTable_81a3f)
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ld a, [hli]
|
||||
ld [wc6c6], a
|
||||
ld a, [hld]
|
||||
ld [wc6c6 + 1], a
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ret
|
||||
; 0x122e
|
||||
|
||||
Func_122e: ; 122e (0:122e)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, $20
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
call wc6c5
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ret
|
||||
; 0x1242
|
||||
|
||||
Func_1242: ; 1242 (0:1242)
|
||||
ld de, $2100
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, [wSongBank]
|
||||
ldh [hROMBank], a
|
||||
ld [de], a
|
||||
ld l, c
|
||||
ld h, b
|
||||
ld a, [hli]
|
||||
ld c, a
|
||||
ld b, [hl]
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [de], a
|
||||
jp Func_80a4a.asm_80a6d
|
||||
; 0x125a
|
||||
|
||||
Func_125a: ; 125a (0:125a)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(PointerTable_83401)
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ld a, [hli]
|
||||
ld [wc67e], a
|
||||
ld a, [hld]
|
||||
ld [wc67e + 1], a
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ret
|
||||
; 0x1273
|
||||
|
||||
Func_1273: ; 1273 (0:1273)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, $20
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ld a, [bc]
|
||||
ld l, a
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
jp Func_80e34
|
||||
; 0x1288
|
||||
|
||||
Func_1288: ; 1288 (0:1288)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, $20
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ld l, c
|
||||
ld h, b
|
||||
ld a, [hli]
|
||||
ld c, a
|
||||
ld b, [hl]
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
jp Func_80e1b.asm_80e31
|
||||
; 0x12a0
|
||||
|
||||
Func_12a0: ; 12a0 (0:12a0)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(PointerTable_82230)
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ld a, [hli]
|
||||
ld [wc684], a
|
||||
ld a, [hli]
|
||||
ld [wc684 + 1], a
|
||||
ld a, [hli]
|
||||
ld [wc689], a
|
||||
ld a, [hli]
|
||||
ld [wc689 + 1], a
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ret
|
||||
; 0x12c1
|
||||
|
||||
Func_12c1: ; 12c1 (0:12c1)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, $20
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ld a, [bc]
|
||||
ld e, a
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ret
|
||||
; 0x12d4
|
||||
|
||||
Func_12d4: ; 12d4 (0:12d4)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(PointerTable_81a3f)
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ld a, [hli]
|
||||
ld [wc6c9], a
|
||||
ld a, [hld]
|
||||
ld [wc6c9 + 1], a
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ret
|
||||
; 0x12ed
|
||||
|
||||
Func_12ed: ; 12ed (0:12ed)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, $20
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
call wc6c8
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ret
|
||||
; 0x1301
|
||||
|
||||
Func_1301: ; 1301 (0:1301)
|
||||
ld de, $2100
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, [wSongBank]
|
||||
ldh [hROMBank], a
|
||||
ld [de], a
|
||||
ld l, c
|
||||
ld h, b
|
||||
ld a, [hli]
|
||||
ld c, a
|
||||
ld b, [hl]
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [de], a
|
||||
jp Func_80f80.asm_80fa3
|
||||
; 0x1319
|
||||
|
||||
Func_1319: ; 1319 (0:1319)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(PointerTable_82230)
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ld a, [hli]
|
||||
ld [wc6b4], a
|
||||
ld a, [hli]
|
||||
ld [wc6b4 + 1], a
|
||||
ld a, [hli]
|
||||
ld [wc6b9], a
|
||||
ld a, [hli]
|
||||
ld [wc6b9 + 1], a
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ret
|
||||
; 0x133a
|
||||
|
||||
Func_133a: ; 133a (0:133a)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, $20
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ld a, [bc]
|
||||
ld e, a
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ret
|
||||
; 0x134d
|
||||
|
||||
Func_134d: ; 134d (0:134d)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(PointerTable_81a3f)
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ld a, [hli]
|
||||
ld [wc6cc], a
|
||||
ld a, [hld]
|
||||
ld [wc6cc + 1], a
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ret
|
||||
; 0x1366
|
||||
|
||||
Func_1366: ; 1366 (0:1366)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, $20
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
call wc6cb
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ret
|
||||
; 0x137a
|
||||
|
||||
Func_137a: ; 137a (0:137a)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(Func_81383)
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
call Func_81383
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, $21
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
call $4000
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ret
|
||||
; 0x13a1
|
||||
|
||||
; play song
|
||||
; input:
|
||||
; a: song id
|
||||
Func_13a1: ; 13a1 (0:13a1)
|
||||
push af
|
||||
push hl
|
||||
ld l, a
|
||||
ld a, [wc601]
|
||||
and a
|
||||
jr nz, .asm_13bd
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(Func_813ba)
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
call Func_813ba
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
.asm_13bd
|
||||
pop hl
|
||||
pop af
|
||||
ret
|
||||
; 0x13c0
|
||||
|
||||
; get song header
|
||||
; input:
|
||||
; hl: header pointer
|
||||
; output:
|
||||
; wSongBank: song bank
|
||||
; hl: song pointer
|
||||
Func_13c0: ; 13c0 (0:13c0)
|
||||
ld de, $2100
|
||||
ldh a, [hROMBank] ; hROMBank
|
||||
push af
|
||||
ld a, BANK(SongPointers)
|
||||
ldh [hROMBank], a
|
||||
ld [de], a
|
||||
ld a, [hld]
|
||||
ld [wSongBank], a
|
||||
ld a, [hld]
|
||||
ld l, [hl]
|
||||
ld h, a
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [de], a
|
||||
ret
|
||||
; 0x13d7
|
||||
|
||||
; get next song byte
|
||||
; input:
|
||||
; hl: song pointer
|
||||
; wSongBank: song bank
|
||||
; output:
|
||||
; e: song byte
|
||||
Func_13d7: ; 13d7 (0:13d7)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, [wSongBank]
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ld a, [hli]
|
||||
ld e, a
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ret
|
||||
; 0x13eb
|
||||
|
||||
; update sound
|
||||
Func_13eb: ; 13eb (0:13eb)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, $21
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
call $4012
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(Func_814c5)
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
call Func_814c5 ; update sound
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ret
|
||||
; 0x1412
|
||||
|
||||
; get next song byte via bc
|
||||
; input:
|
||||
; bc: song pointer
|
||||
; wSongBank: song bank
|
||||
; output:
|
||||
; e: song byte
|
||||
Func_1412: ; 1412 (0:1412)
|
||||
ld hl, $2100
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, [wSongBank]
|
||||
ldh [hROMBank], a
|
||||
ld [hl], a
|
||||
ld a, [bc]
|
||||
inc bc
|
||||
ld e, a
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [hl], a
|
||||
ret
|
||||
; 0x1426
|
||||
|
||||
Func_1426: ; 1426 (0:1426)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, $21
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
call $40c0
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(Func_8143e)
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
call Func_8143e
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ret
|
||||
; 0x144d
|
||||
|
||||
Func_144d: ; 144d (0:144d)
|
||||
ld e, a
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(Func_816fd)
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
call Func_816fd
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ret
|
||||
; 0x1462
|
||||
|
||||
Func_1462: ; 1462 (0:1462)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(Func_81817)
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
call Func_81817
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ret
|
||||
; 0x1476
|
||||
|
||||
Func_1476: ; 1476 (0:1476)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(DataTable_82f71)
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
.asm_1480
|
||||
ld a, [hli]
|
||||
ld [$ff00+c], a
|
||||
inc c
|
||||
dec b
|
||||
jr nz, .asm_1480
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ret
|
||||
; 0x148d
|
||||
|
||||
Func_148d: ; 148d (0:148d)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(Func_81468)
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
call Func_81468
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ret
|
||||
; 0x14a1
|
||||
|
||||
Func_14a1: ; 14a1 (0:14a1)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(Func_81482)
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
call Func_81482
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ret
|
||||
; 0x14b5
|
||||
|
||||
Func_14b5: ; 14b5 (0:14b5)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(Func_81490)
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
call Func_81490
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ret
|
||||
; 0x14c9
|
||||
|
||||
Func_14c9: ; 14c9 (0:14c9)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(Func_814a9)
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
call Func_814a9
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ret
|
||||
; 0x14dd
|
||||
|
||||
Func_14dd: ; 14dd (0:14dd)
|
||||
ld a, [wc601]
|
||||
and a
|
||||
jr z, .asm_14e5
|
||||
scf
|
||||
ret
|
||||
.asm_14e5
|
||||
ld a, [wc5fd]
|
||||
and a
|
||||
ret nz
|
||||
ld a, [wChannel1Pointer + 1]
|
||||
and a
|
||||
ret nz
|
||||
ld a, [wChannel2Pointer + 1]
|
||||
and a
|
||||
ret nz
|
||||
ld a, [wChannel3Pointer + 1]
|
||||
and a
|
||||
ret nz
|
||||
ld a, [wChannel4Pointer + 1]
|
||||
and a
|
||||
ret nz
|
||||
scf
|
||||
ret
|
||||
; 0x1500
|
||||
|
||||
Func_1500: ; 1500 (0:1500)
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(Func_81857)
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
call Func_81857
|
||||
pop af
|
||||
ldh [hROMBank], a
|
||||
ld [$2100], a
|
||||
ret
|
||||
; 0x1514
|
||||
|
||||
9
src/hram.asm
Normal file
9
src/hram.asm
Normal file
@@ -0,0 +1,9 @@
|
||||
SECTION "High RAM", HRAM[$ff80]
|
||||
|
||||
ds $23
|
||||
|
||||
hROMBank:: ds 1 ; ffa3
|
||||
|
||||
ds $1a
|
||||
|
||||
hffbe:: ds 1 ; ffbe
|
||||
@@ -1,10 +1,12 @@
|
||||
INCLUDE "constants.asm"
|
||||
INCLUDE "wram.asm"
|
||||
INCLUDE "hram.asm"
|
||||
|
||||
INCLUDE "home.asm"
|
||||
|
||||
SECTION "Song Pointers", ROMX[$590e], BANK[$20]
|
||||
SECTION "Audio Engine", ROMX[$4000], BANK[$20]
|
||||
|
||||
INCLUDE "audio/song_pointers.asm"
|
||||
INCLUDE "audio/engine.asm"
|
||||
|
||||
SECTION "Panel de Pon 3", ROMX[$7689], BANK[$23]
|
||||
|
||||
|
||||
192
src/wram.asm
Normal file
192
src/wram.asm
Normal file
@@ -0,0 +1,192 @@
|
||||
SECTION "Audio RAM", WRAM0[$c5f0]
|
||||
|
||||
wAudioStart::
|
||||
|
||||
wc5f0:: ds 1 ; c5f0
|
||||
wc5f1:: ds 1 ; c5f1
|
||||
|
||||
; unused ?
|
||||
ds $4
|
||||
|
||||
wc5f6:: ds 1 ; c5f6
|
||||
wc5f7:: ds 1 ; c5f7
|
||||
wc5f8:: ds 1 ; c5f8
|
||||
wc5f9:: ds 1 ; c5f9
|
||||
wc5fa:: ds 1 ; c5fa
|
||||
wc5fb:: ds 1 ; c5fb
|
||||
wSongBank:: ds 1 ; c5fc
|
||||
wc5fd:: ds 1 ; c5fd
|
||||
wc5fe:: ds 1 ; c5fe
|
||||
wc5ff:: ds 1 ; c5ff
|
||||
wc600:: ds 1 ; c600
|
||||
wc601:: ds 1 ; c601
|
||||
|
||||
; channel 1
|
||||
wc602:: ds 1 ; c602
|
||||
wc603:: ds 1 ; c603
|
||||
wc604:: ds 1 ; c604
|
||||
wc605:: ds 1 ; c605
|
||||
wc606:: ds 1 ; c606
|
||||
wc607:: ds 1 ; c607
|
||||
wc608:: ds 1 ; c608
|
||||
wChannel1Pointer:: ds 2 ; c609
|
||||
wc60b:: ds 1 ; c60b
|
||||
wc60c:: ds 1 ; c60c
|
||||
wc60d:: ds 1 ; c60d
|
||||
wc60e:: ds 1 ; c60e
|
||||
wc60f:: ds 1 ; c60f
|
||||
wc610:: ds 1 ; c610
|
||||
wc611:: ds 2 ; c611
|
||||
|
||||
; unused ?
|
||||
ds $4
|
||||
|
||||
wc617:: ds 1 ; c617
|
||||
wc618:: ds 1 ; c618
|
||||
wc619:: ds 1 ; c619
|
||||
wc61a:: ds 1 ; c61a
|
||||
wc61b:: ds 1 ; c61b
|
||||
wc61c:: ds 2 ; c61c
|
||||
wc61e:: ds 2 ; c61e
|
||||
wc620:: ds 2 ; c620
|
||||
wc622:: ds 1 ; c622
|
||||
wc623:: ds 1 ; c623
|
||||
wc624:: ds 2 ; c624
|
||||
wc626:: ds 2 ; c626
|
||||
wc628:: ds 1 ; c628
|
||||
wc629:: ds 2 ; c629
|
||||
wc62b:: ds 1 ; c62b
|
||||
wc62c:: ds 3 ; c62c
|
||||
wc62f:: ds 2 ; c62f
|
||||
wc631:: ds 1 ; c631
|
||||
|
||||
; channel 2
|
||||
wc632:: ds 1 ; c632
|
||||
wc633:: ds 1 ; c633
|
||||
ds 1 ; c634
|
||||
wc635:: ds 1 ; c635
|
||||
wc636:: ds 1 ; c636
|
||||
wc637:: ds 1 ; c637
|
||||
wc638:: ds 1 ; c638
|
||||
wChannel2Pointer:: ds 2 ; c639
|
||||
wc63b:: ds 1 ; c63b
|
||||
wc63c:: ds 1 ; c63c
|
||||
wc63d:: ds 1 ; c63d
|
||||
wc63e:: ds 1 ; c63e
|
||||
wc63f:: ds 1 ; c63f
|
||||
wc640:: ds 1 ; c640
|
||||
wc641:: ds 2 ; c641
|
||||
|
||||
; unused ?
|
||||
ds $4
|
||||
|
||||
wc647:: ds 1 ; c647
|
||||
wc648:: ds 1 ; c648
|
||||
wc649:: ds 1 ; c649
|
||||
wc64a:: ds 1 ; c64a
|
||||
wc64b:: ds 1 ; c64b
|
||||
wc64c:: ds 2 ; c64c
|
||||
wc64e:: ds 2 ; c64e
|
||||
wc650:: ds 2 ; c650
|
||||
wc652:: ds 1 ; c652
|
||||
wc653:: ds 1 ; c653
|
||||
wc654:: ds 2 ; c654
|
||||
wc656:: ds 2 ; c656
|
||||
wc658:: ds 1 ; c658
|
||||
wc659:: ds 2 ; c659
|
||||
wc65b:: ds 1 ; c65b
|
||||
wc65c:: ds 3 ; c65c
|
||||
wc65f:: ds 2 ; c65f
|
||||
wc661:: ds 1 ; c661
|
||||
|
||||
; channel 3
|
||||
wc662:: ds 1 ; c662
|
||||
wc663:: ds 1 ; c663
|
||||
wc664:: ds 1 ; c664
|
||||
wc665:: ds 1 ; c665
|
||||
wc666:: ds 1 ; c666
|
||||
wc667:: ds 1 ; c667
|
||||
wc668:: ds 1 ; c668
|
||||
wChannel3Pointer:: ds 2 ; c669
|
||||
wc66b:: ds 1 ; c66b
|
||||
wc66c:: ds 1 ; c66c
|
||||
wc66d:: ds 1 ; c66d
|
||||
wc66e:: ds 1 ; c66e
|
||||
wc66f:: ds 1 ; c66f
|
||||
wc670:: ds 1 ; c670
|
||||
wc671:: ds 2 ; c671
|
||||
|
||||
; unused ?
|
||||
ds $4
|
||||
|
||||
wc677:: ds 1 ; c677
|
||||
wc678:: ds 1 ; c678
|
||||
wc679:: ds 1 ; c679
|
||||
wc67a:: ds 1 ; c67a
|
||||
wc67b:: ds 1 ; c67b
|
||||
wc67c:: ds 2 ; c67c
|
||||
wc67e:: ds 2 ; c67e
|
||||
wc680:: ds 2 ; c680
|
||||
wc682:: ds 1 ; c682
|
||||
wc683:: ds 1 ; c683
|
||||
wc684:: ds 2 ; c684
|
||||
wc686:: ds 2 ; c686
|
||||
wc688:: ds 1 ; c688
|
||||
wc689:: ds 2 ; c689
|
||||
wc68b:: ds 1 ; c68b
|
||||
wc68c:: ds 3 ; c68c
|
||||
wc68f:: ds 2 ; c68f
|
||||
wc691:: ds 1 ; c691
|
||||
|
||||
; channel 4
|
||||
wc692:: ds 1 ; c692
|
||||
wc693:: ds 1 ; c693
|
||||
ds 1 ; c694
|
||||
wc695:: ds 1 ; c695
|
||||
wc696:: ds 1 ; c696
|
||||
wc697:: ds 1 ; c697
|
||||
wc698:: ds 1 ; c698
|
||||
wChannel4Pointer:: ds 2 ; c699
|
||||
wc69b:: ds 1 ; c69b
|
||||
wc69c:: ds 1 ; c69c
|
||||
wc69d:: ds 1 ; c69d
|
||||
wc69e:: ds 1 ; c69e
|
||||
wc69f:: ds 1 ; c69f
|
||||
wc6a0:: ds 1 ; c6a0
|
||||
wc6a1:: ds 2 ; c6a1
|
||||
|
||||
; unused ?
|
||||
ds $4
|
||||
|
||||
wc6a7:: ds 1 ; c6a7
|
||||
wc6a8:: ds 1 ; c6a8
|
||||
wc6a9:: ds 1 ; c6a9
|
||||
wc6aa:: ds 1 ; c6aa
|
||||
wc6ab:: ds 1 ; c6ab
|
||||
wc6ac:: ds 2 ; c6ac
|
||||
wc6ae:: ds 2 ; c6ae
|
||||
wc6b0:: ds 2 ; c6b0
|
||||
wc6b2:: ds 1 ; c6b2
|
||||
wc6b3:: ds 1 ; c6b3
|
||||
wc6b4:: ds 2 ; c6b4
|
||||
wc6b6:: ds 2 ; c6b6
|
||||
wc6b8:: ds 1 ; c6b8
|
||||
wc6b9:: ds 2 ; c6b9
|
||||
wc6bb:: ds 1 ; c6bb
|
||||
wc6bc:: ds 3 ; c6bc
|
||||
wc6bf:: ds 2 ; c6bf
|
||||
wc6c1:: ds 1 ; c6c1
|
||||
|
||||
; channel trampolines
|
||||
wc6c2:: ds 1 ; c6c2
|
||||
wc6c3:: ds 2 ; c6c3
|
||||
wc6c5:: ds 1 ; c6c5
|
||||
wc6c6:: ds 2 ; c6c6
|
||||
wc6c8:: ds 1 ; c6c8
|
||||
wc6c9:: ds 2 ; c6c9
|
||||
wc6cb:: ds 1 ; c6cb
|
||||
wc6cc:: ds 2 ; c6cc
|
||||
|
||||
wc6ce:: ds 1 ; c6ce
|
||||
|
||||
wAudioEnd:: ; c6cf
|
||||
Reference in New Issue
Block a user