Files
pokepinball/main.asm
T
2015-09-08 18:22:27 -07:00

46777 lines
798 KiB
NASM
Executable File

INCLUDE "charmap.asm"
INCLUDE "macros.asm"
INCLUDE "constants.asm"
SECTION "rst 00", ROM0 [$00]
di
jp Entry
SECTION "rst 10", ROM0 [$10]
jp Func_468
SECTION "rst 18", ROM0 [$18]
jp JumpToFuncInTable
SECTION "rst 20", ROM0 [$20]
jp Func_486
SECTION "rst 40", ROM0 [$40]
jp Func_2f2
SECTION "rst 48", ROM0 [$48]
jp Func_3ec
SECTION "rst 50", ROM0 [$50]
jp Func_418
SECTION "rst 58", ROM0 [$58]
jp Func_445
SECTION "rst 60", ROM0 [$60]
jp Func_467
SECTION "Entry", ROM0 [$100]
Entry: ; 0x100
nop
jp Start
SECTION "Header", ROM0 [$104]
; The header is generated by rgbfix.
; The space here is allocated to prevent code from being overwritten.
ds $150 - $104
SECTION "Main", ROM0
Start: ; 0x150
ld [hGameBoyColorFlag], a
ld sp, hGameBoyColorFlag
di
xor a
ld [$ff0f], a
ld a, [$ff40] ; LCD Control
bit 7, a ; Check if LCD Display is enabled
jr nz, .LCDDisplayEnabled
set 7, a
ld [$ff40], a
.LCDDisplayEnabled
ld bc, $0002
call Func_948
.waitForVBlank
ld a, [$ff44] ; LY register (LCDC Y-Coordinate)
cp 145 ; > 144 means V-Blank
jr c, .waitForVBlank
ld a, $81
ld [$ff40], a ; Enable LCD Display
xor a
ld [$ff47], a ; Clear Palette Data
ld [$ff48], a
ld [$ff49], a
ld bc, $0002
call Func_948
.waitForVBlank2
ld a, [$ff44] ; LY register (LCDC Y-Coordinate)
cp 145 ; > 144 means V-Blank
jr c, .waitForVBlank2
xor a
ld [$ff40], a ; Disable LCD Display
ld hl, wc000
ld bc, $2000
call ClearData ; Clear WRAM Bank 0
ld hl, vTiles0
ld bc, $1000
call ClearData ; Clear First half of VRAM
ld a, $a
ld [$0000], a ; Enable RAM
ld a, $1
ld [$2000], a ; Load ROM Bank $1
ld a, $0
ld [$6000], a ; Enable ROM Banking Mode
ld a, $0
ld [$4000], a ; Set bits 5 and 6 of ROM Bank Number
ld a, $1
ld [hLoadedROMBank], a
ld a, $1
ld [$6000], a ; Enable RAM Banking Mode
ld a, $0
ld [$4000], a ; Load RAM Bank $0
ld sp, $dfff ; Initialize stack pointer to the end of WRAM Bank $1
ld hl, $ff80
ld bc, $007e
call ClearData ; Clear High RAM (HRAM)
call WriteDMACodeToHRAM
call ClearOAMBuffer
xor a
ld [$d7fb], a
ld [$d7fc], a
ld [$d7fd], a
ld [$ffb0], a
ld [$ffb1], a
ld [$d8e1], a
ld [$d7fe], a
ld [$fffc], a
ld hl, $ff9e
xor a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld a, $8f
ld [hli], a
ld a, $a6
ld [hli], a
ld a, $0
ld [$d849], a
ld [$d84a], a
ld a, $f
call SetSongBank
call Func_23b
ld a, [hGameBoyColorFlag]
and a
jr nz, .asm_222
call Func_12f8
rl a
and $1
ld [$fffb], a
call Func_13a8
ld a, [$fffb]
and a
jr z, .asm_222
ld a, $1
ld [$d917], a
.asm_222
ld a, $1
ld [$ffff], a ; Only enable LCD Status interrupt
ei
ld a, $ff
ld [$d810], a
call Func_97a
xor a
ld [$daa3], a
ld a, Bank(Func_1ffc)
ld hl, Func_1ffc
call BankSwitchSimple
Func_23b: ; 0x23b
ld a, [hGameBoyColorFlag]
cp $11
jr nz, .asm_248
ld a, $1
ld [hGameBoyColorFlag], a
ld [$fffd], a
ret
.asm_248
xor a
ld [hGameBoyColorFlag], a
ld [$fffd], a
ret
INCBIN "baserom.gbc",$24e,$2f2 - $24e
Func_2f2: ; 0x2f2
push af
push bc
push de
push hl
call $ff80 ; OAM DMA transfer
ld a, [$ff9e]
ld [$ff40], a
call Func_113a
ei
ld a, [$ff44]
cp $90
jr c, .asm_328
ld hl, $ff9f
ld c, $41
ld a, [hli]
ld [$ff00+c], a
inc c
ld a, [hli]
ld [$ff00+c], a
inc c
ld a, [hli]
ld [$ff00+c], a
inc c
inc c
ld a, [hli]
ld [$ff00+c], a
inc c
inc c
ld a, [hli]
ld [$ff00+c], a
inc c
ld a, [hli]
ld [$ff00+c], a
inc c
ld a, [hli]
ld [$ff00+c], a
inc c
ld a, [hli]
ld [$ff00+c], a
inc c
ld a, [hli]
ld [$ff00+c], a
.asm_328
ld a, [$ffa2]
ld [$ffa8], a
ld a, [$ffa9]
ld [$ffaa], a
ld a, [$ffab]
ld [$ffac], a
ld a, [$ffad]
ld [$ffae], a
call ReadJoypad
ld a, [$daa3]
and a
jr nz, .asm_359
ld a, [hJoypadState]
cp $f
jr nz, .asm_359
ld a, [hNewlyPressedButtons]
and $f
jr z, .asm_359
ld hl, [sp+$8]
ld [hl], $c3
inc hl
ld [hl], $3
ld a, $1
ld [$daa3], a
.asm_359
ld hl, $ffb2
ld a, [hl]
inc [hl]
and a
jr nz, .asm_365
ld hl, $ffb3
inc [hl]
.asm_365
ld hl, $ffb4
inc [hl]
ld a, [$d8e1]
and a
call nz, Func_167b
ld a, [$d849]
and a
jr nz, .asm_37d
ld a, [$d85d]
and a
call nz, Func_504
.asm_37d
ld a, [$d84a]
and a
jr z, .asm_39d
xor a
ld [$d84a], a
ld a, $1
ld [$d849], a
ld a, $bc
ld [$ff06], a
ld a, $0
ld [$ff07], a
ld hl, $ffff
set 2, [hl]
ld a, $4
ld [$ff07], a
.asm_39d
ld hl, $4000
ld a, [$d917]
and a
jr nz, .asm_3b5
ld a, [$d803]
rrca
ld [$d803], a
and $1
jr z, .asm_3b5
set 3, [hl]
jr .asm_3b7
.asm_3b5
res 3, [hl]
.asm_3b7
ld a, [$d4aa]
and a
call nz, Func_e69
pop hl
pop de
pop bc
pop af
reti
INCBIN "baserom.gbc",$3c3,$3ec - $3c3
Func_3ec: ; 0x3ec
push af
push bc
push de
push hl
ld a, [$ffb0]
sla a
ld c, a
ld b, $0
ld hl, PointerTable_408
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
jp [hl]
Func_3ff: ; 0x3ff
ld a, $1
ld [$ffb5], a
pop hl
pop de
pop bc
pop af
reti
PointerTable_408: ; 0x408
dw Func_fbc
dw Func_fbf
dw Func_fea
dw Func_105d
dw Func_109e
dw Func_10a1
dw Func_10a4
dw Func_10a7
Func_418: ; 0x418
ei
push af
push bc
push de
push hl
ld a, [$d849]
and a
jr z, .asm_42a
ld a, [$d85d]
and a
call nz, Func_504
.asm_42a
ld a, [$d84a]
and a
jr z, .asm_440
xor a
ld [$d84a], a
ld [$d849], a
ld a, $0
ld [$ff07], a
ld hl, $ffff
res 2, [hl]
.asm_440
pop hl
pop de
pop bc
pop af
reti
Func_445: ; 0x445
push af
push bc
push de
push hl
ld hl, $045d ; todo
push hl
ld a, [$ffb1]
sla a
ld c, a
ld b, $0
ld hl, $0462 ; todo
add hl, bc
ld c, [hl]
inc hl
ld b, [hl]
push bc
ret
INCBIN "baserom.gbc",$45d,$467 - $45d
Func_467: ; 0x467
reti
Func_468: ; 0x468
ld a, [$ff40]
bit 7, a
ret z
ld hl, $ffb2
xor a
ld [hl], a
.asm_472
ld a, [hl]
and a
jr z, .asm_472
ret
JumpToFuncInTable: ; 0x477
; Jumps to a function in the pointer table immediately following
; a "rst $18" call. Function must be in the same Bank as the pointer table.
; input: a = index of function in table
sla a
pop hl
push de
ld e, a
ld d, $0
add hl, de
ld e, [hl]
inc hl
ld d, [hl]
ld l, e
ld h, d
pop de
jp [hl]
Func_486: ; 0x486
rlca
add l
ld l, a
jr nc, .noCarry
inc h
.noCarry
ld a, [hli]
ld h, [hl]
ld l, a
ret
Func_490: ; 0x490
ld a, [hLoadedROMBank]
push af
ld a, [wCurrentSongBank]
ld [hLoadedROMBank], a
ld [$2000], a
ld a, e
ld [$d7bf], a
ld a, [wCurrentSongBank]
ld [$d7c0], a
call $4090 ; todo
pop af
ld [hLoadedROMBank], a
ld [$2000], a
ret
PlaySoundEffect: ; 0x4af
; input: de = sound effect id? I think d specifies something special and e holds the id
ld a, [$dead]
and a
ret nz
ld a, [$d800]
and a
jr z, .asm_4bd
ld a, d
and a
ret z
.asm_4bd
ld a, d
ld [$d800], a
ld d, $0
ld a, [hLoadedROMBank]
push af
ld a, [wCurrentSongBank]
ld [hLoadedROMBank], a
ld [$2000], a
call $40c0 ; todo
pop af
ld [hLoadedROMBank], a
ld [$2000], a
ret
Func_4d8: ; 0x4d8
push bc
push de
push hl
ld a, [$ddcb]
ld hl, $ddfd
or [hl]
ld hl, $de2f
or [hl]
and $1
call z, PlaySoundEffect
pop hl
pop de
pop bc
ret
Func_4ef: ; 0x4ef
ld a, [hLoadedROMBank]
push af
ld a, [wCurrentSongBank]
ld [hLoadedROMBank], a
ld [$2000], a
call $40f0 ; todo
pop af
ld [hLoadedROMBank], a
ld [$2000], a
ret
Func_504: ; 0x504
ld a, [hLoadedROMBank]
push af
ld a, [wCurrentSongBank]
ld [hLoadedROMBank], a
ld [$2000], a
call $4180 ; todo
pop af
ld [hLoadedROMBank], a
ld [$2000], a
ld a, [$d801]
inc a
ld [$d801], a
and $3
ret nz
ld a, [$d800]
and a
ret z
dec a
ld [$d800], a
ret
SetSongBank: ; 0x52c
di
ld [wCurrentSongBank], a
ei
ret
CallInFollowingTable: ; 0x532
; Calls a function in a table located immediately after a call to this function.
; Inputs: a = entry in the table
ld e, a
ld d, $0
sla e
rl d
sla e
rl d ; multiplied a by 4 because entries in the table are 4 bytes each
pop hl
add hl, de
ld e, [hl]
inc hl
ld d, [hl]
inc hl
ld a, [hl]
ld h, d
ld l, e
jp BankSwitch
BankSwitchSimple: ; 0x549
; Switches to Bank in register a and jumps to hl.
ld [hLoadedROMBank], a
ld [$2000], a ; Load Bank
jp [hl]
BankSwitch: ; 0x54f
ld e, a
ld a, [hLoadedROMBank] ; currently-loaded Bank
cp e
jr z, .doJump
push af
ld a, e
call .loadNewBank
call .doJump
pop de
ld a, d
.loadNewBank
push hl
push de
ld hl, $ffff
ld d, [hl]
ld [hl], $0
ld [$2000], a
ld [hLoadedROMBank], a
ld [hl], d
pop de
pop hl
ret
.doJump
ld a, [$ff8b]
ld e, a
ld a, [$ff8a]
jp [hl]
Func_576: ; 0x576
ld a, [$ff40]
bit 7, a
ret z
ld a, [$ff9e]
res 7, a
ld [$ff9e], a
.asm_581
ld a, [$ff40]
bit 7, a
jr nz, .asm_581
ret
Func_588: ; 0x588
ld a, [$ffc4]
and a
call nz, Func_597
ld a, [$ff9e]
set 7, a
ld [$ff40], a
ld [$ff9e], a
ret
Func_597: ; 0x597
ld de, $ff68
ld a, $80
ld [de], a
inc de
ld b, $8
.asm_5a0
ld a, [$d80c]
call Func_5c2
dec b
jr nz, .asm_5a0
ld de, $ff6a
ld a, $80
ld [de], a
inc de
ld b, $4
.asm_5b2
ld a, [$d80d]
call Func_5c2
ld a, [$d80e]
call Func_5c2
dec b
jr nz, .asm_5b2
ret
Func_5c2: ; 0x5c2
push bc
ld b, $4
.asm_5c5
push af
push bc
and $3
sla a
ld c, a
ld b, $0
ld hl, $05e1
add hl, bc
ld a, [hli]
ld [de], a
ld a, [hli]
ld [de], a
pop bc
pop af
srl a
srl a
dec b
jr nz, .asm_5c5
pop bc
ret
INCBIN "baserom.gbc",$5e1,$5f7 - $5e1
WriteDMACodeToHRAM: ; 0x5f7
; Initializes registers $ff80 - $ff8a
ld c, $80
ld b, $a ; number of bytes to load
ld hl, DMARoutine
.loop
ld a, [hli]
ld [$ff00+c], a ; add register c to $ff00, and store register a into the resulting address
inc c
dec b
jr nz, .loop
ret
DMARoutine:
; This routine is initially loaded into $ff80 - $ff8a by WriteDMACodeToHRAM.
ld a, (wOAMBuffer >> 8)
ld [$ff00+$46], a ; start DMA
ld a, $28
.waitLoop ; wait for DMA to finish
dec a
jr nz, .waitLoop
ret
WaitForLCD: ; 0x60f
; Wait for LCD controller to stop reading from both OAM and VRAM because
; CPU can't access OAM, VRAM, or palette data ($ff69, $ff6b) during this time.
ld a, [$ff41] ; LCDC Status register
and $3
jr nz, WaitForLCD
ld a, $a
.delay10Cycles
dec a
jr nz, .delay10Cycles
ret
Func_61b: ; 0x61b
ld a, [$ff44] ; LY register (LCDC Y-Coordinate)
cp $40
jr c, .asm_625
cp $80
jr c, .asm_63d
.asm_625
ld a, [$ff44] ; LY register (LCDC Y-Coordinate)
cp $40
jr c, .asm_625
cp $80
jr nc, .asm_625
.asm_62f
ld a, [$ff41]
and $3
jr nz, .asm_62f ; wait for lcd controller to finish transferring data
ld a, $15
.wait
dec a
jr nz, .wait
nop
nop
nop
.asm_63d
ret
Func_63e: ; 0xc3e
dec bc
.asm_63f
ld [hli], a
dec bc
bit 7, b
jr z, .asm_63f
ret
INCBIN "baserom.gbc",$646,$654 - $646
ClearData: ; 0x654
; Clears bc bytes starting at hl.
; bc can be a maximum of $7fff, since it checks bit 7 of b when looping.
xor a
dec bc
.clearLoop
ld [hli], a
dec bc
bit 7, b
jr z, .clearLoop
ret
Func_65d: ; 0x65d
ld a, [hli]
ld [de], a
inc de
dec bc
ld a, c
or b
jr nz, Func_65d
ret
Func_666: ; 0x666
bit 7, h
jr nz, .asm_679
ld [$fffa], a
ld a, [hLoadedROMBank]
push af
ld a, [$fffa]
ld [hLoadedROMBank], a
ld [$2000], a
scf
jr .asm_67d
.asm_679
ld [$4000], a
and a
.asm_67d
push af
.asm_67e
ld a, [hli]
ld [de], a
inc de
dec bc
ld a, c
or b
jr nz, .asm_67e
pop af
ret nc
pop af
ld [hLoadedROMBank], a
ld [$2000], a
ret
Func_68f: ; 0x68f
push de
ld d, a
ld a, [hLoadedROMBank]
ld e, a
ld a, d
ld [hLoadedROMBank], a
ld [$2000], a
ld d, [hl]
ld a, e
ld [hLoadedROMBank], a
ld [$2000], a
ld a, d
pop de
ret
LoadVideoData: ; 0x6a4
; Input:
; hl = address of pointer table
; a = index of item to load in pointer table
; This needs more documentation. It loads things like graphics and palettes.
sla a
ld c, a
ld b, $0
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
.loadItem
ld a, [hli]
ld c, a
and [hl]
cp $ff ; two consecutive $ff bytes terminate the array
ret z
ld a, [hli]
ld b, a ; bc contains pointer to data to be loaded
push hl
push bc
ld a, [hli] ; a contains bank of data to be loaded
ld e, [hl]
inc hl
ld d, [hl] ; de contains destination address for data
inc hl
ld c, [hl]
inc hl
ld b, [hl] ; bc contains last word of data struct
inc hl ; this is a wasted instruction
pop hl
call Func_6cb
pop hl
ld bc, $0005
add hl, bc
jr .loadItem
Func_6cb: ; 0x6cb
srl b
rr c
jp c, Func_6fd ; if lowest bit of bc is set
jp Func_6d5 ; This jumps to the next instruction... Strange.
Func_6d5: ; 0x6d5
ld [$fffa], a ; save bank of data to be loaded
ld a, [hLoadedROMBank]
push af
ld a, [$fffa] ; a contains bank of data to be loaded
ld [hLoadedROMBank], a
ld [$2000], a ; switch bank to the bank of data to be loaded
srl b
rr c
rl a
and $1 ; checks bit 1 of the last word in the data struct
ld [$ff4f], a ; set VRAM Bank
.copyByte
ld a, [hli]
ld [de], a
inc de
dec bc
ld a, c
or b ; does bc = 0?
jr nz, .copyByte
xor a
ld [$ff4f], a ; set VRAM Bank to Bank 0
pop af
ld [hLoadedROMBank], a
ld [$2000], a ; reload the previous ROM Bank
ret
Func_6fd: ; 0x6fd
ld [$fffa], a ; save bank of data to be loaded
ld a, [hLoadedROMBank]
push af
ld a, [$fffa] ; a contains bank of data to be loaded
ld [hLoadedROMBank], a
ld [$2000], a ; switch bank to the bank of data to be loaded
ld a, e
bit 6, a
jr nz, .asm_717
ld de, $ff68
call Func_724
jr z, .asm_71d
xor a
.asm_717
ld de, $ff6a
call Func_724
.asm_71d
pop af
ld [hLoadedROMBank], a
ld [$2000], a
ret
Func_724: ; 0x724
res 6, a
ld b, a
set 7, a
ld [de], a
inc de
.copyByte
ld a, [hli]
ld [de], a
inc b
dec c
ret z
bit 6, b
jr z, .copyByte
ret
Func_735: ; 0x735
push hl
ld hl, $ff40
bit 7, [hl]
pop hl
jp z, Func_666
; fall through
LoadVRAMData: ; 0x73f
; This loads some data into VRAM. It waits for the LCD H-Blank to copy the data 4 bytes at a time.
; input: hl = source of data
; a = bank of data to load
; de = destination of data
; bc = number of bytes to copy
bit 7, h
jr nz, .asm_752
ld [$fffa], a
ld a, [hLoadedROMBank]
push af
ld a, [$fffa]
ld [hLoadedROMBank], a
ld [$2000], a
scf
jr .asm_756
.asm_752
ld [$4000], a
and a
.asm_756
push af
call WaitForLCD
.loop
call Func_61b
.waitForHBlank
ld a, [$ff41]
and $3
jr nz, .waitForHBlank
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
inc de
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
dec bc
dec bc
dec bc
dec bc
nop
nop
nop
nop
ld a, b
or c
jr nz, .loop
pop af
ret nc
pop af
ld [hLoadedROMBank], a
ld [$2000], a
ret
Func_790: ; 0x790
push hl
ld hl, $ff40
bit 7, [hl]
pop hl
jp nz, Func_7dc
bit 7, h
jr nz, .asm_7ad
ld [$fffa], a
ld a, [hLoadedROMBank]
push af
ld a, [$fffa]
ld [hLoadedROMBank], a
ld [$2000], a
scf
jr .asm_7b1
.asm_7ad
ld [$4000], a
and a
.asm_7b1
push af
ld a, e
bit 6, e
ld de, $ff68
jr z, .asm_7bf
res 6, a
ld de, $ff6a
.asm_7bf
set 7, a
ld [de], a
inc de
.asm_7c3
ld a, [hli]
ld [de], a
ld a, [hli]
ld [de], a
ld a, [hli]
ld [de], a
ld a, [hli]
ld [de], a
dec bc
dec bc
dec bc
dec bc
ld a, b
or c
jr nz, .asm_7c3
pop af
ret nc
pop af
ld [hLoadedROMBank], a
ld [$2000], a
ret
Func_7dc: ; 0x7dc
bit 7, h
jr nz, .asm_7ef
ld [$fffa], a
ld a, [hLoadedROMBank]
push af
ld a, [$fffa]
ld [hLoadedROMBank], a
ld [$2000], a
scf
jr .asm_7f3
.asm_7ef
ld [$4000], a
and a
.asm_7f3
push af
ld a, e
bit 6, e
ld de, $ff68
jr z, .asm_801
res 6, a
ld de, $ff6a
.asm_801
push hl
ld h, d
ld l, e
set 7, a
call PutTileInVRAM
inc de
pop hl
call WaitForLCD
.asm_80e
call Func_61b
.asm_811
ld a, [$ff41]
and $3
jr nz, .asm_811
ld a, [hli]
ld [de], a
ld a, [hli]
ld [de], a
ld a, [hli]
ld [de], a
ld a, [hli]
ld [de], a
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
dec bc
dec bc
dec bc
dec bc
nop
nop
nop
nop
ld a, b
or c
jr nz, .asm_80e
pop af
ret nc
pop af
ld [hLoadedROMBank], a
ld [$2000], a
ret
PutTileInVRAM: ; 0x848
; Puts a tile in VRAM.
; input: a = tile number
; hl = pointer to VRAM location where tile should be placed
push af
call WaitForLCD
call Func_61b
.asm_84f
ld a, [$ff41]
and $3
jr nz, .asm_84f ; wait for lcd controller to finish transferring data
pop af
ld [hl], a ; Store tile number in VRAM background map
ret
Func_858: ; 0x858
push af
call WaitForLCD
call Func_61b
.asm_85f
ld a, [$ff41]
and $3
jr nz, .asm_85f
ld a, $1
ld [$ff4f], a
pop af
ld [hl], a
xor a
ld [$ff4f], a
ret
Func_86f: ; 0x86f
ld [$fffa], a
ld a, [hLoadedROMBank]
push af
ld a, [$fffa]
ld [hLoadedROMBank], a
ld [$2000], a
ld a, [$ff40]
bit 7, a
jr nz, .asm_8ac
ld a, $1
ld [$ff4f], a
ld b, $4
.asm_887
push bc
ld a, [de]
ld [hli], a
inc de
ld a, [de]
ld [hli], a
inc de
ld a, [de]
ld [hli], a
inc de
ld a, [de]
ld [hli], a
inc de
ld a, [de]
ld [hli], a
inc de
ld a, [de]
ld [hli], a
inc de
ld bc, $001a
add hl, bc
pop bc
dec b
jr nz, .asm_887
xor a
ld [$ff4f], a
pop af
ld [hLoadedROMBank], a
ld [$2000], a
ret
.asm_8ac
ld b, $4
.asm_8ae
push bc
ld a, [de]
call Func_858
inc hl
inc de
ld a, [de]
call Func_858
inc hl
inc de
ld a, [de]
call Func_858
inc hl
inc de
ld a, [de]
call Func_858
inc hl
inc de
ld a, [de]
call Func_858
inc hl
inc de
ld a, [de]
call Func_858
inc de
ld bc, $001b
add hl, bc
pop bc
dec b
jr nz, .asm_8ae
pop af
ld [hLoadedROMBank], a
ld [$2000], a
ret
Func_8e1: ; 0x8e1
ld [$fffa], a
ld a, [hLoadedROMBank]
push af
ld a, [$fffa]
ld [hLoadedROMBank], a
ld [$2000], a
ld a, [$ff40]
bit 7, a
jr nz, .asm_902
ld a, c
ld [hli], a
.asm_8f5
ld a, [de]
ld [hl], a
inc de
dec b
jr nz, .asm_8f5
pop af
ld [hLoadedROMBank], a
ld [$2000], a
ret
.asm_902
ld a, c
call PutTileInVRAM
inc hl
.asm_907
ld a, [de]
call PutTileInVRAM
inc de
dec b
jr nz, .asm_907
pop af
ld [hLoadedROMBank], a
ld [$2000], a
ret
ClearOAMBuffer: ; 0x916
; Clears the OAM buffer by loading $f0 into all of the entries.
ld hl, wOAMBuffer ; 0xd000
ld b, 4 * 40 ; wOAMBuffer is 4 * 40 bytes long (40 OAM entries, 4 bytes each)
ld a, $f0 ; byte to write
.loop
ld [hli], a
dec b
jr nz, .loop
xor a
ld [$d802], a
ret
Func_926: ; 0x926
ld a, [$d802]
cp $a0
jr nc, .asm_93a
ld l, a
ld h, $d0
cpl
add $a1
ld b, a
ld a, $f0
.asm_936
ld [hli], a
dec b
jr nz, .asm_936
.asm_93a
xor a
ld [$d802], a
ret
Func_93f: ; 0x93f
push bc
rst $10
pop bc
dec bc
ld a, c
or b
jr nz, Func_93f
ret
Func_948: ; 0x948
ld de, $06d6
.asm_94b
nop
nop
nop
dec de
ld a, d
or e
jr nz, .asm_94b
dec bc
ld a, b
or c
jr nz, Func_948
ret
GenRandom: ; 0x959
push bc
push de
push hl
ld a, [$d811]
ld c, a
ld b, $0
inc a
cp $37
jr nz, .asm_96e
call Func_9fa
xor a
ld bc, $0000
.asm_96e
ld [$d811], a
ld hl, $d812
add hl, bc
ld a, [hl]
pop hl
pop de
pop bc
ret
Func_97a: ; 0x97a
ld a, [$d810]
ld d, a
ld a, $0
ld a, [$afff]
.asm_983
cp d
jr c, .asm_989
sub d
jr .asm_983
.asm_989
ld [$d80f], a
ld [$d848], a
ld e, $1
ld hl, $09c4 ; todo
ld a, $36
.asm_996
push af
ld c, [hl]
inc hl
ld b, $0
push hl
ld hl, $d812
add hl, bc
ld [hl], e
ld a, [$d80f]
sub e
jr nc, .asm_9a8
add d
.asm_9a8
ld e, a
ld a, [hl]
ld [$d80f], a
pop hl
pop af
dec a
jr nz, .asm_996
call Func_9fa
call Func_9fa
call Func_9fa
ld a, $0
call GenRandom
ld [$afff], a
ret
INCBIN "baserom.gbc",$9c4,$9fa - $9c4
Func_9fa: ; 0x9fa
ld a, [$d810]
ld d, a
ld bc, $d812
ld hl, $d831
ld e, $18
.asm_a06
ld a, [bc]
sub [hl]
jr nc, .asm_a0b
add d
.asm_a0b
ld [bc], a
dec e
jr nz, .asm_a06
ld bc, $d82a
ld hl, $d812
ld e, $1f
.asm_a17
ld a, [bc]
sub [hl]
jr nc, .asm_a1c
add d
.asm_a1c
ld [bc], a
dec e
jr nz, .asm_a17
ret
Func_a21: ; 0xa21
push bc
push hl
ld c, a
ld b, $0
ld hl, $0a38
add hl, bc
ld l, [hl]
call GenRandom
call Func_dd4
inc h
srl h
ld a, h
pop hl
pop bc
ret
INCBIN "baserom.gbc",$a38,$ab8 - $a38
ReadJoypad: ; 0xab8
; Reads the current state of the joypad and saves the state into
; some registers the game uses during gameplay. It remembers the joypad state
; from the current frame, previous frame, and two frames ago.
ld a, $20
ld [$ff00], a
ld a, [$ff00]
ld a, [$ff00]
and $f
swap a
ld b, a
ld a, $30
ld [$ff00], a
ld a, $10
ld [$ff00], a
ld a, [$ff00]
ld a, [$ff00]
ld a, [$ff00]
ld a, [$ff00]
ld a, [$ff00]
ld a, [$ff00]
and $f
or b
cpl ; a contains currently-pressed buttons
ld [hJoypadState], a
ld a, $30
ld [$ff00], a
ld a, [hJoypadState]
ld hl, hPreviousJoypadState
xor [hl] ; a contains buttons that are different from previous frame
push af
ld hl, hJoypadState
and [hl] ; a contains newly-pressed buttons compared to last frame
ld [hNewlyPressedButtons], a
ld [hPressedButtons], a
pop af
ld hl, hPreviousJoypadState
and [hl] ; a contains newly-pressed buttons compared to two frames ago
ld [hPrevPreviousJoypadState], a
ld a, [hJoypadState]
and a
jr z, .asm_b15
ld hl, hPreviousJoypadState
cp [hl]
jr nz, .asm_b15
; button(s) is pressed, and they're identical to the buttons pressed last frame.
; this code is related to holding down a button for an extended period of time.
ld hl, $ff9d
dec [hl]
jr nz, .asm_b1a
ld a, [hJoypadState]
ld [hPressedButtons], a
ld a, [$d807]
ld [$ff9d], a
jr .asm_b1a
.asm_b15
ld a, [$d806]
ld [$ff9d], a
.asm_b1a
ld a, [hJoypadState]
ld [hPreviousJoypadState], a
ld hl, $d808
ld a, [hJoypadState]
or [hl]
ld [hli], a
ld a, [hNewlyPressedButtons]
or [hl]
ld [hli], a
ld a, [hPressedButtons]
or [hl]
ld [hli], a
ret
Func_b2e: ; 0xb2e
ld hl, $d808
xor a
ld [hli], a
ld [hli], a
ld [hl], a
ret
IsKeyPressed2: ; 0xb36
ld a, [hJoypadState]
and [hl]
jr z, .asm_b3e
cp [hl]
jr z, .asm_b48
.asm_b3e
inc hl
ld a, [hJoypadState]
and [hl]
ret z
cp [hl]
jr z, .asm_b48
xor a
ret
.asm_b48
ld a, $1
and a
ret
IsKeyPressed: ; 0xb4c
; Checks if a key for the specified key config is pressed.
; input: hl = pointer to key config byte pair (e.g. wKeyConfigLeftFlipper)
; output: zero flag is set if a corresponding key is pressed
; zero flag is reset if no corresponding key is pressed
ld a, [hJoypadState]
and [hl]
jr z, .asm_b58
cp [hl]
jr nz, .asm_b58
ld a, [hNewlyPressedButtons]
and [hl]
ret nz
.asm_b58
inc hl
ld a, [hJoypadState]
and [hl]
ret z
cp [hl]
jr nz, .asm_b64
ld a, [hNewlyPressedButtons]
and [hl]
ret
.asm_b64
xor a
ret
Func_b66: ; 0xb66
ld a, [hGameBoyColorFlag]
and a
jr nz, .asm_b73
xor a
ld [$ffa3], a
ld [$ffa4], a
ld [$ffa5], a
ret
.asm_b73
ld de, $ff68
ld hl, $d200 ; todo
ld b, $0
ld c, $20
.asm_b7d
ld a, b
ld [$ff68], a
inc b
ld a, [$ff69]
ld [hli], a
ld a, b
ld [$ff68], a
inc b
ld a, [$ff69]
ld [hli], a
dec c
jr nz, .asm_b7d
ld b, $0
ld c, $20
.asm_b92
ld a, b
ld [$ff6a], a
inc b
ld a, [$ff6b]
ld [hli], a
ld a, b
ld [$ff6a], a
inc b
ld a, [$ff6b]
ld [hli], a
dec c
jr nz, .asm_b92
ld de, $ff68
ld b, $2
.asm_ba8
ld a, $80
ld [de], a
inc de
ld c, $20
.asm_bae
ld a, $ff
ld [de], a
ld [hli], a
ld a, $7f
ld [de], a
ld [hli], a
dec c
jr nz, .asm_bae
inc de
dec b
jr nz, .asm_ba8
ret
Func_bbe: ; 0xbbe
ld a, [hGameBoyColorFlag]
and a
jp nz, Func_c19
ld hl, $ffa3
ld de, $d80c
ld b, $3
.asm_bcc
ld a, [de]
and $55
ld c, a
ld a, [de]
and $aa
srl a
and c
ld [hli], a
inc de
dec b
jr nz, .asm_bcc
ld bc, $0002
call Func_93f
ld hl, $ffa3
ld de, $d80c
ld b, $3
.asm_be9
ld a, [de]
and $aa
srl a
add [hl]
ld [hli], a
inc de
dec b
jr nz, .asm_be9
ld bc, $0002
call Func_93f
ld hl, $ffa3
ld de, $d80c
ld b, $3
.asm_c02
ld a, [de]
and $55
ld c, a
ld a, [de]
and $aa
srl a
or c
add [hl]
ld [hli], a
inc de
dec b
jr nz, .asm_c02
ld bc, $0002
call Func_93f
ret
Func_c19: ; 0xc19
ld b, $10
.asm_c1b
push bc
ld de, $d200
ld hl, $d280
call Func_c2d
call Func_d61
pop bc
dec b
jr nz, .asm_c1b
ret
Func_c2d: ; 0xc2d
ld a, b
cp $1
jr z, .asm_c49
ld c, $40
.asm_c34
push bc
ld a, [hli]
sub $42
ld c, a
ld a, [hld]
sbc $8
ld b, a
call Func_c60
ld a, c
ld [hli], a
ld a, b
ld [hli], a
pop bc
dec c
jr nz, .asm_c34
ret
.asm_c49
ld c, $40
.asm_c4b
push bc
ld a, [hli]
sub $21
ld c, a
ld a, [hld]
sbc $4
ld b, a
call Func_c60
ld a, c
ld [hli], a
ld a, b
ld [hli], a
pop bc
dec c
jr nz, .asm_c4b
ret
Func_c60: ; 0xc60
push hl
ld a, [de]
and $1f
ld l, a
ld a, c
and $1f
cp l
jr nc, .asm_c70
ld a, c
and $e0
or l
ld c, a
.asm_c70
ld a, [de]
and $e0
ld l, a
inc de
ld a, [de]
srl a
rr l
srl a
rr l
ld a, c
and $e0
ld h, a
ld a, b
srl a
rr h
srl a
rr h
ld a, h
cp l
jr nc, .asm_ca3
ld h, $0
sla l
rl h
sla l
rl h
ld a, c
and $1f
or l
ld c, a
ld a, b
and $7c
or h
ld b, a
.asm_ca3
ld a, [de]
and $7c
ld l, a
ld a, b
and $7c
cp l
jr nc, .asm_cb2
ld a, b
and $3
or l
ld b, a
.asm_cb2
inc de
pop hl
ret
INCBIN "baserom.gbc",$cb5,$cb5 - $cb5
Func_cb5: ; 0xcb5
ld a, [hGameBoyColorFlag]
and a
jp nz, Func_cee
ld hl, $ffa3
ld b, $3
.asm_cc0
push bc
push hl
ld b, $3
.asm_cc4
ld a, [hl]
and $55
ld c, a
ld a, [hl]
and $aa
srl a
or c
cpl
inc a
add [hl]
ld [hli], a
dec b
jr nz, .asm_cc4
ld bc, $0002
call Func_93f
pop hl
pop bc
dec b
jr nz, .asm_cc0
xor a
ld hl, $ffa3
ld [hli], a
ld [hli], a
ld [hl], a
ld bc, $0002
call Func_93f
ret
Func_cee: ; 0xcee
ld hl, $d280
ld de, $ff68
call Func_d9d
ld hl, $d2c0
ld de, $ff6a
call Func_d9d
ld b, $10
.asm_d02
push bc
ld hl, $d280
call Func_d11
call Func_d61
pop bc
dec b
jr nz, .asm_d02
ret
Func_d11: ; 0xd11
ld b, $40
.asm_d13
ld a, [hl]
and $1f
add $2
ld e, a
cp $1f
jr c, .asm_d1f
ld e, $1f
.asm_d1f
ld a, [hl]
and $e0
or e
ld [hl], a
ld a, [hli]
and $e0
ld e, [hl]
dec hl
srl e
rr a
srl e
rr a
add $10
ld e, a
jr nc, .asm_d38
ld e, $f8
.asm_d38
ld d, $0
sla e
rl d
sla e
rl d
ld a, [hl]
and $1f
or e
ld [hli], a
ld a, [hl]
and $7c
or d
ld [hl], a
ld a, [hl]
and $7c
add $8
ld e, a
cp $7c
jr c, .asm_d58
ld e, $7c
.asm_d58
ld a, [hl]
and $3
or e
ld [hli], a
dec b
jr nz, .asm_d13
ret
Func_d61: ; 0d61
ld a, [$ffff]
res 0, a
ld [$ffff], a
ld hl, $d280
ld de, $ff68
ld a, $80
ld [de], a
inc de
.asm_d71
ld a, [$ff44]
cp $90
jr c, .asm_d71
ld b, $10
.asm_d79
ld a, [hli]
ld [de], a
ld a, [hli]
ld [de], a
ld a, [hli]
ld [de], a
ld a, [hli]
ld [de], a
dec b
jr nz, .asm_d79
inc de
ld a, $80
ld [de], a
inc de
ld b, $10
.asm_d8b
ld a, [hli]
ld [de], a
ld a, [hli]
ld [de], a
ld a, [hli]
ld [de], a
ld a, [hli]
ld [de], a
dec b
jr nz, .asm_d8b
ld a, [$ffff]
set 0, a
ld [$ffff], a
ret
Func_d9d: ; 0xd9d
ld b, $0
ld c, e
inc c
call WaitForLCD
.asm_da4
call Func_61b
.asm_da7
ld a, [$ff41]
and $3
jr nz, .asm_da7 ; wait for lcd controller to finish transferring data
ld a, b
ld [de], a
ld a, [$ff00+c]
ld [hli], a
inc b
ld a, b
ld [de], a
ld a, [$ff00+c]
ld [hli], a
inc b
ld a, b
ld [de], a
ld a, [$ff00+c]
ld [hli], a
inc b
ld a, b
ld [de], a
ld a, [$ff00+c]
ld [hli], a
inc b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
ld a, b
cp $40
jr nz, .asm_da4
ret
Func_dd4: ; 0xdd4
push bc
ld c, l
ld b, $0
ld hl, $0000
bit 0, a
jr z, .asm_de0
add hl, bc
.asm_de0
sla c
rl b
bit 1, a
jr z, .asm_de9
add hl, bc
.asm_de9
sla c
rl b
bit 2, a
jr z, .asm_df2
add hl, bc
.asm_df2
sla c
rl b
bit 3, a
jr z, .asm_dfb
add hl, bc
.asm_dfb
sla c
rl b
bit 4, a
jr z, .asm_e04
add hl, bc
.asm_e04
sla c
rl b
bit 5, a
jr z, .asm_e0d
add hl, bc
.asm_e0d
sla c
rl b
bit 6, a
jr z, .asm_e16
add hl, bc
.asm_e16
sla c
rl b
bit 7, a
jr z, .asm_e1f
add hl, bc
.asm_e1f
pop bc
ret
ConvertHexByteToDecWord: ; 0xe21
; Convert the base-16 value in register a into a Binary Coded Decimal (base-10) word.
; Example: If a = $97, de = $0151.
ld b, a
ld hl, $0e3a ; todo
ld de, $0000
.asm_e28
srl b
ld a, [hli]
jr nc, .asm_e34
add e
daa
ld e, a
ld a, [hl]
adc d
daa
ld d, a
.asm_e34
inc hl
ld a, b
and a
jr nz, .asm_e28
ret
PowersOfTwo: ; 0xe3a
dw $0001
dw $0002
dw $0004
dw $0008
dw $0016
dw $0032
dw $0064
dw $0128
Func_e4a: ; 0xe4a
ld a, [hl]
cp $64
jr z, .asm_e53
inc a
ld [hl], a
scf
ret
.asm_e53
and a
ret
Func_e55: ; 0xe55
cp c
jr c, .asm_e5b
sub c
jr Func_e55
.asm_e5b
and a
ret
Func_e5d: ; 0xe5d
ld a, $1
ld [$d84a], a
.asm_e62
ld a, [$d84a]
and a
jr nz, .asm_e62
ret
Func_e69: ; 0xe69
ld a, [$ff44]
cp $90
jr nc, Func_e69
.asm_e6f
ld a, [$ff41]
and $3
jr nz, .asm_e6f
ld a, $a
.asm_e77
dec a
jr nz, .asm_e77
ld hl, $c640
call Func_eef
push hl
ld hl, $9c00
call Func_ef8
pop hl
call Func_eef
push hl
ld hl, $9c04
call Func_ef8
pop hl
call Func_eef
push hl
ld hl, $9c08
call Func_ef8
pop hl
call Func_eef
push hl
ld hl, $9c0c
call Func_ef8
pop hl
call Func_eef
push hl
ld hl, $9c10
call Func_ef8
pop hl
ld hl, $c6c0
call Func_eef
push hl
ld hl, $9c20
call Func_ef8
pop hl
call Func_eef
push hl
ld hl, $9c24
call Func_ef8
pop hl
call Func_eef
push hl
ld hl, $9c28
call Func_ef8
pop hl
call Func_eef
push hl
ld hl, $9c2c
call Func_ef8
pop hl
call Func_eef
push hl
ld hl, $9c30
call Func_ef8
pop hl
ret
Func_eef: ; 0xeef
ld a, [hli]
ld b, a
ld a, [hli]
ld c, a
ld a, [hli]
ld d, a
ld a, [hli]
ld e, a
ret
Func_ef8: ; 0xef8
ld a, [$ff41]
and $3
jr nz, Func_ef8
ld a, b
ld [hli], a
ld a, c
ld [hli], a
ld a, d
ld [hli], a
ld a, e
ld [hli], a
ld a, $a
.asm_f08
dec a
jr nz, .asm_f08
ret
Func_f0c: ; 0xf0c
call Func_f34
ret nc
.asm_f10
ld a, [hli]
ld [de], a
inc de
dec bc
ld a, b
or c
jr nz, .asm_f10
scf
ret
Func_f1a: ; 0xf1a
push bc
push de
push hl
.asm_f1d
ld a, [hli]
ld [de], a
inc de
dec bc
ld a, b
or c
jr nz, .asm_f1d
pop hl
pop de
pop bc
ld h, d
ld l, e
call Func_f74
call Func_fa1
call Func_f4c
ret
Func_f34: ; 0xf34
call Func_f62
jr nc, .asm_f3f
call Func_f7e
jr nc, .asm_f3f
ret
.asm_f3f
add hl, bc
inc hl
inc hl
inc hl
inc hl
call Func_f62
ret nc
call Func_f7e
ret
Func_f4c: ; 0xf4c
push bc
push hl
push de
inc bc
inc bc
inc bc
inc bc
ld d, h
ld e, l
add hl, bc
.asm_f56
ld a, [de]
ld [hli], a
inc de
dec bc
ld a, b
or c
jr nz, .asm_f56
pop de
pop hl
pop bc
ret
Func_f62: ; 0xf62
push hl
add hl, bc
ld a, [hli]
cp $4e
jr nz, .asm_f71
ld a, [hl]
cp $54
jr nz, .asm_f71
scf
jr .asm_f72
.asm_f71
and a
.asm_f72
pop hl
ret
Func_f74: ; 0xf74
push hl
add hl, bc
ld a, $4e
ld [hli], a
ld a, $54
ld [hl], a
pop hl
ret
Func_f7e: ; 0xf7e
push bc
push de
push hl
inc bc
inc bc
ld de, $0000
.asm_f86
ld a, [hli]
add e
ld e, a
jr nc, .asm_f8c
inc d
.asm_f8c
dec bc
ld a, b
or c
jr nz, .asm_f86
ld a, [hli]
cp e
jr nz, .asm_f9c
ld a, [hl]
cp d
jr nz, .asm_f9c
scf
jr .asm_f9d
.asm_f9c
and a
.asm_f9d
pop hl
pop de
pop bc
ret
Func_fa1: ; 0xfa1
push bc
push de
push hl
inc bc
inc bc
ld de, $0000
.asm_fa9
ld a, [hli]
add e
ld e, a
jr nc, .asm_faf
inc d
.asm_faf
dec bc
ld a, b
or c
jr nz, .asm_fa9
ld a, e
ld [hli], a
ld a, d
ld [hl], a
pop hl
pop de
pop bc
ret
Func_fbc: ; 0xfbc
jp Func_3ff
Func_fbf: ; 0xfbf
ld hl, $ffa8
ld c, [hl]
ld a, [$ff44]
cp c
jp c, Func_3ff
inc c
inc c
cp c
jp nc, Func_3ff
ld a, [$ffaf]
ld c, a
ld a, [$ff9e]
xor $10
and c
ld c, a
ld hl, $ff41
.asm_fdb
ld a, [hl]
and $3
jr nz, .asm_fdb
ld a, [$ff40]
and $80
or c
ld [$ff40], a
jp Func_3ff
Func_fea: ; 0xfea
ld hl, $ffa8
ld a, [$ffaa]
cp [hl]
jr nz, .asm_1015
ld a, [$ff44]
cp [hl]
jp nz, Func_3ff
ld a, [$ff9e]
xor $18
ld c, a
ld a, [$ffac]
ld b, a
ld hl, $ff41
.asm_1003
ld a, [hl]
and $3
jr nz, .asm_1003
ld a, [$ff40]
and $80
or c
ld [$ff40], a
ld a, b
ld [$ff42], a
jp Func_3ff
.asm_1015
ld a, [$ff44]
cp [hl]
jr nz, .asm_1037
ld a, [$ffa8]
ld hl, $ffaa
sub [hl]
add $40
ld c, a
ld a, [$ffaa]
ld b, a
ld hl, $ff41
.asm_1029
ld a, [hl]
and $3
jr nz, .asm_1029
ld a, c
ld [$ff42], a
ld a, b
ld [$ff45], a
jp Func_3ff
.asm_1037
ld hl, $ffaa
ld a, [$ff44]
cp [hl]
jp nz, Func_3ff
ld a, [$ff9e]
xor $18
ld c, a
ld a, [$ffac]
ld b, a
ld hl, $ff41
.asm_104b
ld a, [hl]
and $3
jr nz, .asm_104b
ld a, [$ff40]
and $80
or c
ld [$ff40], a
ld a, b
ld [$ff42], a
jp Func_3ff
Func_105d: ; 0x105d
ld hl, $ffa8
ld a, [$ff44]
cp [hl]
jr z, .asm_1069
dec a
cp [hl]
jr nz, .asm_1080
.asm_1069
ld a, [$ffaa]
ld c, a
ld a, [$ffac]
ld b, a
ld hl, $ff41
.asm_1072
ld a, [hl]
and $3
jr nz, .asm_1072
ld a, b
ld [$ff42], a
ld a, c
ld [$ff45], a
jp Func_3ff
.asm_1080
ld hl, $ffaa
ld a, [$ff44]
cp [hl]
jr z, .asm_108d
dec a
cp [hl]
jp nz, Func_3ff
.asm_108d
ld a, [$ffae]
ld b, a
ld hl, $ff41
.asm_1093
ld a, [hl]
and $3
jr nz, .asm_1093
ld a, b
ld [$ff42], a
jp Func_3ff
Func_109e: ; 0x109e
jp Func_3ff
Func_10a1: ; 0x10a1
jp Func_3ff
Func_10a4: ; 0x10a4
jp Func_3ff
Func_10a7: ; 0x10a7
jp Func_3ff
Func_10aa: ; 0x10aa
ld c, a
ld a, [hli]
ld b, a
.asm_10ad
push bc
ld a, c
ld c, [hl]
inc hl
ld b, [hl]
inc hl
push af
ld a, [bc]
ld e, a
inc bc
ld a, [bc]
ld d, a
inc bc
pop af
push hl
call Func_10c5
pop hl
pop bc
dec b
jr nz, .asm_10ad
ret
Func_10c5: ; 0x10c5
push af
ld a, [$ff40]
bit 7, a
jr z, .asm_10d2
.asm_10cc
ld a, [$ff44]
cp $88
jr nc, .asm_10cc
.asm_10d2
pop af
ld hl, $d7fb
ld l, [hl]
ld h, $cb
inc bc
ld [hl], c
inc h
ld [hl], b
inc h
ld [hl], a
inc h
ld [hl], e
inc h
ld [hl], d
ld e, $ff
ld [$fffa], a
ld a, [hLoadedROMBank]
push af
ld a, [$fffa]
ld [hLoadedROMBank], a
ld [$2000], a
dec bc
ld a, [bc]
ld hl, $d7fa
add [hl]
cp $30
jr c, .asm_10fe
ld a, [bc]
ld e, $0
.asm_10fe
add $4
ld [hl], a
pop af
ld [hLoadedROMBank], a
ld [$2000], a
ld hl, $d7fb
ld l, [hl]
ld h, $ca
inc l
ld [hl], $0
dec l
ld [hl], e
ld hl, $d7fb
inc [hl]
ld a, [$ff40]
bit 7, a
ret nz
ld a, [$ffff]
push af
res 0, a
ld [$ffff], a
call Func_113a
pop af
ld [$ffff], a
ret
Func_1129: ; 0x1129
ld a, [$d7fb]
ld [$d7fc], a
ret
Func_1130: ; 0x1130
push hl
ld a, [$d7fb]
ld hl, $d7fc
cp [hl]
pop hl
ret
Func_113a: ; 0x113a
ld hl, $d7fc
ld a, [$d7fb]
cp [hl]
ret z
ld l, [hl]
ld h, $ca
ld [hl], $ff
.loop
ld a, [hl]
and a
jr z, .done
push hl
inc h
ld e, [hl]
inc h
ld d, [hl]
inc h
ld a, [hLoadedROMBank]
push af
ld a, [hl]
ld [hLoadedROMBank], a
ld [$2000], a
inc h
ld a, [hl]
inc h
ld h, [hl]
ld l, a
call Func_117a
pop af
ld [hLoadedROMBank], a
ld [$2000], a
pop hl
inc l
jr .loop
.done
ld a, l
ld [$d7fc], a
ld hl, $d7fb
cp [hl]
ret nz
xor a
ld [$d7fa], a
ret
Func_117a: ; 0x117a
jp [hl]
LoadTileLists: ; 0x117b
; Loads a series of defined tile ids into VRAM
; input: de = pointer to data structure
; data structure: list of VRAM tile data with the following format
; [num tiles][destination pointer][list of tile ids]
ld h, d
ld l, e
.loadTileSequence
ld a, [hli]
and a
ret z
ld b, a
ld a, [hli]
ld e, a
ld a, [hli]
ld d, a ; de = destination for tile data
.loadTileData
ld a, [hli]
ld [de], a
inc de
dec b
jr nz, .loadTileData
jr .loadTileSequence
Func_118d: ; 0x118d
ld a, $1
ld [$ff4f], a
call LoadTileLists
xor a
ld [$ff4f], a
ret
INCBIN "baserom.gbc",$1198,$12a1 - $1198
Func_12a1: ; 0x12a1
ld [$fffa], a
ld a, [hLoadedROMBank]
push af
ld a, [$fffa]
ld [hLoadedROMBank], a
ld [$2000], a
ld a, [hl]
and $7
jr z, .asm_12e5
ld b, a
ld c, $0
.asm_12b5
push bc
ld a, $0
ld [$ff00+c], a
ld a, $30
ld [$ff00+c], a
ld b, $10
.asm_12be
ld e, $8
ld a, [hli]
ld d, a
.asm_12c2
bit 0, d
ld a, $10
jr nz, .asm_12ca
ld a, $20
.asm_12ca
ld [$ff00+c], a
ld a, $30
ld [$ff00+c], a
rr d
dec e
jr nz, .asm_12c2
dec b
jr nz, .asm_12be
ld a, $20
ld [$ff00+c], a
ld a, $30
ld [$ff00+c], a
pop bc
dec b
jr z, .asm_12e5
call Func_12ec
jr .asm_12b5
.asm_12e5
pop af
ld [hLoadedROMBank], a
ld [$2000], a
ret
Func_12ec ; 0x12ec
ld de, $1b58
.asm_12ef
nop
nop
nop
dec de
ld a, d
or e
jr nz, .asm_12ef
ret
Func_12f8: ; 0x12f8
ld a, $e
ld hl, $4010 ; todo
call Func_12a1
call Func_12ec
ld a, [$ff00]
and $3
cp $3
jr nz, .asm_1346
ld a, $20
ld [$ff00], a
ld a, [$ff00]
ld a, [$ff00]
ld a, $30
ld [$ff00], a
ld a, $10
ld [$ff00], a
ld a, [$ff00]
ld a, [$ff00]
ld a, [$ff00]
ld a, [$ff00]
ld a, [$ff00]
ld a, [$ff00]
ld a, $30
ld [$ff00], a
ld a, [$ff00]
ld a, [$ff00]
ld a, [$ff00]
ld a, [$ff00]
and $3
cp $3
jr nz, .asm_1346
ld a, $e
ld hl, $4000
call Func_12a1
call Func_12ec
and a
ret
.asm_1346
ld a, $e
ld hl, $4000
call Func_12a1
call Func_12ec
scf
ret
Func_1353: ; 0x1353
ld [$fffa], a
ld a, [hLoadedROMBank]
push af
ld a, [$fffa]
ld [hLoadedROMBank], a
ld [$2000], a
push af
push hl
ld a, $e4
ld [$ff47], a
ld de, $0010
add hl, de
ld de, vTiles1 ; tiles
call Func_65d
ld hl, vBGMap0 ; bgmap
ld de, $000c
ld a, $80
ld c, $d
.asm_1379
ld b, $14
.asm_137b
ld [hli], a
inc a
dec b
jr nz, .asm_137b
add hl, de
dec c
jr nz, .asm_1379
ld a, $81
ld [$ff40], a
ld bc, $0005
call Func_948
pop hl
pop af
call Func_12a1
ld bc, $0006
call Func_948
ld a, [$ffa3]
ld [$ff47], a
ld a, [$ff9e]
ld [$ff40], a
pop af
ld [hLoadedROMBank], a
ld [$2000], a
ret
Func_13a8: ; 0x13a8
ld a, [$fffb]
and a
ret z
ld bc, $0078
call Func_948
call Func_1489
ld a, $e
ld hl, $69e6
call Func_12a1
ld bc, $0004
call Func_948
ld a, $e
ld hl, $69f6
call Func_12a1
ld bc, $0004
call Func_948
ld a, $e
ld hl, $6a06
call Func_12a1
ld bc, $0004
call Func_948
ld a, $e
ld hl, $6a16
call Func_12a1
ld bc, $0004
call Func_948
ld a, $e
ld hl, $6a26
call Func_12a1
ld bc, $0004
call Func_948
ld a, $e
ld hl, $6a36
call Func_12a1
ld bc, $0004
call Func_948
ld a, $e
ld hl, $6a46
call Func_12a1
ld bc, $0004
call Func_948
ld a, $e
ld hl, $6a56
call Func_12a1
ld bc, $0004
call Func_948
ld bc, $1000
ld a, $e
ld hl, $4156 ; todo
call Func_1353
ld bc, $0004
call Func_948
ld bc, $1000
ld a, $e
ld hl, $5166 ; todo
call Func_1353
ld bc, $0004
call Func_948
ld bc, $0860
ld a, $e
ld hl, $6176 ; todo
call Func_1353
ld bc, $0004
call Func_948
ld bc, $00a0
ld a, $e
ld hl, $40a6 ; todo
call Func_1353
ld bc, $0004
call Func_948
ld bc, $005a
ld a, $e
ld hl, $4030
call Func_1353
ld bc, $0004
call Func_948
ld a, $e
ld hl, $4020
call Func_12a1
ld bc, $0004
call Func_948
ret
Func_1489: ; 0x1489
ld a, [$fffb]
and a
ret z
ld a, [$fffc]
and a
ret nz
ld a, $e
ld hl, $6a66 ; todo
call Func_12a1
ld bc, $0004
call Func_948
ld a, $ff
ld [$fffc], a
ret
Func_14a4: ; 0x14a4
ld a, [$fffb]
and a
ret z
ld bc, $0002
call Func_948
ld a, [$fffc]
and a
ret z
ld a, $e
ld hl, $6a76
call Func_12a1
ld bc, $0004
call Func_948
xor a
ld [$fffc], a
ret
INCBIN "baserom.gbc",$14c4,$167b - $14c4
Func_167b: ; 0x167b
ld a, [$d8ad]
cp $1
ret nz
ld a, [$d8c7]
cp $ff
ret z
ld a, [$d8db]
and a
ret nz
ld hl, $d8e0
inc [hl]
ld a, [hl]
cp $6
ret c
xor a
ld [hl], a
ld [$d8e2], a
call Func_18ac
ret
INCBIN "baserom.gbc",$169d,$16a2 - $169d
Func_16a2: ; 0x16a2
xor a
ld [$ff01], a
ld [$ff02], a
ld [$d8ad], a
dec a
ld [$d8c7], a
ld [$d8c8], a
call Func_16b5
ret
Func_16b5: ; 0x16b5
xor a
ld [$d8c5], a
ld [$d8ca], a
ld [$d8db], a
; fall through
Func_16bf: ; 0x16bf
xor a
ld [$d8af], a
ld [$d8b0], a
ld [$d8b1], a
ld [$d8b2], a
ld [$d8c6], a
ld [$d8c3], a
ld [$d8c4], a
ld [$d8b9], a
ld [$d8ba], a
ld [$d8dc], a
ld [$d8e2], a
ret
Func_16e2: ; 0x16e2
ld a, [$d8db]
and a
jr z, .asm_16ec
call Func_16fd
ret nc
.asm_16ec
ld a, [$d8ae]
cp $1
jr nz, .asm_16f7
call Func_16fd
ret nc
.asm_16f7
call Func_1925
jp Func_19e5
Func_16fd: ; 0x16fd
ld a, [$d8c5]
cp $2
jr nz, .asm_173c
xor a
ld [$d8e0], a
ld [$d8ae], a
inc a
ld [$d8ad], a
ld a, [$d8c7]
cp $ff
jr z, .asm_1735
bit 0, a
jr nz, .asm_172e
bit 1, a
jr nz, .asm_172e
bit 4, a
jr z, .asm_173a
xor a
ld [$d8ad], a
ld [$d8ae], a
ld a, [$d8c7]
jr .asm_173a
.asm_172e
scf
ret
xor a
ld [$d8ae], a
dec a
.asm_1735
inc a
ld [$d8ad], a
dec a
.asm_173a
and a
ret
.asm_173c
xor a
ld a, $f0
ret
Func_1740: ; 0x1740
ld a, [$d8ad]
cp $1
jr z, .asm_1752
cp $2
jr z, .asm_1752
and a
ld a, $ff
ret z
.asm_174f
ld a, $f0
ret
.asm_1752
ld a, [$d8e2]
and a
jr nz, .asm_174f
ld a, [$d8db]
and a
jr z, .asm_1762
call Func_16fd
ret nc
.asm_1762
ld a, [$d8ae]
cp $2
jr nz, .asm_176d
call Func_16fd
ret nc
.asm_176d
ld a, [$d8c7]
cp $ff
ret z
call Func_1932
jp Func_19e5
Func_1779: ; 0x1779
ld c, a
ld a, [$d8ad]
and a
ld a, [$d8c7]
ret z
ld a, [$d8ad]
cp $1
jr z, .asm_1790
cp $3
jr z, .asm_1790
ld a, $f0
ret
.asm_1790
ld a, [$d8db]
and a
jr nz, .asm_17df
ld a, c
inc a
ld [$d8de], a
ld a, l
ld [$d8c1], a
ld a, h
ld [$d8c2], a
ld a, [$d8c7]
cp $ff
ret z
ld a, [$d8ab]
ld [$d8ac], a
and a
jr z, .asm_17d6
ld a, [$d8de]
dec a
dec a
push af
ld c, a
ld b, $0
push hl
ld hl, $d89d
add hl, bc
ld a, [hl]
pop hl
ld [$d8ac], a
pop af
add a
ld c, a
ld b, $0
push hl
ld hl, $d88b
add hl, bc
ld a, [hli]
ld b, [hl]
pop hl
ld c, a
jp .asm_17d9
.asm_17d6
ld bc, $0280
.asm_17d9
call Func_1989
jp Func_19e5
.asm_17df
ld a, [$d8c5]
cp $2
ld a, $f0
jp nz, .asm_1869
ld hl, $d8de
ld a, [$d8c7]
bit 4, a
jp nz, .asm_1859
bit 1, a
jp nz, .asm_1804
bit 0, a
jp nz, .asm_1804
dec [hl]
ld a, [$d8c7]
jr z, .asm_1860
.asm_1804
ld a, [hl]
cp $1
jr z, .asm_186a
ld bc, $0280
ld a, [$d8ab]
ld [$d8ac], a
and a
jr z, .asm_1836
ld a, [$d8de]
dec a
dec a
push af
ld c, a
ld b, $0
push hl
ld hl, $d89d
add hl, bc
ld a, [hl]
pop hl
ld [$d8ac], a
pop af
add a
ld c, a
ld b, $0
push hl
ld hl, $d88b
add hl, bc
ld a, [hli]
ld b, [hl]
pop hl
ld c, a
.asm_1836
ld a, [$d8c7]
bit 1, a
jp nz, .asm_184e
ld a, [$d8bf]
add $80
ld [$d8bf], a
ld a, [$d8c0]
adc $2
ld [$d8c0], a
.asm_184e
ld a, [$d8bf]
ld l, a
ld a, [$d8c0]
ld h, a
jp .asm_17d9
.asm_1859
push af
ld a, $1
ld [$d8dc], a
pop af
.asm_1860
push af
xor a
ld [$d8cc], a
ld [$d8db], a
pop af
.asm_1869
ret
.asm_186a
ld a, [$d8dd]
and a
ld a, [$d8c7]
jr z, .asm_1860
call Func_19d7
jp Func_19e5
INCBIN "baserom.gbc",$1879,$18ac - $1879
Func_18ac: ; 0x18ac
ld a, [$d8ad]
cp $1
jr z, .asm_18be
cp $3
jr z, .asm_18be
and a
ld a, $ff
ret z
ld a, $f0
ret
.asm_18be
ld a, [$d8db]
and a
jr z, .asm_18c8
call Func_16fd
ret nc
.asm_18c8
ld a, [$d8c7]
cp $ff
ret z
call Func_19ca
jp Func_19e5
Func_18d4: ; 0x18d4
ld [$d8cb], a
ld a, d
ld [$d8cc], a
ld a, l
ld [$d8bb], a
ld [$d8bd], a
ld a, h
ld [$d8bc], a
ld [$d8be], a
ld a, c
ld [$d8b3], a
ld [$d8b5], a
ld a, b
ld [$d8b4], a
ld [$d8b6], a
xor a
ld [$d8c5], a
call Func_16bf
ret
INCBIN "baserom.gbc",$18ff,$1925 - $18ff
Func_1925: ; 0x1925
ld a, $1
ld d, $0
ld hl, $1901 ; todo
ld bc, $0008
jp Func_18d4
Func_1932: ; 0x19332
ld a, $2
ld d, $0
ld hl, $d8cd
ld bc, $000c
call Func_18d4
ld hl, $1909
ld de, $d8cd
ld bc, $0004
call Func_65d
ld de, $0006
ld a, [$d8a8]
ld [$d8d1], a
call Func_1982
ld a, [$d8a9]
ld [$d8d2], a
call Func_1982
ld a, [$d8aa]
ld [$d8d3], a
call Func_1982
ld a, [$d8a7]
ld [$d8d4], a
call Func_1982
ld a, e
ld [$d8d5], a
ld a, d
ld [$d8d6], a
xor a
ld [$d8d7], a
ld [$d8d8], a
ret
Func_1982: ; 0x1982
add e
ld e, a
ld a, d
adc $0
ld d, a
ret
Func_1989: ; 0x1989
ld a, l
ld [$d8bf], a
ld a, h
ld [$d8c0], a
ld a, c
ld [$d8b7], a
ld a, b
ld [$d8b8], a
push bc
ld a, $3
ld d, $1
ld hl, $d8cd
ld bc, $0004
call Func_18d4
ld a, [$190d]
ld [$d8cd], a
ld a, [$d8ac]
ld [$d8ce], a
pop bc
ld a, c
ld [$d8cf], a
ld a, b
ld [$d8d0], a
ret
INCBIN "baserom.gbc",$19bd,$19ca - $19bd
Func_19ca: ; 0x19ca
ld a, $5
ld d, $0
ld hl, $191d ; todo
ld bc, $0008
jp Func_18d4
Func_19d7: ; 0x19d7
ld a, $6
ld d, $1
ld hl, $190d ; todo
ld bc, $0008
jp Func_18d4
INCBIN "baserom.gbc",$19e4,$19e5 - $19e4
Func_19e5: ; 0x19e5
ld a, [$d8ad]
cp $1
jr z, .asm_19f8
and a
jr nz, .asm_19f6
ld a, [$d8cb]
cp $1
jr z, .asm_1a02
.asm_19f6
scf
ret
.asm_19f8
ld a, [$d8cb]
cp $1
jr z, .asm_19f6
ld [$d8ad], a
.asm_1a02
xor a
ld [$d8c5], a
ld [$d8ae], a
ld a, $1
ld [$d8b9], a
ld [$d8db], a
ld a, [$18ff]
ld [$ff01], a
ld a, $1
ld [$ff02], a
ld a, $81
ld [$ff02], a
ld a, $f0
ret
Func_1a21: ; 0x1a21
call Func_1a59
call Func_1a89
jr c, .asm_1a3f
.asm_1a29
call Func_1aa9
call Func_1b3d
jr c, .asm_1a3f
ld a, [$d86c]
and a
jr z, .asm_1a29
call Func_1b60
jr c, .asm_1a3f
call Func_1b88
.asm_1a3f
call Func_1ba7
ret
Func_1a43: ; 0x1a43
xor a
ld [$d86e], a
call Func_1a59
call Func_1a89
jr c, .asm_1a54
ld a, $1
ld [$d86e], a
.asm_1a54
call Func_1ba7
ret
ret ; unused instruction?
Func_1a59: ; 0x1a59
ld [$d86a], a
ld a, h
ld [$d869], a
ld a, l
ld [$d868], a
ld a, $80
ld [$d866], a
ld a, $c2
ld [$d867], a
xor a
ld [$d86b], a
ld [$d86c], a
ld [$d86d], a
call Func_16a2
ld hl, $ffff
set 3, [hl]
xor a
ld [$ffb1], a
ld a, $1
ld [$d8e1], a
ret
Func_1a89: ; 0x1a89
call Func_16e2
cp $f0
jr z, .asm_1a9f
cp $ff
jp z, Func_1bb2
ld a, [$d8c8]
cp $81
jp nz, Func_1bb2
and a
ret
.asm_1a9f
ld a, [hNewlyPressedButtons]
bit 1, a
jp nz, Func_1bd3
rst $10
jr Func_1a89
Func_1aa9: ; 0x1aa9
ld a, [$d866]
ld l, a
ld a, [$d867]
ld h, a
ld de, wc000
ld b, $2
.asm_1ab6
ld c, $14
.asm_1ab8
ld a, [hli]
call Func_1ae2
dec c
jr nz, .asm_1ab8
ld a, l
add $c
ld l, a
jr nc, .asm_1ac6
inc h
.asm_1ac6
dec b
jr nz, .asm_1ab6
ld a, l
ld [$d866], a
ld a, h
ld [$d867], a
ld a, [$d86b]
inc a
ld [$d86b], a
cp $9
jr nz, .asm_1ae1
ld a, $1
ld [$d86c], a
.asm_1ae1
ret
Func_1ae2: ; 0x1ae2
push bc
push hl
xor $80
swap a
ld c, a
and $f
ld b, a
ld a, c
and $f0
ld c, a
ld a, [$d868]
ld l, a
ld a, [$d869]
ld h, a
add hl, bc
ld a, [hLoadedROMBank]
push af
ld a, [$d86a]
ld [hLoadedROMBank], a
ld [$2000], a
ld a, [hli]
ld [de], a
inc e
ld a, [hli]
ld [de], a
inc e
ld a, [hli]
ld [de], a
inc e
ld a, [hli]
ld [de], a
inc e
ld a, [hli]
ld [de], a
inc e
ld a, [hli]
ld [de], a
inc e
ld a, [hli]
ld [de], a
inc e
ld a, [hli]
ld [de], a
inc e
ld a, [hli]
ld [de], a
inc e
ld a, [hli]
ld [de], a
inc e
ld a, [hli]
ld [de], a
inc e
ld a, [hli]
ld [de], a
inc e
ld a, [hli]
ld [de], a
inc e
ld a, [hli]
ld [de], a
inc e
ld a, [hli]
ld [de], a
inc e
ld a, [hli]
ld [de], a
inc de
pop af
ld [hLoadedROMBank], a
ld [$2000], a
pop hl
pop bc
ret
Func_1b3d: ; 0x1b3d
ld a, [$d86c]
ld [$d8dd], a
ld hl, wc000
ld a, $1
call Func_1779
cp $ff
jp z, Func_1bb2
cp $f0
jr z, .asm_1b56
and a
ret
.asm_1b56
ld a, [hNewlyPressedButtons]
bit BIT_B_BUTTON, a
jp nz, Func_1bd3
rst $10
jr Func_1b3d
Func_1b60: ; 0x1b60
ld a, $1
ld [$d8a8], a
ld a, $13
ld [$d8a9], a
call Func_1740
cp $ff
jp z, Func_1bb2
cp $f0
jr z, .asm_1b7e
ld bc, $001e
call Func_93f
and a
ret
.asm_1b7e
ld a, [hNewlyPressedButtons]
bit BIT_B_BUTTON, a
jp nz, Func_1bd3
rst $10
jr Func_1b60
Func_1b88: ; 0x1b88
ld a, [$d8c7]
ld b, a
cp $ff
jr z, Func_1bb2
and $f0
jr nz, Func_1bb2
bit 1, b
jr nz, .asm_1b9d
call Func_16a2
and a
ret
.asm_1b9d
ld a, [hNewlyPressedButtons]
bit BIT_B_BUTTON, a
jp nz, Func_1bd3
rst $10
jr Func_1b88
Func_1ba7: ; 0x1ba7
ld hl, $ffff
res 3, [hl]
xor a
ld [$d8e1], a
and a
ret
Func_1bb2: ; 0x1bb2
ld hl, $1bcf ; todo
ld a, [$d8c7]
cp $ff
jr z, .asm_1bc6
ld b, $3
.asm_1bbe
inc hl
sla a
jr c, .asm_1bc6
dec b
jr nz, .asm_1bbe
.asm_1bc6
ld a, [hl]
ld [$d86d], a
call Func_16a2
scf
ret
INCBIN "baserom.gbc",$1bcf,$1bd3 - $1bcf
Func_1bd3: ; 0x1bd3
ld de, $0001
call PlaySoundEffect
ld a, $5
ld [$d86d], a
call Func_16a2
scf
ret
Func_1be3: ; 0x1be3
ld a, $c0
ld [$ff56], a
ld a, $ff
ld [$d8ea], a
xor a
ld b, a
.asm_1bee
inc a
jr nz, .asm_1bee
inc b
jr nz, .asm_1bee
ld hl, $d8eb
ld a, [$ff4d]
bit 7, a
jr z, .asm_1c0c
ld [hl], $e
inc hl
ld [hl], $12
inc hl
ld [hl], $8
inc hl
ld [hl], $c
inc hl
ld [hl], $c
ret
.asm_1c0c
ld [hl], $6
inc hl
ld [hl], $8
inc hl
ld [hl], $2
inc hl
ld [hl], $4
inc hl
ld [hl], $5
ret
Func_1c1b: ; 0x1c1b
inc d
ret z
ld a, [$ff00+c]
bit 1, a
jr z, Func_1c1b
ret
Func_1c23: ; 0x1c23
inc d
ret z
ld a, [$ff00+c]
bit 1, a
jr nz, Func_1c23
ret
Func_1c2b: ; 0x1c2b
ld a, $c1
ld [$ff00+c], a
.asm_1c2e
dec d
jr nz, .asm_1c2e
ret
Func_1c32: ; 0x1c32
ld a, $c0
ld [$ff00+c], a
.asm_1c35
dec d
jr nz, .asm_1c35
ret
INCBIN "baserom.gbc",$1c39,$1c50 - $1c39
Func_1c50: ; 0x1c50
ld a, $1
ld [$d8e9], a
ld b, $1a
ld c, $56
ld d, $0
ld e, d
call Func_1c23
ld a, d
and a
jp z, Func_1dc2
ld d, e
call Func_1c1b
ld a, d
and a
jp z, Func_1dc2
call Func_1c23
ld a, d
and a
jp z, Func_1dc2
call Func_1c1b
ld a, d
and a
jp z, Func_1dc2
cp $8
jp c, Func_1dc2
cp $2a
jp nc, Func_1dc2
ld a, $0
ld [$d8ea], a
ld d, b
call Func_1c32
ld d, b
call Func_1c2b
ld d, b
call Func_1c32
ld d, b
call Func_1c2b
ld d, b
call Func_1c32
ret
Func_1ca1: ; 0x1ca1
ld a, $2
ld [$d8e9], a
ld b, $1a
ld c, $56
ld d, b
ld e, $0
call Func_1c32
ld d, b
call Func_1c2b
ld d, b
call Func_1c32
ld d, b
call Func_1c2b
ld d, b
call Func_1c32
ld d, e
call Func_1c23
ld a, d
and a
jp z, Func_1dc2
ld d, e
call Func_1c1b
ld a, d
and a
jp z, Func_1dc2
ld d, e
call Func_1c23
ld a, d
and a
jp z, Func_1dc2
ld d, e
call Func_1c1b
ld a, d
and a
jp z, Func_1dc2
ld d, $1a
call Func_1c32
ld a, $0
ld [$d8ea], a
ret
INCBIN "baserom.gbc",$1cef,$1cf8 - $1cef
Func_1cf8: ; 0x1cf8
xor a
ld [$d8e4], a
ld [$d8e5], a
push hl
push bc
ld hl, $d8e6
ld a, $5a
ld [hli], a
ld [hl], b
dec hl
ld b, $2
ld d, $1e
call Func_1c32
call Func_1d44
pop bc
pop hl
call Func_1ed3
call Func_1d44
ld a, [$d8e4]
ld [$d8e6], a
ld a, [$d8e5]
ld [$d8e7], a
ld hl, $d8e6
ld b, $2
call Func_1d44
ld hl, $d8ea
ld b, $1
call Func_1e3b
ld a, [$d8e6]
ld [$d8e4], a
ld a, [$d8e7]
ld [$d8e5], a
ret
Func_1d44: ; 0x1d44
ld a, [$d8ea]
cp $0
ret nz
ld c, $56
ld d, $16
call Func_1c2b
ld d, $16
call Func_1c32
ld a, b
cpl
ld b, a
.asm_1d59
inc b
jr z, .asm_1dae
ld a, $8
ld [$d8e3], a
ld a, [hli]
ld e, a
ld a, [$d8e4]
add e
ld [$d8e4], a
jr nc, .asm_1d75
ld a, [$d8e5]
inc a
ld [$d8e5], a
jr .asm_1d78
.asm_1d75
call Func_1ed3
.asm_1d78
ld a, e
rlca
ld e, a
jr nc, .asm_1d8d
ld a, [$d8eb]
ld d, a
call Func_1c2b
ld a, [$d8ec]
ld d, a
call Func_1c32
jr .asm_1d9b
.asm_1d8d
ld a, [$d8ed]
ld d, a
call Func_1c2b
ld a, [$d8ee]
ld d, a
call Func_1c32
.asm_1d9b
ld a, [$d8e3]
dec a
ld [$d8e3], a
jr z, .asm_1dac
call Func_1ed4
call Func_1ed4
jr .asm_1d78
.asm_1dac
jr .asm_1d59
.asm_1dae
call Func_1ed3
call Func_1ed3
call Func_1ed4
ld d, $16
call Func_1c2b
ld d, $16
call Func_1c32
ret
Func_1dc2: ; 0x1dc2
ld a, $2
ld [$d8ea], a
ret
INCBIN "baserom.gbc",$1dc8,$1dd1 - $1dc8
Func_1dd1: ; 0x1dd1
ld a, [$d8ea]
or $4
ld [$d8ea], a
ret
Func_1dda: ; 0x1dda
xor a
ld [$d8e4], a
ld [$d8e5], a
push hl
ld hl, $d8e6
ld b, $2
call Func_1e3b
ld a, [$d8e7]
ld [$d8e8], a
ld b, a
pop hl
ld a, [$d8e6]
cp $5a
jp nz, Func_1dd1
call Func_1e3b
ld a, [$d8e4]
ld d, a
ld a, [$d8e5]
ld e, a
push de
ld hl, $d8e6
ld b, $2
call Func_1e3b
pop de
ld hl, $d8e6
ld a, [hli]
xor d
ld b, a
ld a, [hl]
xor e
or b
jr z, .asm_1e22
ld a, [$d8ea]
or $1
ld [$d8ea], a
.asm_1e22
push de
ld hl, $d8ea
ld b, $1
call Func_1d44
pop de
ld a, d
ld [$d8e4], a
ld a, e
ld [$d8e5], a
ld a, [$d8e8]
cp $82
ret z
ret
Func_1e3b: ; 0x1e3b
ld a, [$d8ea]
cp $0
ret nz
ld c, $56
ld d, $0
call Func_1c23
ld a, d
or a
jp z, Func_1dc2
ld d, $0
call Func_1c1b
ld a, d
or a
jp z, Func_1dc2
ld d, $0
call Func_1c23
ld a, d
or a
jp z, Func_1dc2
call Func_1ed4
call Func_1ed4
push af
pop af
ld a, b
cpl
ld b, a
.asm_1e6c
inc b
jr z, .asm_1eb9
ld a, $8
ld [$d8e3], a
.asm_1e74
ld d, $0
call Func_1c1b
call Func_1c23
ld a, [$d8ef]
cp d
jr nc, .asm_1e88
ld a, e
set 0, a
ld e, a
jr .asm_1e8c
.asm_1e88
ld a, e
res 0, a
ld e, a
.asm_1e8c
ld a, [$d8e3]
dec a
ld [$d8e3], a
jr z, .asm_1ea0
ld a, e
rlca
ld e, a
call Func_1ed4
call Func_1ed4
jr .asm_1e74
.asm_1ea0
ld a, e
ld [hli], a
ld a, [$d8e4]
add e
ld [$d8e4], a
jr nc, .asm_1eb4
ld a, [$d8e5]
inc a
ld [$d8e5], a
jr .asm_1eb7
.asm_1eb4
call Func_1ed3
.asm_1eb7
jr .asm_1e6c
.asm_1eb9
ld d, $0
call Func_1c1b
ld a, d
and a
jp z, Func_1dc2
ld d, $11
call Func_1c32
ret
INCBIN "baserom.gbc",$1ec9,$1ed3 - $1ec9
Func_1ed3: ; 0x1ed3
ret
Func_1ed4: ; 0x1ed4
jr z, .asm_1ed6
.asm_1ed6
jr nz, .asm_1ed8
.asm_1ed8
ret
INCBIN "baserom.gbc",$1ed9,$1f0b - $1ed9
Func_1f0b: ; 0x1f0b
push bc
push de
push hl
ld e, a
ld d, $0
sla e
rl d
ld a, [hLoadedROMBank]
push af
ld a, $1
ld [hLoadedROMBank], a
ld [$2000], a
ld hl, $55d7
jr asm_1f3b
LoadOAMData: ; 0x1f24
; This function loads OAM data, but it adds b and c to the x and y values for some reason.
; input: a = OAM data id (see OAMDataPointers)
push bc
push de
push hl
ld e, a
ld d, $0
sla e
rl d ; multiply de by 2
ld a, [hLoadedROMBank]
push af
ld a, Bank(OAMDataPointers)
ld [hLoadedROMBank], a
ld [$2000], a
ld hl, OAMDataPointers
asm_1f3b: ; 0x1f3b
add hl, de ; hl points to oam pointer in OAMDataPointers
ld a, [hli]
ld e, a
ld a, [hl]
ld d, a ; de points to OAM data
ld a, [$d802]
ld l, a
ld h, (wOAMBuffer >> 8)
.loadOAMDataLoop
ld a, [de]
cp $80 ; OAM data list terminator
jr z, .doneReadingOAMData
add c
ld [hli], a
inc de
ld a, [de]
add b
ld [hli], a
inc de
ld a, [de]
ld [hli], a
inc de
ld a, [de]
ld [hli], a
inc de
jr .loadOAMDataLoop
.doneReadingOAMData
ld a, l
ld [$d802], a
pop af
ld [hLoadedROMBank], a
ld [$2000], a
pop hl
pop de
pop bc
ret
INCBIN "baserom.gbc",$1f68,$1ffc - $1f68
Func_1ffc: ; 0x1ffc
ld a, $b
ld [$d806], a
ld a, $4
ld [$d807], a
ld [$ff8a], a
ld a, $f ; todo
ld hl, $4000
call BankSwitch
ld a, $1
ld [$d85d], a
ld a, $37
ld [$d470], a
ld [$d471], a
ld [$d472], a
ld a, SCREEN_ERASE_ALL_DATA
ld [wCurrentScreen], a
.asm_2025
call Func_2034
call Func_2043
call Func_926
call Func_b2e
rst $10
jr .asm_2025
Func_2034: ; 0x2034
ld a, [$d804]
and a
jr z, .asm_203f
dec a
ld [$d804], a
ret
.asm_203f
ld [$d803], a
ret
Func_2043: ; 0x2043
ld a, [wCurrentScreen]
call CallInFollowingTable
CallTable_2049: ; 0x2049
; First two bytes is function pointer.
; Third byte is bank of function.
; Fourth byte seems to be unused.
dw Func_8000
db Bank(Func_8000), $00
; SCREEN_ERASE_ALL_DATA
dw HandleEraseAllDataMenu
db Bank(HandleEraseAllDataMenu), $00
; SCREEN_COPYRIGHT
dw HandleCopyrightScreen
db Bank(HandleCopyrightScreen), $00
; SCREEN_TITLESCREEN
dw HandleTitlescreen
db Bank(HandleTitlescreen), $00
; SCREEN_PINBALL_GAME
dw HandlePinballGame
db Bank(HandlePinballGame), $00
; SCREEN_POKEDEX
dw HandlePokedexScreen
db Bank(HandlePokedexScreen), $00
; SCREEN_OPTIONS
dw HandleOptionsScreen
db Bank(HandleOptionsScreen), $00
; SCREEN_HIGH_SCORES
dw HandleHighScoresScreen
db Bank(HandleHighScoresScreen), $00
; SCREEN_FIELD_SELECT
dw HandleFieldSelectScreen
db Bank(HandleFieldSelectScreen), $00
; end of call table
Func_206d: ; 0x206d
ld a, [hLoadedROMBank]
push af
ld a, $2
ld [hLoadedROMBank], a
ld [$2000], a
call $4d17 ; todo
jr c, .asm_2084
pop af
ld [hLoadedROMBank], a
ld [$2000], a
and a
ret
.asm_2084
pop af
ld [hLoadedROMBank], a
ld [$2000], a
scf
ret
Func_208c: ; 0x208c
ld a, [hLoadedROMBank]
push af
ld a, $2
ld [hLoadedROMBank], a
ld [$2000], a
call $4ee0 ; todo
jr c, .asm_20a3
pop af
ld [hLoadedROMBank], a
ld [$2000], a
and a
ret
.asm_20a3
pop af
ld [hLoadedROMBank], a
ld [$2000], a
scf
ret
Func_20ab: ; 0x20ab
push af
xor a
ld [$ffb6], a
jr .asm_20c6
push af
ld a, b
xor c
ld [$ffb6], a
bit 7, b
jr z, .asm_20be
ld a, b
cpl
inc a
ld b, a
.asm_20be
bit 7, c
jr z, .asm_20c6
ld a, c
cpl
inc a
ld c, a
.asm_20c6
push de
push hl
ld a, b
cp c
jr nc, .asm_20ce
ld b, c
ld c, a
.asm_20ce
ld h, $3e
ld l, c
ld e, [hl]
inc h
ld d, [hl]
ld l, b
ld a, [hl]
dec h
ld l, [hl]
ld h, a
add hl, de
push af
ld d, $3e
ld a, b
sub c
ld e, a
ld a, [de]
ld c, a
inc d
ld a, [de]
ld b, a
ld a, l
sub c
ld l, a
ld a, h
sbc b
ld h, a
jr nc, .asm_20f1
pop af
ccf
jr .asm_20f2
.asm_20f1
pop af
.asm_20f2
rr h
rr l
ld b, h
ld c, l
ld a, [$ffb6]
rlca
jr nc, .asm_2107
ld a, c
cpl
add $1
ld c, a
ld a, b
cpl
adc $0
ld b, a
.asm_2107
pop hl
pop de
pop af
ret
Func_210b: ; 0x210b
push af
push hl
ld a, b
xor d
ld [$ffb7], a
bit 7, b
jr z, .asm_211f
ld a, c
cpl
add $1
ld c, a
ld a, b
cpl
adc $0
ld b, a
.asm_211f
push bc
ld b, e
call Func_20ab
ld l, c
ld h, b
ld bc, $0080
add hl, bc
ld l, h
ld h, $0
pop bc
ld c, e
call Func_20ab
add hl, bc
ld a, [$ffb7]
rlca
jr nc, .asm_2142
ld a, l
cpl
add $1
ld l, a
ld a, h
cpl
adc $0
ld h, a
.asm_2142
ld c, l
ld b, h
pop hl
pop af
ret
Func_2147: ; 0x2147
add $40
; fall through
Func_2149: ; 0x2149
push hl
ld [$ffb6], a
and $7f
cp $40
jr c, .asm_2155
cpl
add $81
.asm_2155
ld hl, $26be ; todo
ld e, a
ld d, $0
add hl, de
ld e, [hl]
pop hl
ld d, $0
ld a, [$ffb6]
sla a
ret nc
ld d, $ff
ret
ApplyGravityToBall: ; 0x2168
; Adds a constant to the pinball's y velocity.
ld a, [$d549]
and a
ret z
ld de, $000b ; gravity added to y velocity every frame
ld hl, wBallYVelocity
ld a, [hli]
ld h, [hl]
ld l, a
add hl, de
ld a, l
ld [wBallYVelocity], a
ld a, h
ld [wBallYVelocity + 1], a
ret
LimitBallVelocity: ; 0x2180
; Ensures that the ball's x and y velocity are kept under a threshold.
; The ball can travel at a higher max speed when moving diagonally, since it
; limits the x and y components independently.
ld hl, wBallXVelocity + 1
call _LimitBallVelocity
ld hl, wBallYVelocity + 1
; fall through
_LimitBallVelocity: ; 0x2189
ld a, [hl]
bit 7, a ; is it negative velocity? (left or up)
jr nz, .negativeVelocity
cp $8
ret c
ld a, $7 ; max positive velocity
ld [hl], a
ret
.negativeVelocity
cp $f9
ret nc
ld a, $f9 ; max negative velocity
ld [hl], a
ret
MoveBallPosition: ; 0x219c
; Updates the ball's position according to its velocity
ld a, [wBallXPos]
ld [wPreviousBallXPos], a
ld a, [wBallXPos + 1]
ld [wPreviousBallXPos + 1], a
ld a, [wBallYPos]
ld [wPreviousBallYPos], a
ld a, [wBallYPos + 1]
ld [wPreviousBallYPos + 1], a
ld de, wBallXVelocity + 1
ld hl, wBallXPos
call AddVelocityToPosition
ld de, wBallYVelocity + 1
ld hl, wBallYPos
; fall through
AddVelocityToPosition: ; 0x21c3
ld a, [de]
bit 7, a
jr nz, .asm_21d1
cp $5
jr c, .asm_21da
ld bc, $04ff
jr .asm_21de
.asm_21d1
cp $fc
jr nc, .asm_21da
ld bc, $fb01
jr .asm_21de
.asm_21da
ld b, a
dec de
ld a, [de]
ld c, a
.asm_21de
ld a, [hl]
add c
ld [hli], a
ld a, [hl]
adc b
ld [hl], a
ret
Func_21e5: ; 0x21e5
cpl
inc a
; fall through
Func_21e7: ; 0x21e7
push hl
push bc
push de
ld [$ff8c], a
call Func_2147
ld a, e
ld [$ff8d], a
ld a, d
ld [$ff8e], a
call Func_210b
ld l, c
ld h, b
pop bc
push bc
ld a, [$ff8c]
call Func_2149
ld a, e
ld [$ff8f], a
ld a, d
ld [$ff90], a
call Func_210b
add hl, bc
pop de
pop bc
push hl
push de
ld a, [$ff8f]
ld e, a
ld a, [$ff90]
cpl
ld d, a
call Func_210b
ld l, c
ld h, b
pop bc
ld a, [$ff8d]
ld e, a
ld a, [$ff8e]
ld d, a
call Func_210b
add hl, bc
ld d, h
ld e, l
pop bc
pop hl
ret
Func_222b: ; 0x222b
push hl
ld hl, $d7f8
ld [hl], $ff
bit 7, d
jr nz, .asm_2297
ld [hl], $0
ld a, d
cp $3
jr c, .asm_2254
ld a, $ff
ld [$d803], a
ld a, $1
ld [$d804], a
ld a, [wFlipperCollision]
and a
jr nz, .asm_2254
push de
ld de, $0008
call Func_4d8
pop de
.asm_2254
srl d
rr e
srl d
rr e
ld h, d
ld l, e
srl d
rr e
ld a, [$d7eb]
and a
jr z, .asm_226c
.asm_2268
add hl, de
dec a
jr nz, .asm_2268
.asm_226c
ld d, h
ld e, l
ld a, e
cpl
add $1
ld e, a
ld a, d
cpl
adc $0
ld d, a
ld a, [wBallSpin]
sra a
ld l, a
ld h, $0
bit 7, l
jr z, .asm_2286
ld h, $ff
.asm_2286
add hl, bc
ld b, h
ld c, l
push bc
sla c
rl b
sla c
rl b
ld a, b
ld [wBallSpin], a
pop bc
.asm_2297
pop hl
ret
LoadBallVelocity: ; 0x2299
; Loads velocity of the ball into bc and de
; bc = x velocity
; de = y velocity
push hl
ld hl, wBallXVelocity
ld a, [hli]
ld c, a
ld a, [hli]
ld b, a
ld a, [hli]
ld e, a
ld a, [hl]
ld d, a
pop hl
ret
SetBallVelocity: ; 0x22a7
; Sets the x and y velocities of the ball.
; bc = x velocity
; de = y velocity
push hl
ld hl, wBallXVelocity
ld a, c
ld [hli], a
ld a, b
ld [hli], a
ld a, e
ld [hli], a
ld a, d
ld [hl], a
pop hl
ret
Func_22b5: ; 0x22b5
ld a, [wBallXPos + 1]
sub $4
push af
and $7
ld [wSubTileBallXPos], a ; sub-tile position
pop af
and $f8
ld c, a
ld a, [wBallYPos + 1]
sub $4
push af
and $7
ld [wSubTileBallYPos], a
pop af
and $f8
ld b, a
ld l, b ; bc contains tile coords of ball position
ld h, $0
sla l
rl h
sla l
rl h ; b was multiplied by 4 (y tile position)
srl c
srl c
srl c ; c was divided by 8 (x tile position)
ld b, $0
add hl, bc
ld a, l
ld [$d7f3], a
ld a, h
ld [$d7f4], a
ld a, [$d7ec]
ld c, a
ld a, [$d7ed]
ld b, a
add hl, bc
ld a, [hLoadedROMBank]
push af
ld a, [$d7ee]
ld [hLoadedROMBank], a
ld [$2000], a
ld bc, $001f ; number of tiles wide - 1
ld a, [hli]
ld [wUpperLeftCollisionAttribute], a
ld a, [hl]
ld [wUpperRightCollisionAttribute], a
add hl, bc
ld a, [hli]
ld [wLowerLeftCollisionAttribute], a
ld a, [hl]
ld [wLowerRightCollisionAttribute], a
pop af
ld [hLoadedROMBank], a
ld [$2000], a
ld a, [hLoadedROMBank]
push af
ld a, [$d7f1]
ld [hLoadedROMBank], a
ld [$2000], a
ld a, [wSubTileBallXPos]
sla a
ld c, a
ld b, $0
ld hl, SubTileXPos_CollisionDataPointers
add hl, bc
ld e, [hl]
inc hl
ld d, [hl]
ld a, [wSubTileBallYPos]
ld c, a
ld b, $10 ; number of times too loop over .asm_233d
.asm_233d
push bc
ld a, [de]
inc de
add c ; add the sub tile y pos
push af
srl a
srl a
srl a
ld c, a
ld b, $0
ld hl, wUpperLeftCollisionAttribute
add hl, bc
ld a, [hl]
call Func_248a
jr nc, .asm_235e
pop af
and $7
ld c, a
ld b, $0
add hl, bc
jr .asm_237b
.asm_235e
ld c, a
ld b, $0
sla c
rl b
sla c
rl b
sla c
rl b
ld hl, $d7ef
ld a, [hli]
ld h, [hl]
ld l, a
add hl, bc
pop af
and $7
ld c, a
ld b, $0
add hl, bc
.asm_237b
ld a, [de]
inc de
and [hl]
push af
ld a, [de]
inc de
ld c, a
ld hl, $d7c9
add hl, bc
pop af
ld [hl], a
pop bc
dec b
jr nz, .asm_233d
pop af
ld [hLoadedROMBank], a
ld [$2000], a
ld hl, $d7c9
ld de, $d7d9
ld b, $4
.asm_239a
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
inc de
dec b
jr nz, .asm_239a
ld hl, $d7c9
ld de, $0000
ld b, $0
ld a, [hl]
and a
jr z, .asm_23c1
.asm_23b5
ld a, [hli]
inc b
and a
jr z, .asm_23c1
ld a, b
cp $11
jr nc, .asm_23ee
jr .asm_23b5
.asm_23c1
ld a, [hli]
inc b
and a
jr nz, .asm_23cd
ld a, b
cp $11
jr nc, .asm_23ee
jr .asm_23c1
.asm_23cd
push de
ld d, $1
ld c, b
dec c
.asm_23d2
ld a, [hli]
inc b
inc d
and a
jr nz, .asm_23d2
dec d
ld a, b
dec a
dec a
and $f
swap c
or c
ld c, a
ld a, d
cp e
pop de
jr c, .asm_23e9
ld e, a
ld d, c
.asm_23e9
ld a, b
cp $10
jr c, .asm_23c1
.asm_23ee
ld a, e
ld [$d7e9], a
and a
ret z
ld a, [hLoadedROMBank]
push af
ld a, $2
ld [hLoadedROMBank], a
ld [$2000], a
push de
ld e, d
ld d, $0
ld hl, $4817 ; todo
add hl, de
ld a, [hl]
ld [$d7ea], a
sla e
rl d
ld hl, $4917 ; todo
add hl, de
ld a, [wBallYPos]
add [hl]
ld [wBallYPos], a
inc hl
ld a, [wBallYPos + 1]
adc [hl]
ld [wBallYPos + 1], a
ld hl, $4b17
add hl, de
ld a, [wBallXPos]
add [hl]
ld [wBallXPos], a
inc hl
ld a, [wBallXPos + 1]
adc [hl]
ld [wBallXPos + 1], a
pop de
pop af
ld [hLoadedROMBank], a
ld [$2000], a
ld a, d
swap a
and $f
ld e, a
ld a, d
and $f
sub e
jr nc, .asm_2449
add $10
.asm_2449
add e
add e
inc a
and $1e
ld c, a
ld b, $0
ld hl, $250e ; todo
add hl, bc
ld a, [wSubTileBallXPos]
add $4
add [hl]
bit 3, a
ld c, b
jr z, .asm_2462
ld c, $2
.asm_2462
ld a, [wSubTileBallYPos]
add $4
inc hl
add [hl]
bit 3, a
jr z, .asm_246e
inc c
.asm_246e
ld hl, wUpperLeftCollisionAttribute
add hl, bc
ld a, [hl]
ld [$d7f5], a
ld hl, $250a ; todo
add hl, bc
ld a, [$d7f3]
add [hl]
ld [$d7f6], a
ld a, [$d7f4]
adc $0
ld [$d7f7], a
ret
Func_248a: ; 0x248a
push af
ld a, [wCurrentStage]
bit 0, a
jr nz, .asm_2495
pop af
and a
ret
.asm_2495
pop af
cp $d0
ccf
ret nc
cp $e0
jr nc, .asm_24ab
sub $d0
sla a
sla a
sla a
ld l, a
ld h, $c4
scf
ret
.asm_24ab
push de
sub $e0
ld b, a
ld a, [wCurrentStage]
cp $6 ; gengar stage buggy?
jr nc, .asm_24e0
bit 4, b
ld hl, $3800
ld a, [$d7af]
jr z, .asm_24c8
res 4, b
ld hl, $3980
ld a, [$d7b3]
.asm_24c8
ld de, $0080
cp $7
jr c, .asm_24d5
add hl, de
cp $e
jr c, .asm_24d5
add hl, de
.asm_24d5
ld e, b
sla e
sla e
sla e
add hl, de
pop de
scf
ret
.asm_24e0
bit 4, b
ld hl, $3b00
ld a, [$d7af]
jr z, .asm_24f2
res 4, b
ld hl, $3c80
ld a, [$d7b3]
.asm_24f2
ld de, $0080
cp $7
jr c, .asm_24ff
add hl, de
cp $e
jr c, .asm_24ff
add hl, de
.asm_24ff
ld e, b
sla e
sla e
sla e
add hl, de
pop de
scf
ret
INCBIN "baserom.gbc",$250a,$252e - $250a
SubTileXPos_CollisionDataPointers: ; 0x252e
dw SubTileXPos_CollisionData0
dw SubTileXPos_CollisionData1
dw $259E
dw $25CE
dw $25FE
dw $262E
dw $265E
dw $268E
SubTileXPos_CollisionData0: ; 0x253e
db $00, $10, $0B
db $00, $08, $0C
db $00, $04, $0D
db $01, $40, $0A
db $01, $01, $0E
db $03, $80, $09
db $13, $80, $0F
db $04, $80, $08
db $14, $80, $00
db $05, $80, $07
db $15, $80, $01
db $07, $40, $06
db $07, $01, $02
db $08, $10, $05
db $08, $08, $04
db $08, $04, $03
SubTileXPos_CollisionData1: ; 0x256e
db $00, $08, $0B
db $00, $04, $0C
db $00, $02, $0D
db $01, $20, $0A
db $11, $80, $0E
db $03, $40, $09
db $13, $40, $0F
db $04, $40, $08
db $14, $40, $00
db $05, $40, $07
db $15, $40, $01
db $07, $20, $06
db $17, $80, $02
db $08, $08, $05
db $08, $04, $04
db $08, $02, $03
INCBIN "baserom.gbc",$259e,$2720 - $259e
Func_2720: ; 0x2720
ld a, $ff
ld [$d4ea], a
call Func_272f
ld a, [$d4ea]
ld [$d4ec], a
ret
Func_272f: ; 0x272f
; not collisions
ld a, [wCurrentStage]
call CallInFollowingTable
CallTable_2735: ; 0x2735
; STAGE_RED_FIELD_TOP
dw Func_143e1
db Bank(Func_143e1), $00
; STAGE_RED_FIELD_BOTTOM
dw Func_143f9
db Bank(Func_143f9), $00
dw Func_18061
db Bank(Func_18061), $00
dw Func_18062
db Bank(Func_18062), $00
; STAGE_BLUE_FIELD_TOP
dw Func_1c520
db Bank(Func_1c520), $00
; STAGE_BLUE_FIELD_BOTTOM
dw Func_1c536
db Bank(Func_1c536), $00
; STAGE_GENGAR_BONUS
dw Func_181b1
db Bank(Func_181b1), $00
; STAGE_GENGAR_BONUS
dw Func_181b1
db Bank(Func_181b1), $00
; STAGE_MEWTWO_BONUS
dw Func_19330
db Bank(Func_19330), $00
; STAGE_MEWTWO_BONUS
dw Func_19330
db Bank(Func_19330), $00
; STAGE_MEOWTH_BONUS
dw Func_2414d
db Bank(Func_2414d), $00
; STAGE_MEOWTH_BONUS
dw Func_2414d
db Bank(Func_2414d), $00
; STAGE_DIGLETT_BONUS
dw Func_19ab3
db Bank(Func_19ab3), $00
; STAGE_DIGLETT_BONUS
dw Func_19ab3
db Bank(Func_19ab3), $00
; STAGE_SEEL_BONUS
dw Func_25bbc
db Bank(Func_25bbc), $00
; STAGE_SEEL_BONUS
dw Func_25bbc
db Bank(Func_25bbc), $00
Func_2775: ; 0x2775
ld a, [$d4ea]
inc a
jr nz, .asm_27a2
ld a, [bc]
bit 7, a
jr nz, .asm_27a2
push bc
push de
call nc, Func_27da
pop hl
call c, Func_27a4
ld a, [$d4ea]
ld b, a
pop hl
ld [hl], $0
jr nc, .asm_27a2
ld a, [$d4ec]
cp b
jr z, .asm_27a2
ld a, [$d4eb]
ld [hli], a
ld a, [$d4ea]
ld [hl], a
scf
ret
.asm_27a2
and a
ret
Func_27a4: ; 0x27a4
xor a
ld [$d4eb], a
ld a, [hli]
ld d, a
ld a, [hli]
ld e, a
ld a, [wBallXPos + 1]
ld b, a
ld a, [wBallYPos + 1]
ld c, a
.asm_27b4
ld a, [$d4eb]
inc a
ld [$d4eb], a
ld a, [hli]
ld [$d4ea], a
cp $ff
ret z
ld a, [hli]
sub b
bit 7, a
jr z, .asm_27ca
cpl
inc a
.asm_27ca
cp d
ld a, [hli]
jr nc, .asm_27b4
sub c
bit 7, a
jr z, .asm_27d5
cpl
inc a
.asm_27d5
cp e
jr nc, .asm_27b4
scf
ret
Func_27da: ; 0x27da
ld a, [hli]
and a
jr z, .asm_27e8
dec hl
ld a, [$d4af]
ld c, a
ld b, $0
add hl, bc
ld c, [hl]
add hl, bc
.asm_27e8
ld a, [$d7e9]
and a
ret z
ld a, [$d7f5]
ld b, a
ld c, $ff
.asm_27f3
inc c
ld a, [hli]
cp $ff
ret z
cp b
jr nz, .asm_27f3
scf
ret
Func_27fd: ; 0x27fd
ld a, [wBallXPos + 1]
ld b, a
ld a, [wBallYPos + 1]
ld c, a
ld d, $0
.asm_2807
ld a, [hli]
and a
ret z
inc d
ld a, [hli]
sub b
cp $e8
ld a, [hli]
jr c, .asm_2807
sub c
cp $e8
jr c, .asm_2807
ld a, d
ld [$d578], a
ret
Func_281c: ; 0x281c
ld a, [wCurrentStage]
call CallInFollowingTable
CallTable_2822: ; 0x2822
; not collisions
; STAGE_RED_FIELD_TOP
dw Func_1460e
db Bank(Func_1460e), $00
; STAGE_RED_FIELD_BOTTOM
dw Func_14652
db Bank(Func_14652), $00
dw Func_1806d
db Bank(Func_1806d), $00
dw Func_1806e
db Bank(Func_1806e), $00
; STAGE_BLUE_FIELD_TOP
dw Func_1c715
db Bank(Func_1c715), $00
; STAGE_BLUE_FIELD_BOTTOM
dw Func_1c769
db Bank(Func_1c769), $00
; STAGE_GENGAR_BONUS
dw Func_18377
db Bank(Func_18377), $00
; STAGE_GENGAR_BONUS
dw Func_18377
db Bank(Func_18377), $00
; STAGE_MEWTWO_BONUS
dw Func_19451
db Bank(Func_19451), $00
; STAGE_MEWTWO_BONUS
dw Func_19451
db Bank(Func_19451), $00
; STAGE_MEOWTH_BONUS
dw Func_2442a
db Bank(Func_2442a), $00
; STAGE_MEOWTH_BONUS
dw Func_2442a
db Bank(Func_2442a), $00
; STAGE_DIGLETT_BONUS
dw Func_19b88
db Bank(Func_19b88), $00
; STAGE_DIGLETT_BONUS
dw Func_19b88
db Bank(Func_19b88), $00
; STAGE_SEEL_BONUS
dw Func_25c5a
db Bank(Func_25c5a), $00
; STAGE_SEEL_BONUS
dw Func_25c5a
db Bank(Func_25c5a), $00
Func_2862: ; 0x2862
ld a, [$d7be]
and a
jr nz, .asm_287c
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_287b
ld a, $0
ld hl, $2890
ld de, $0052
ld bc, $0004
call Func_790
.asm_287b
ret
.asm_287c
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_288f
ld a, $0
ld hl, $2894
ld de, $0052
ld bc, $0004
call Func_790
.asm_288f
ret
INCBIN "baserom.gbc",$2890,$28a0 - $2890
Func_28a0: ; 0x28a0
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
inc de
xor a
ld [de], a
ret
Func_28a9: ; 0x28a9
ld a, [de]
and a
ret z
dec a
ld [de], a
ret nz
push de
inc de
inc de
ld a, [de]
inc a
ld [de], a
ld c, a
ld b, $0
sla c
rl b
add hl, bc
ld a, [hli]
pop de
and a
scf
ret z
push de
ld [de], a
inc de
ld a, [hli]
ld [de], a
pop de
ret
INCBIN "baserom.gbc",$28c9,$30db - $28c9
Func_30db: ; 0x30db
ld a, $86
ld [$ffa6], a
ld a, $1
ld [$d5ca], a
ld [$d5cb], a
ret
Func_30e8: ; 0x30e8
ld a, $81
ld hl, $c600
ld b, $40
.asm_30ef
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
dec b
jr nz, .asm_30ef
xor a
ld [$d5cc], a
ld [$d5d4], a
ld [$d5dc], a
ld [$d5e4], a
ld [$d5e9], a
ld [$d5ee], a
ret
Func_310a: ; 0x310a
ld a, $81
ld hl, $c640
ld b, $5
.asm_3111
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
dec b
jr nz, .asm_3111
ld hl, $c6c0
ld b, $5
.asm_311d
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
dec b
jr nz, .asm_311d
ret
Func_3125: ; 0x3125
ld b, $1
jr asm_312b
Func_3129: ; 0x3129
ld b, $0
asm_312b: ; 0x312b
ld a, [$d805]
and a
jp nz, Func_3268
.asm_3132
ld a, [hli]
and a
ret z
ld c, $81
cp $20
jr z, .asm_3175
cp $2c
jr z, .asm_3178
cp $24
jr z, .asm_317c
cp $5c
jr z, .asm_3184
cp $60
jr z, .asm_318d
cp $21
jr z, .asm_31a8
cp $78
jr z, .asm_31b1
cp $65
jr z, .asm_3196
cp $2a
jr z, .asm_319f
cp $2e
jr z, .asm_31ba
cp $3a
jr z, .asm_31c3
cp $30
jr c, .asm_316b
cp $3a
jr c, .asm_31cc
.asm_316b
cp $41
jr c, .asm_3173
cp $5b
jr c, .asm_31d0
.asm_3173
jr .asm_3132
.asm_3175
ld a, c
jr .asm_31d2
.asm_3178
inc c
dec e
jr .asm_31d3
.asm_317c
xor a
call Func_31e1
ld a, $83
jr .asm_31d2
.asm_3184
ld a, $1
call Func_31e1
ld a, $84
jr .asm_31d2
.asm_318d
ld a, $2
call Func_31e1
ld a, $85
jr .asm_31d2
.asm_3196
ld a, $3
call Func_31e1
ld a, $83
jr .asm_31d2
.asm_319f
ld a, $4
call Func_31e1
ld a, $87
jr .asm_31d2
.asm_31a8
ld a, $5
call Func_31e1
ld a, $85
jr .asm_31d2
.asm_31b1
ld a, $6
call Func_31e1
ld a, $85
jr .asm_31d2
.asm_31ba
ld a, $7
call Func_31e1
ld a, $86
jr .asm_31d2
.asm_31c3
ld a, $8
call Func_31e1
ld a, $83
jr .asm_31d2
.asm_31cc
add $56
jr .asm_31d2
.asm_31d0
add $bf
.asm_31d2
ld [de], a
.asm_31d3
bit 0, b
jr nz, .asm_31dd
set 7, e
ld a, c
ld [de], a
res 7, e
.asm_31dd
inc e
jp .asm_3132
Func_31e1: ; 0x31e1
push bc
push de
push hl
ld c, a
ld a, [hGameBoyColorFlag]
and a
ld a, c
jr z, .asm_31ed
add $9
.asm_31ed
ld c, a
sla a
sla a
add c
ld c, a
ld b, $0
ld hl, $320e ; todo
add hl, bc
ld a, [hli]
ld e, a
ld a, [hli]
ld d, a
ld a, [hli]
ld b, a
ld a, [hli]
ld h, [hl]
ld l, a
ld a, b
ld bc, $0010
call LoadVRAMData
pop hl
pop de
pop bc
ret
INCBIN "baserom.gbc",$320e,$3268 - $320e
Func_3268: ; 0x3268
ld a, [hli]
and a
ret z
ld c, $81
cp $20
jr z, .asm_3297
cp $2c
jr z, .asm_329a
cp $30
jr c, .asm_327d
cp $3a
jr c, .asm_329e
.asm_327d
cp $a0
jr c, .asm_3285
cp $e0
jr c, .asm_328f
.asm_3285
cp $e0
jr c, .asm_328d
cp $f4
jr c, .asm_3293
.asm_328d
jr Func_3268
.asm_328f
sub $80
jr .asm_32a0
.asm_3293
sub $50
jr .asm_32a0
.asm_3297
ld a, c
jr .asm_32a0
.asm_329a
inc c
dec e
jr .asm_32a1
.asm_329e
add $56
.asm_32a0
ld [de], a
.asm_32a1
set 7, e
ld a, c
ld [de], a
res 7, e
inc e
jr Func_3268
Func_32aa: ; 0x32aa
ld a, $1
ld [hli], a
ld a, [de]
ld [hli], a
ld [hli], a
inc de
ld a, [de]
ld [hli], a
inc de
ld a, [de]
ld [hli], a
inc de
ld a, [de]
ld [hli], a
inc de
ld a, [de]
ld [hli], a
push af
inc de
ld a, [de]
ld [hli], a
inc de
pop af
ld l, a
ld h, $c5
.asm_32c5
ld a, [de]
ld [hli], a
inc de
and a
jr nz, .asm_32c5
ret
Func_32cc: ; 0x32cc
ld a, $1
ld [hli], a
ld a, [de]
ld [hli], a
ld [hli], a
inc de
ld a, [de]
ld [hli], a
inc de
ld a, [de]
ld [hli], a
inc de
ld a, [de]
ld [hli], a
inc de
ld a, [de]
ld [hli], a
push af
inc de
ld a, [de]
ld [hli], a
inc de
pop af
ld e, a
ld d, $c5
ld hl, [sp+$5]
ld bc, $0801
.asm_32ec
ld a, [hl]
swap a
and $f
call Func_3309
dec b
ld a, [hld]
and $f
call Func_3309
dec b
jr nz, .asm_32ec
ld a, $30
ld [de], a
inc de
ld a, $20
ld [de], a
inc de
xor a
ld [de], a
ret
Func_3309: ; 0x3309
jr nz, .asm_3312
ld a, b
dec a
jr z, .asm_3312
ld a, c
and a
ret nz
.asm_3312
add $30
ld [de], a
inc de
ld c, $0
ld a, b
cp $6
jr z, .asm_3320
cp $3
ret nz
.asm_3320
ld a, $2c
ld [de], a
inc de
ret
Func_3325: ; 0x3325
ld a, [hli]
and a
ret z
ld a, [hl]
dec a
ld [hli], a
ret nz
ld a, [hld]
ld [hl], a
inc hl
inc hl
push hl
ld a, [hli]
ld e, a
cp [hl]
inc hl
jr nz, .asm_333c
ld a, [hl]
dec a
ld [hl], a
jr nz, .asm_333d
.asm_333c
dec e
.asm_333d
push de
ld d, $c6
inc hl
push hl
ld l, [hl]
ld h, $c5
call Func_3129
pop hl
inc hl
ld a, [hl]
dec a
ld [hl], a
pop de
pop hl
ld [hl], e
ret nz
dec hl
dec hl
dec hl
ld [hl], $0
ret
Func_3357: ; 0x3357
ld a, $1
ld [hli], a
ld a, [de]
ld [hli], a
inc de
ld a, [de]
ld [hli], a
push af
inc de
ld a, [de]
ld [hli], a
inc de
ld a, [de]
ld [hli], a
inc de
pop af
ld l, a
ld h, $c5
.asm_336b
ld a, [de]
ld [hli], a
inc de
and a
jr nz, .asm_336b
ret
Func_3372: ; 0x3372
ld a, $1
ld [hli], a
ld a, [de]
ld [hli], a
inc de
ld a, [de]
ld [hli], a
push af
inc de
ld a, [de]
ld [hli], a
inc de
ld a, [de]
ld [hli], a
pop af
ld e, a
ld d, $c5
ld hl, [sp+$5]
ld bc, $0801
.asm_338a
ld a, [hl]
swap a
and $f
call Func_33a7
dec b
ld a, [hld]
and $f
call Func_33a7
dec b
jr nz, .asm_338a
ld a, $30
ld [de], a
inc de
ld a, $20
ld [de], a
inc de
xor a
ld [de], a
ret
Func_33a7: ; 0x33a7
jr nz, .asm_33b0
ld a, b
dec a
jr z, .asm_33b0
ld a, c
and a
ret nz
.asm_33b0
add $30
ld [de], a
inc de
ld c, $0
ld a, b
cp $6
jr z, .asm_33be
cp $3
ret nz
.asm_33be
ld a, $2c
ld [de], a
inc de
ret
Func_33c3: ; 0x33c3
ld a, [hli]
and a
ret z
ld a, [hli]
ld e, a
ld d, $c6
push hl
ld l, [hl]
ld h, $c5
call Func_3129
pop hl
inc hl
ld a, [hl]
dec a
ld [hli], a
ret nz
ld a, [hl]
dec a
ld [hld], a
bit 7, a
ret z
dec hl
dec hl
dec hl
ld [hl], $0
ret
Func_33e3: ; 0x33e3
ld a, [$d5ca]
and a
jr nz, .asm_33ed
ld [$d5cb], a
ret
.asm_33ed
ld c, $0
ld a, [$d5cc]
and a
jr z, .asm_33fe
push bc
ld hl, $d5cc
call Func_3325
pop bc
inc c
.asm_33fe
ld a, [$d5d4]
and a
jr z, .asm_340d
push bc
ld hl, $d5d4
call Func_3325
pop bc
inc c
.asm_340d
ld a, [$d5dc]
and a
jr z, .asm_341c
push bc
ld hl, $d5dc
call Func_3325
pop bc
inc c
.asm_341c
ld a, [$d5e4]
and a
jr z, .asm_342b
push bc
ld hl, $d5e4
call Func_33c3
pop bc
inc c
.asm_342b
ld a, [$d5e9]
and a
jr z, .asm_343a
push bc
ld hl, $d5e9
call Func_33c3
pop bc
inc c
.asm_343a
ld a, [$d5ee]
and a
jr z, .asm_3449
push bc
ld hl, $d5ee
call Func_33c3
pop bc
inc c
.asm_3449
ld a, c
and a
ret nz
ld [$d5ca], a
call Func_30e8
ld a, [hGameBoyColorFlag]
and a
jr nz, .asm_3466
ld a, $18
ld hl, $7030
ld de, $8830
ld bc, $0040
call Func_735
ret
.asm_3466
ld a, $27
ld hl, $4030
ld de, $8830
ld bc, $0040
call Func_735
ret
Func_3475: ; 0x3475
xor a
ld [hJoypadState], a
ld [hNewlyPressedButtons], a
ld [hPressedButtons], a
call HandleTilts
ld a, [wCurrentStage]
bit 0, a
ld [$ff8a], a
ld a, Bank(HandleFlippers)
ld hl, HandleFlippers
call nz, BankSwitch
ld [$ff8a], a
ld a, Bank(Func_84b7)
ld hl, Func_84b7
call BankSwitch
call Func_33e3
call Func_926
rst $10
ld a, [$d5ca]
and a
jr nz, Func_3475
ret
INCBIN "baserom.gbc",$34a6,$351c - $34a6
Func_351c: ; 0x351c
ld hl, $d464
ld a, e
ld [hli], a
ld a, d
ld [hli], a
ld a, c
ld [hli], a
ld a, b
ld [hli], a
xor a
ld [hli], a
ld [hl], a
ld bc, $d464
ld [$ff8a], a
ld a, Bank(Func_8588)
ld hl, Func_8588
call BankSwitch
ret
Func_3538: ; 0x3538
ld hl, $d47a
ld a, [hl]
add e
daa
ld [hli], a
ld a, [hl]
adc d
daa
ld [hli], a
ld a, [hl]
adc c
daa
ld [hli], a
ld a, [hl]
adc b
daa
ld [hli], a
ret nc
ld hl, $d47a
ld a, $99
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ret
Func_3556: ; 0x3556
ld a, [$d47a]
ld e, a
ld a, [$d47b]
ld d, a
ld a, [$d47c]
ld c, a
ld a, [$d47d]
ld b, a
ret
INCBIN "baserom.gbc",$3567,$3579 - $3567
Func_3579: ; 0x3579
ld hl, $d47a
xor a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ret
HandleTilts: ; 0x3582
call HandleLeftTilt
call HandleRightTilt
call HandleUpperTilt
ret
HandleLeftTilt: ; 0x358c
ld a, [wLeftTiltReset]
and a
jr nz, .tiltCoolDown
ld hl, wKeyConfigLeftTilt
call IsKeyPressed2
jr z, .tiltCoolDown
ld a, [wLeftTiltCounter]
cp $3
jr z, .startCoolDown
inc a
ld [wLeftTiltCounter], a
cp $1
jr nz, .skipSoundEffect
ld de, $003f
call PlaySoundEffect
.skipSoundEffect
ld a, [$d548]
ld hl, $d549
and [hl]
jr z, .skipBallMovement
ld a, [wBallXPos + 1]
dec a ; move ball's position to the left by 1 pixel
ld [wBallXPos + 1], a
.skipBallMovement
ld a, [$d79f]
inc a
ld [$d79f], a
ld a, $1
ld [wLeftTiltPushing], a
ret
.startCoolDown
ld a, $1
ld [wLeftTiltReset], a
.tiltCoolDown
xor a
ld [wLeftTiltPushing], a
ld a, [wLeftTiltCounter]
and a
jr z, .done
dec a
ld [wLeftTiltCounter], a
ld a, [$d79f]
dec a
ld [$d79f], a
ret
.done
ld hl, wKeyConfigLeftTilt
call IsKeyPressed2
ret nz
xor a
ld [wLeftTiltReset], a
ret
HandleRightTilt: ; 0x35f3
ld a, [wRightTiltReset]
and a
jr nz, .tiltCoolDown
ld hl, wKeyConfigRightTilt
call IsKeyPressed2
jr z, .tiltCoolDown
ld a, [wRightTiltCounter]
cp $3
jr z, .startCoolDown
inc a
ld [wRightTiltCounter], a
cp $1
jr nz, .skipSoundEffect
ld de, $003f
call PlaySoundEffect
.skipSoundEffect
ld a, [$d548]
ld hl, $d549
and [hl]
jr z, .skipBallMovement
ld a, [wBallXPos + 1]
inc a ; move ball's position to the right by 1 pixel
ld [wBallXPos + 1], a
.skipBallMovement
ld a, [$d79f]
dec a
ld [$d79f], a
ld a, $1
ld [wRightTiltPushing], a
ret
.startCoolDown
ld a, $1
ld [wRightTiltReset], a
.tiltCoolDown
xor a
ld [wRightTiltPushing], a
ld a, [wRightTiltCounter]
and a
jr z, .done
dec a
ld [wRightTiltCounter], a
ld a, [$d79f]
inc a
ld [$d79f], a
ret
.done
ld hl, wKeyConfigRightTilt
call IsKeyPressed2
ret nz
xor a
ld [wRightTiltReset], a
ret
HandleUpperTilt: ; 0x365a
ld a, [wUpperTiltReset]
and a
jr nz, .tiltCoolDown
ld hl, wKeyConfigUpperTilt
call IsKeyPressed2
jr z, .tiltCoolDown
ld a, [wUpperTiltCounter]
cp $4
jr z, .startCoolDown
inc a
ld [wUpperTiltCounter], a
cp $1
jr nz, .skipSoundEffect
ld de, $003f
call PlaySoundEffect
.skipSoundEffect
ld a, [$d548]
ld hl, $d549
and [hl]
jr z, .skipBallMovement
ld a, [wBallYPos + 1]
inc a ; move ball's position down by 1 pixel
ld [wBallYPos + 1], a
.skipBallMovement
ld a, [$d7a0]
dec a
ld [$d7a0], a
ld a, $1
ld [wUpperTiltPushing], a
ret
.startCoolDown
ld a, $1
ld [wUpperTiltReset], a
.tiltCoolDown
xor a
ld [wUpperTiltPushing], a
ld a, [wUpperTiltCounter]
and a
jr z, .done
dec a
ld [wUpperTiltCounter], a
ld a, [$d7a0]
inc a
ld [$d7a0], a
ret
.done
ld hl, wKeyConfigUpperTilt
call IsKeyPressed2
ret nz
xor a
ld [wUpperTiltReset], a
ret
ApplyTiltForces: ; 0x36c1
ld a, [$d548]
ld hl, $d549
and [hl]
ret z
ld c, $0
ld a, [wUpperTiltPushing]
srl a
rl c
ld a, [wRightTiltPushing]
srl a
rl c
ld a, [wLeftTiltPushing]
srl a
rl c
ld b, $0
sla c
ld hl, $372d ; todo
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
bit 7, h
ret nz
ld a, [$d7ea]
ld c, a
ld b, $0
sla c
rl b
sla c
rl b
add hl, bc
ld a, [hLoadedROMBank]
push af
ld a, $3c
ld [hLoadedROMBank], a
ld [$2000], a
ld a, [wBallXVelocity]
add [hl]
ld [wBallXVelocity], a
inc hl
ld a, [wBallXVelocity + 1]
adc [hl]
ld [wBallXVelocity + 1], a
inc hl
ld a, [wBallYVelocity]
add [hl]
ld [wBallYVelocity], a
inc hl
ld a, [wBallYVelocity + 1]
adc [hl]
ld [wBallYVelocity + 1], a
pop af
ld [hLoadedROMBank], a
ld [$2000], a
ret
INCBIN "baserom.gbc",$372d,$4000 - $372d
SECTION "bank1", ROMX, BANK[$1]
OAMDataPointers: ; 0x4000
dw BallSpin0OAM
dw BallSpin1OAM
dw BallSpin2OAM
dw BallSpin3OAM
dw BallSpin4OAM
dw BallSpin5OAM
dw BallSpin6OAM
dw BallSpin7OAM
dw OAMData_8
dw OAMData_9
dw OAMData_a
dw OAMData_b
dw OAMData_c
dw OAMData_d
dw OAMData_e
dw OAMData_f
dw OAMData_10
dw OAMData_11
dw OAMData_12
dw OAMData_13
dw OAMData_14
dw OAMData_15
dw OAMData_16
dw OAMData_17
dw OAMData_18
dw OAMData_19
dw OAMData_1a
dw OAMData_1b
dw OAMData_1c
dw OAMData_1d
dw OAMData_1e
dw OAMData_1f
dw OAMData_20
dw OAMData_21
dw OAMData_22
dw OAMData_23
dw OAMData_24
dw OAMData_25
dw OAMData_26
dw OAMData_27
dw OAMData_28
dw OAMData_29
dw OAMData_2a
dw OAMData_2b
dw OAMData_2c
dw OAMData_2d
dw OAMData_2e
dw OAMData_2f
dw OAMData_30
dw OAMData_31
dw OAMData_32
dw OAMData_33
dw OAMData_34
dw OAMData_35
dw OAMData_36
dw OAMData_37
dw OAMData_38
dw OAMData_39
dw OAMData_3a
dw OAMData_3b
dw OAMData_3c
dw OAMData_3d
dw OAMData_3e
dw OAMData_3f
dw OAMData_40
dw OAMData_41
dw OAMData_42
dw OAMData_43
dw OAMData_44
dw OAMData_45
dw OAMData_46
dw OAMData_47
dw OAMData_48
dw OAMData_49
dw OAMData_4a
dw OAMData_4b
dw OAMData_4c
dw OAMData_4d
dw OAMData_4e
dw OAMData_4f
dw OAMData_50
dw OAMData_51
dw OAMData_52
dw OAMData_53
dw OAMData_54
dw OAMData_55
dw OAMData_56
dw OAMData_57
dw OAMData_58
dw OAMData_59
dw TitlescreenPikachuBlinkFrame1OAM
dw TitlescreenPikachuBlinkFrame2OAM
dw TitlescreenPikachuBlinkFrame3OAM
dw TitlescreenPokeball1OAM
dw TitlescreenPokeball2OAM
dw TitlescreenPokeball3OAM
dw TitlescreenPokeball4OAM
dw TitlescreenPokeball5OAM
dw OAMData_62
dw OAMData_63
dw OAMData_64
dw OAMData_65
dw OAMData_66
dw OAMData_67
dw OAMData_68
dw OAMData_69
dw PokeDexTextOAM
dw OAMData_6b
dw Digit0OAM
dw Digit1OAM
dw Digit2OAM
dw Digit3OAM
dw Digit4OAM
dw Digit5OAM
dw Digit6OAM
dw Digit7OAM
dw Digit8OAM
dw Digit9OAM
dw SlashCharacterOAM
dw OAMData_77
dw OAMData_78
dw OAMData_79
dw OAMData_7a
dw OAMData_7b
dw OAMData_7c
dw OAMData_7d
dw OAMData_7e
dw OAMData_7f
dw OAMData_80
dw OAMData_81
dw OAMData_82
dw OAMData_83
dw OAMData_84
dw OAMData_85
dw OAMData_86
dw OAMData_87
dw OAMData_88
dw OAMData_89
dw OAMData_8a
dw OAMData_8b
dw OAMData_8c
dw OAMData_8d
dw OAMData_8e
dw OAMData_8f
dw OAMData_90
dw OAMData_91
dw OAMData_92
dw OAMData_93
dw OAMData_94
dw OAMData_95
dw OAMData_96
dw OAMData_97
dw OAMData_98
dw OAMData_99
dw OAMData_9a
dw OAMData_9b
dw OAMData_9c
dw OAMData_9d
dw FieldSelectRedStageBorderOAM
dw FieldSelectBlueStageBorderOAM
dw OAMData_a0
dw OAMData_a1
dw OAMData_a2
dw OAMData_a3
dw OAMData_a4
dw OAMData_a5
dw OAMData_a6
dw OAMData_a7
dw OAMData_a8
dw OAMData_a9
dw OAMData_aa
dw OAMData_ab
dw OAMData_ac
dw OAMData_ad
dw OAMData_ae
dw OAMData_af
dw OAMData_b0
dw Timer0DigitOAM
dw Timer1DigitOAM
dw Timer2DigitOAM
dw Timer3DigitOAM
dw Timer4DigitOAM
dw Timer5DigitOAM
dw Timer6DigitOAM
dw Timer7DigitOAM
dw Timer8DigitOAM
dw Timer9DigitOAM
dw TimerColonOAM
dw OAMData_bc
dw OAMData_bd
dw OAMData_be
dw OAMData_bf
dw OAMData_c0
dw OAMData_c1
dw OAMData_c2
dw OAMData_c3
dw OAMData_c4
dw OAMData_c5
dw OAMData_c6
dw OAMData_c7
dw OAMData_c8
dw OAMData_c9
dw OAMData_ca
dw OAMData_cb
dw OAMData_cc
dw OAMData_cd
dw OAMData_ce
dw OAMData_cf
dw OAMData_d0
dw OAMData_d1
dw OAMData_d2
dw OAMData_d3
dw OAMData_d4
dw OAMData_d5
dw OAMData_d6
dw OAMData_d7
dw OAMData_d8
dw OAMData_d9
dw OAMData_da
dw OAMData_db
dw OAMData_dc
dw OAMData_dd
dw OAMData_de
dw OAMData_df
dw OAMData_e0
dw OAMData_e1
dw OAMData_e2
dw OAMData_e3
dw OAMData_e4
dw OAMData_e5
dw OAMData_e6
dw OAMData_e7
dw OAMData_e8
dw OAMData_e9
dw OAMData_ea
dw OAMData_eb
dw OAMData_ec
dw OAMData_ed
dw OAMData_ee
dw OAMData_ef
dw OAMData_f0
dw OAMData_f1
dw OAMData_f2
dw OAMData_f3
dw OAMData_f4
dw OAMData_f5
dw OAMData_f6
dw OAMData_f7
dw OAMData_f8
BallSpin0OAM: ; 0x41f2
db $08, $08, $42, $00
db $08, $00, $40, $00
db $80 ; terminator
BallSpin1OAM: ; 0x41fb
db $08, $08, $46, $00
db $08, $00, $44, $00
db $80 ; terminator
BallSpin2OAM: ; 0x4204
db $08, $08, $4a, $00
db $08, $00, $48, $00
db $80 ; terminator
BallSpin3OAM: ; 0x420d
db $08, $08, $4e, $00
db $08, $00, $4c, $00
db $80 ; terminator
BallSpin4OAM: ; 0x4216
db $08, $08, $52, $00
db $08, $00, $50, $00
db $80 ; terminator
BallSpin5OAM: ; 0x421f
db $08, $08, $56, $00
db $08, $00, $54, $00
db $80 ; terminator
BallSpin6OAM: ; 0x4228
db $08, $08, $5a, $00
db $08, $00, $58, $00
db $80 ; terminator
BallSpin7OAM: ; 0x4231
db $08, $08, $5e, $00
db $08, $00, $5c, $00
db $80 ; terminator
OAMData_8: ; 0x423a
db $0c, $05, $64, $02
db $0a, $fd, $62, $02
db $14, $f5, $60, $02
db $80 ; terminator
OAMData_9: ; 0x4247
db $0c, $05, $6a, $02
db $04, $fd, $68, $02
db $0c, $f5, $66, $02
db $80 ; terminator
OAMData_a: ; 0x4254
db $0a, $05, $70, $02
db $03, $fd, $6e, $02
db $fd, $f5, $6c, $02
db $80 ; terminator
OAMData_b: ; 0x4261
db $0c, $03, $64, $22
db $0a, $0b, $62, $22
db $14, $13, $60, $22
db $80 ; terminator
OAMData_c: ; 0x426e
db $0c, $03, $6a, $22
db $04, $0b, $68, $22
db $0c, $13, $66, $22
db $80 ; terminator
OAMData_d: ; 0x427b
db $0a, $03, $70, $22
db $03, $0b, $6e, $22
db $fd, $13, $6c, $22
db $80 ; terminator
OAMData_e: ; 0x4288
db $00, $09, $74, $04
db $00, $01, $72, $04
db $80 ; terminator
OAMData_f: ; 0x4291
db $00, $01, $76, $04
db $00, $09, $78, $04
db $80 ; terminator
OAMData_10: ; 0x429a
db $00, $09, $7c, $04
db $00, $01, $7a, $04
db $80 ; terminator
OAMData_11: ; 0x42a3
db $f5, $01, $3d, $51
db $f1, $06, $3e, $31
db $00, $09, $7c, $04
db $00, $01, $7a, $04
db $80 ; terminator
OAMData_12: ; 0x42b4
db $f1, $07, $3c, $11
db $f1, $02, $3e, $11
db $00, $09, $7c, $04
db $00, $01, $7a, $04
db $80 ; terminator
OAMData_13: ; 0x42c5
db $e9, $06, $3e, $31
db $e9, $01, $3c, $31
db $f1, $00, $3e, $31
db $f1, $08, $3c, $31
db $00, $09, $7c, $04
db $00, $01, $7a, $04
db $80 ; terminator
OAMData_14: ; 0x42de
db $e8, $01, $3e, $11
db $e8, $06, $3c, $11
db $f3, $01, $3c, $31
db $f3, $05, $3e, $31
db $00, $09, $7c, $04
db $00, $01, $7a, $04
db $80 ; terminator
OAMData_15: ; 0x42f7
db $e5, $09, $3e, $11
db $f1, $07, $3c, $11
db $e9, $02, $3f, $51
db $f2, $01, $3c, $31
db $00, $09, $7c, $04
db $00, $01, $7a, $04
db $80 ; terminator
OAMData_16: ; 0x4310
db $e8, $01, $3d, $51
db $f5, $00, $3f, $71
db $f2, $06, $3e, $31
db $e6, $07, $3c, $11
db $00, $09, $7c, $04
db $00, $01, $7a, $04
db $80 ; terminator
OAMData_17: ; 0x4329
db $0c, $05, $64, $11
db $0a, $fd, $62, $11
db $14, $f5, $60, $11
db $80 ; terminator
OAMData_18: ; 0x4336
db $0c, $03, $64, $31
db $0a, $0b, $62, $31
db $14, $13, $60, $31
db $80 ; terminator
OAMData_19: ; 0x4343
db $00, $08, $a2, $02
db $00, $00, $a0, $02
db $80 ; terminator
OAMData_1a: ; 0x434c
db $00, $10, $9e, $02
db $00, $08, $9c, $02
db $00, $00, $9a, $02
db $00, $f8, $98, $02
db $f0, $10, $96, $02
db $f0, $08, $94, $02
db $f0, $00, $92, $02
db $f0, $f8, $90, $02
db $80 ; terminator
OAMData_1b: ; 0x436d
db $01, $0f, $a7, $62
db $ff, $f7, $7f, $62
db $e7, $07, $7e, $02
db $e7, $fb, $a6, $02
db $f3, $f4, $a5, $42
db $e7, $12, $a6, $22
db $fd, $fd, $a7, $42
db $ef, $fa, $a6, $02
db $ed, $0c, $a6, $22
db $ef, $13, $a4, $22
db $e6, $02, $a5, $42
db $02, $05, $a7, $62
db $fc, $0b, $a7, $62
db $f7, $f9, $a4, $02
db $fb, $10, $a5, $62
db $f5, $09, $42, $00
db $f5, $01, $40, $00
db $80 ; terminator
OAMData_1c: ; 0x43b2
db $02, $11, $7f, $42
db $e6, $f9, $7e, $22
db $e6, $0f, $7e, $02
db $f5, $f0, $a5, $42
db $05, $05, $a7, $62
db $f0, $09, $42, $00
db $f0, $01, $40, $00
db $f5, $17, $a5, $62
db $01, $f7, $7f, $62
db $80 ; terminator
OAMData_1d: ; 0x43d7
db $ee, $09, $42, $00
db $ee, $01, $40, $00
db $80 ; terminator
OAMData_1e: ; 0x43e0
db $ed, $09, $42, $00
db $ed, $01, $40, $00
db $80 ; terminator
OAMData_1f: ; 0x43e9
db $ee, $09, $42, $00
db $ee, $01, $40, $00
db $80 ; terminator
OAMData_20: ; 0x43f2
db $f0, $09, $42, $00
db $f0, $01, $40, $00
db $80 ; terminator
OAMData_21: ; 0x43fb
db $f5, $09, $42, $00
db $f5, $01, $40, $00
db $80 ; terminator
OAMData_22: ; 0x4404
db $fb, $09, $42, $00
db $fb, $01, $40, $00
db $80 ; terminator
OAMData_23: ; 0x440d
db $02, $09, $42, $00
db $02, $01, $40, $00
db $80 ; terminator
OAMData_24: ; 0x4416
db $01, $09, $42, $00
db $01, $01, $40, $00
db $80 ; terminator
OAMData_25: ; 0x441f
db $02, $0a, $3a, $00
db $02, $02, $38, $00
db $80 ; terminator
OAMData_26: ; 0x4428
db $fb, $0a, $9e, $15
db $fb, $02, $9c, $15
db $ff, $15, $9a, $13
db $ff, $0d, $98, $13
db $ff, $05, $96, $13
db $ff, $fd, $94, $13
db $ef, $08, $92, $13
db $ef, $00, $90, $13
db $80 ; terminator
OAMData_27: ; 0x4449
db $fc, $0a, $1c, $15
db $fc, $02, $1a, $15
db $fe, $15, $9a, $13
db $ff, $0d, $a8, $13
db $ff, $05, $a6, $13
db $ff, $fd, $a4, $13
db $ef, $08, $a2, $13
db $ef, $00, $a0, $13
db $80 ; terminator
OAMData_28: ; 0x446a
db $ff, $08, $2e, $15
db $ff, $00, $2c, $15
db $ff, $10, $2a, $13
db $ff, $08, $28, $13
db $ff, $00, $26, $13
db $ff, $f8, $24, $13
db $ef, $10, $22, $13
db $ef, $08, $20, $13
db $ef, $00, $1e, $13
db $80 ; terminator
OAMData_29: ; 0x448f
db $ef, $03, $92, $15
db $f3, $0b, $94, $15
db $f3, $fb, $90, $15
db $0d, $09, $9e, $13
db $fd, $09, $9c, $13
db $0d, $01, $9a, $13
db $fd, $01, $98, $13
db $00, $11, $a0, $13
db $00, $f9, $96, $13
db $80 ; terminator
OAMData_2a: ; 0x44b4
db $f0, $04, $a4, $15
db $f3, $0c, $a6, $15
db $f3, $fc, $a2, $15
db $00, $12, $1e, $13
db $00, $0a, $1c, $13
db $00, $02, $1a, $13
db $00, $fa, $a8, $13
db $80 ; terminator
OAMData_2b: ; 0x44d1
db $f8, $10, $26, $15
db $f3, $08, $24, $15
db $f3, $00, $22, $15
db $f8, $f8, $20, $15
db $00, $10, $2e, $13
db $00, $08, $2c, $13
db $00, $00, $2a, $13
db $00, $f8, $28, $13
db $80 ; terminator
OAMData_2c: ; 0x44f2
db $00, $10, $9e, $13
db $00, $08, $9c, $13
db $00, $00, $9a, $13
db $00, $f8, $98, $13
db $f0, $10, $96, $13
db $f0, $08, $94, $13
db $f0, $00, $92, $13
db $f0, $f8, $90, $13
db $80 ; terminator
OAMData_2d: ; 0x4513
db $00, $10, $1e, $13
db $00, $08, $1c, $13
db $00, $00, $1a, $13
db $00, $f8, $a8, $13
db $f0, $10, $a6, $13
db $f0, $08, $a4, $13
db $f0, $00, $a2, $13
db $f0, $f8, $a0, $13
db $80 ; terminator
OAMData_2e: ; 0x4534
db $00, $10, $2e, $13
db $00, $08, $2c, $13
db $00, $00, $2a, $13
db $00, $f8, $28, $13
db $f0, $10, $26, $13
db $f0, $08, $24, $13
db $f0, $00, $22, $13
db $f0, $f8, $20, $13
db $80 ; terminator
OAMData_2f: ; 0x4555
db $00, $10, $9e, $13
db $00, $08, $9c, $13
db $00, $00, $9a, $13
db $00, $f8, $98, $13
db $f0, $10, $96, $13
db $f0, $08, $94, $13
db $f0, $00, $92, $13
db $f0, $f8, $90, $13
db $80 ; terminator
OAMData_30: ; 0x4576
db $00, $10, $1e, $13
db $00, $08, $1c, $13
db $00, $00, $1a, $13
db $00, $f8, $a8, $13
db $f0, $10, $a6, $13
db $f0, $08, $a4, $13
db $f0, $00, $a2, $13
db $f0, $f8, $a0, $13
db $80 ; terminator
OAMData_31: ; 0x4597
db $01, $10, $2e, $13
db $01, $08, $2c, $13
db $01, $00, $2a, $13
db $01, $f8, $28, $13
db $f1, $10, $26, $13
db $f1, $08, $24, $13
db $f1, $00, $22, $13
db $f1, $f8, $20, $13
db $80 ; terminator
OAMData_32: ; 0x45b8
db $10, $08, $30, $06
db $80 ; terminator
OAMData_33: ; 0x45bd
db $10, $08, $30, $26
db $80 ; terminator
OAMData_34: ; 0x45c2
db $10, $08, $32, $06
db $80 ; terminator
OAMData_35: ; 0x45c7
db $10, $08, $32, $26
db $80 ; terminator
OAMData_36: ; 0x45cc
db $10, $08, $34, $06
db $80 ; terminator
OAMData_37: ; 0x45d1
db $10, $08, $34, $26
db $80 ; terminator
OAMData_38: ; 0x45d6
db $10, $08, $36, $06
db $80 ; terminator
OAMData_39: ; 0x45db
db $08, $08, $37, $46
db $80 ; terminator
OAMData_3a: ; 0x45e0
db $10, $08, $90, $06
db $80 ; terminator
OAMData_3b: ; 0x45e5
db $10, $08, $92, $06
db $80 ; terminator
OAMData_3c: ; 0x45ea
db $10, $08, $94, $06
db $80 ; terminator
OAMData_3d: ; 0x45ef
db $10, $08, $96, $17
db $80 ; terminator
OAMData_3e: ; 0x45f4
db $10, $08, $98, $17
db $80 ; terminator
OAMData_3f: ; 0x45f9
db $10, $08, $9a, $06
db $80 ; terminator
OAMData_40: ; 0x45fe
db $10, $08, $9c, $06
db $80 ; terminator
OAMData_41: ; 0x4603
db $10, $08, $20, $06
db $80 ; terminator
OAMData_42: ; 0x4608
db $10, $08, $22, $06
db $80 ; terminator
OAMData_43: ; 0x460d
db $10, $08, $24, $06
db $80 ; terminator
OAMData_44: ; 0x4612
db $10, $08, $26, $17
db $80 ; terminator
OAMData_45: ; 0x4617
db $10, $08, $28, $17
db $80 ; terminator
OAMData_46: ; 0x461c
db $10, $08, $2a, $06
db $80 ; terminator
OAMData_47: ; 0x4621
db $10, $08, $2c, $06
db $80 ; terminator
OAMData_48: ; 0x4626
db $10, $08, $60, $06
db $80 ; terminator
OAMData_49: ; 0x462b
db $10, $08, $62, $06
db $80 ; terminator
OAMData_4a: ; 0x4630
db $10, $08, $64, $06
db $80 ; terminator
OAMData_4b: ; 0x4635
db $10, $08, $66, $17
db $80 ; terminator
OAMData_4c: ; 0x463a
db $10, $08, $68, $17
db $80 ; terminator
OAMData_4d: ; 0x463f
db $10, $08, $6a, $06
db $80 ; terminator
OAMData_4e: ; 0x4644
db $10, $08, $6c, $06
db $80 ; terminator
OAMData_4f: ; 0x4649
db $1f, $19, $20, $37
db $1f, $21, $1e, $37
db $0f, $19, $1c, $37
db $0f, $21, $1a, $37
db $1f, $10, $20, $17
db $1f, $08, $1e, $17
db $0f, $10, $1c, $17
db $0f, $08, $1a, $17
db $80 ; terminator
OAMData_50: ; 0x466a
db $1f, $19, $28, $37
db $1f, $21, $26, $37
db $0f, $19, $24, $37
db $0f, $21, $22, $37
db $1f, $10, $28, $17
db $1f, $08, $26, $17
db $0f, $10, $24, $17
db $0f, $08, $22, $17
db $80 ; terminator
OAMData_51: ; 0x468b
db $1f, $19, $38, $37
db $1f, $10, $38, $17
db $1f, $21, $2e, $37
db $0f, $19, $2c, $37
db $0f, $21, $2a, $37
db $1f, $08, $2e, $17
db $0f, $10, $2c, $17
db $0f, $08, $2a, $17
db $80 ; terminator
OAMData_52: ; 0x46ac
db $08, $f8, $60, $00
db $80 ; terminator
OAMData_53: ; 0x46b1
db $08, $08, $60, $00
db $08, $00, $60, $00
db $08, $f8, $60, $00
db $80 ; terminator
OAMData_54: ; 0x46be
db $08, $20, $60, $00
db $08, $18, $60, $00
db $08, $10, $60, $00
db $08, $08, $60, $00
db $08, $00, $60, $00
db $08, $f8, $60, $00
db $80 ; terminator
OAMData_55: ; 0x46d7
db $10, $20, $60, $00
db $10, $18, $60, $00
db $10, $10, $60, $00
db $10, $08, $60, $00
db $10, $00, $60, $00
db $10, $f8, $60, $00
db $08, $20, $60, $00
db $08, $18, $60, $00
db $08, $10, $60, $00
db $08, $08, $60, $00
db $08, $00, $60, $00
db $08, $f8, $60, $00
db $80 ; terminator
OAMData_56: ; 0x4708
db $10, $20, $60, $40
db $10, $18, $60, $40
db $10, $10, $60, $40
db $10, $08, $60, $40
db $10, $00, $60, $40
db $18, $20, $60, $40
db $18, $18, $60, $40
db $18, $10, $60, $40
db $18, $08, $60, $40
db $18, $00, $60, $40
db $18, $f8, $60, $40
db $10, $f8, $60, $40
db $08, $f8, $60, $40
db $08, $20, $59, $00
db $08, $18, $58, $00
db $08, $10, $57, $00
db $08, $08, $56, $00
db $08, $00, $55, $00
db $80 ; terminator
OAMData_57: ; 0x4751
db $18, $20, $60, $40
db $18, $18, $60, $40
db $18, $10, $60, $40
db $18, $08, $60, $40
db $18, $00, $60, $40
db $18, $f8, $60, $40
db $10, $f8, $60, $40
db $08, $f8, $60, $40
db $10, $20, $5f, $00
db $10, $18, $5e, $00
db $10, $10, $5d, $00
db $10, $08, $5c, $00
db $10, $00, $5b, $00
db $08, $20, $59, $00
db $08, $18, $58, $00
db $08, $10, $57, $00
db $08, $08, $56, $00
db $08, $00, $55, $00
db $80 ; terminator
OAMData_58: ; 0x479a
db $18, $f8, $60, $40
db $10, $f8, $5a, $00
db $08, $f8, $54, $00
db $18, $20, $65, $00
db $18, $18, $64, $00
db $18, $10, $63, $00
db $18, $08, $62, $00
db $18, $00, $61, $00
db $10, $20, $5f, $00
db $10, $18, $5e, $00
db $10, $10, $5d, $00
db $10, $08, $5c, $00
db $10, $00, $5b, $00
db $08, $20, $59, $00
db $08, $18, $58, $00
db $08, $10, $57, $00
db $08, $08, $56, $00
db $08, $00, $55, $00
db $80 ; terminator
OAMData_59: ; 0x47e3
db $08, $f8, $60, $40
db $18, $f8, $67, $00
db $10, $f8, $66, $00
db $18, $20, $65, $00
db $18, $18, $64, $00
db $18, $10, $63, $00
db $18, $08, $62, $00
db $18, $00, $61, $00
db $10, $20, $5f, $00
db $10, $18, $5e, $00
db $10, $10, $5d, $00
db $10, $08, $5c, $00
db $10, $00, $5b, $00
db $08, $20, $59, $00
db $08, $18, $58, $00
db $08, $10, $57, $00
db $08, $08, $56, $00
db $08, $00, $55, $00
db $80 ; terminator
TitlescreenPikachuBlinkFrame1OAM: ; 0x482c
db $10, $28, $3f, $00
db $10, $20, $3e, $00
db $10, $18, $3d, $00
db $10, $10, $3c, $00
db $10, $08, $3b, $00
db $80 ; terminator
TitlescreenPikachuBlinkFrame2OAM: ; 0x4841
db $18, $09, $44, $00
db $10, $10, $41, $00
db $10, $08, $40, $00
db $80 ; terminator
TitlescreenPikachuBlinkFrame3OAM: ; 0x484e
db $18, $09, $45, $00
db $10, $10, $43, $00
db $10, $08, $42, $00
db $80 ; terminator
; These next 5 OAM entries are for the individual frames of the
; bouncing pokeball on the titlescreen.
TitlescreenPokeball1OAM: ; 0x485b
db $14, $00, $4c, $02
db $0c, $00, $46, $31
db $14, $f8, $47, $02
db $0c, $f8, $46, $11
db $80 ; terminator
TitlescreenPokeball2OAM: ; 0x486c
db $15, $00, $4d, $02
db $0d, $00, $48, $31
db $15, $f8, $49, $02
db $0d, $f8, $48, $11
db $80 ; terminator
TitlescreenPokeball3OAM: ; 0x487d
db $13, $00, $4c, $02
db $0b, $00, $46, $31
db $13, $f8, $47, $02
db $0b, $f8, $46, $11
db $80 ; terminator
TitlescreenPokeball4OAM: ; 0x488e
db $11, $00, $4e, $02
db $09, $00, $4a, $31
db $11, $f8, $4b, $02
db $09, $f8, $4a, $11
db $80 ; terminator
TitlescreenPokeball5OAM: ; 0x489f
db $11, $00, $4c, $02
db $09, $00, $46, $31
db $11, $f8, $47, $02
db $09, $f8, $46, $11
db $80 ; terminator
OAMData_62: ; 0x48b0
db $10, $20, $53, $11
db $10, $18, $52, $11
db $08, $20, $51, $11
db $18, $0c, $50, $11
db $10, $0c, $4f, $11
db $80 ; terminator
OAMData_63: ; 0x48c5
db $10, $08, $70, $11
db $80 ; terminator
OAMData_64: ; 0x48ca
db $10, $10, $71, $31
db $10, $08, $71, $11
db $80 ; terminator
OAMData_65: ; 0x48d3
db $10, $18, $74, $17
db $10, $10, $73, $00
db $10, $08, $72, $17
db $80 ; terminator
OAMData_66: ; 0x48e0
db $10, $18, $77, $17
db $10, $10, $76, $00
db $10, $08, $75, $17
db $80 ; terminator
OAMData_67: ; 0x48ed
db $10, $08, $78, $00
db $80 ; terminator
OAMData_68: ; 0x48f2
db $10, $08, $79, $00
db $80 ; terminator
OAMData_69: ; 0x48f7
db $10, $08, $79, $11
db $80 ; terminator
PokeDexTextOAM: ; 0x48fc
; "POKeDEX" in the top-right corner of the Pokedex screen
db $12, $34, $7f, $11
db $12, $2c, $7e, $11
db $12, $24, $7d, $11
db $12, $1c, $7c, $11
db $12, $14, $7b, $11
db $12, $0c, $7a, $11
db $80 ; terminator
OAMData_6b: ; 0x4915
db $10, $08, $6f, $11
db $80 ; terminator
Digit0OAM: ; 0x491a
db $10, $08, $53, $11
db $80 ; terminator
Digit1OAM: ; 0x491f
db $10, $08, $54, $11
db $80 ; terminator
Digit2OAM: ; 0x4924
db $10, $08, $55, $11
db $80 ; terminator
Digit3OAM: ; 0x4929
db $10, $08, $56, $11
db $80 ; terminator
Digit4OAM: ; 0x492e
db $10, $08, $57, $11
db $80 ; terminator
Digit5OAM: ; 0x4933
db $10, $08, $58, $11
db $80 ; terminator
Digit6OAM: ; 0x4938
db $10, $08, $59, $11
db $80 ; terminator
Digit7OAM: ; 0x493d
db $10, $08, $5a, $11
db $80 ; terminator
Digit8OAM: ; 0x4942
db $10, $08, $5b, $11
db $80 ; terminator
Digit9OAM: ; 0x4947
db $10, $08, $5c, $11
db $80 ; terminator
SlashCharacterOAM: ; 0x494c
; "/" (used to separate seen/own count on the pokedex screen)
db $10, $08, $5e, $11
db $80 ; terminator
OAMData_77: ; 0x4951
db $11, $07, $34, $00
db $80 ; terminator
OAMData_78: ; 0x4956
db $0f, $07, $36, $00
db $80 ; terminator
OAMData_79: ; 0x495b
db $0f, $07, $38, $00
db $80 ; terminator
OAMData_7a: ; 0x4960
db $f4, $18, $26, $13
db $f4, $10, $24, $13
db $f4, $08, $22, $13
db $10, $00, $3a, $02
db $09, $10, $3e, $00
db $08, $08, $3c, $00
db $80 ; terminator
OAMData_7b: ; 0x4979
db $10, $28, $78, $00
db $10, $08, $5c, $02
db $10, $10, $5e, $02
db $10, $18, $60, $02
db $10, $20, $62, $02
db $20, $08, $64, $02
db $20, $10, $66, $02
db $20, $18, $68, $02
db $20, $20, $6a, $02
db $20, $28, $6c, $02
db $30, $08, $6e, $02
db $30, $10, $70, $02
db $30, $18, $72, $02
db $30, $20, $74, $02
db $30, $28, $76, $02
db $80 ; terminator
OAMData_7c: ; 0x49b6
db $11, $29, $7a, $02
db $11, $09, $40, $02
db $11, $11, $42, $02
db $11, $19, $44, $02
db $11, $21, $46, $02
db $21, $09, $48, $02
db $21, $11, $4a, $02
db $21, $19, $4c, $02
db $21, $21, $4e, $02
db $21, $29, $50, $02
db $31, $09, $52, $02
db $31, $11, $54, $02
db $31, $19, $56, $02
db $31, $21, $58, $02
db $31, $29, $5a, $02
db $80 ; terminator
OAMData_7d: ; 0x49f3
db $0c, $10, $2a, $04
db $0c, $08, $28, $04
db $80 ; terminator
OAMData_7e: ; 0x49fc
db $0d, $10, $2e, $04
db $0d, $08, $2c, $04
db $80 ; terminator
OAMData_7f: ; 0x4a05
db $0b, $10, $2a, $04
db $0b, $08, $28, $04
db $80 ; terminator
OAMData_80: ; 0x4a0e
db $09, $10, $32, $04
db $09, $08, $30, $04
db $80 ; terminator
OAMData_81: ; 0x4a17
db $09, $10, $2a, $04
db $09, $08, $28, $04
db $80 ; terminator
OAMData_82: ; 0x4a20
db $10, $08, $7c, $00
db $80 ; terminator
OAMData_83: ; 0x4a25
db $10, $08, $7c, $20
db $80 ; terminator
OAMData_84: ; 0x4a2a
db $10, $08, $7e, $11
db $80 ; terminator
OAMData_85: ; 0x4a2f
db $10, $08, $20, $13
db $80 ; terminator
OAMData_86: ; 0x4a34
db $18, $08, $7f, $00
db $10, $08, $7e, $00
db $80 ; terminator
OAMData_87: ; 0x4a3d
db $20, $25, $15, $02
db $18, $25, $0f, $02
db $10, $25, $0a, $02
db $18, $1d, $0e, $02
db $18, $15, $0d, $02
db $18, $0d, $0c, $02
db $18, $05, $0b, $02
db $10, $1d, $09, $02
db $10, $15, $08, $02
db $10, $0d, $07, $02
db $10, $05, $06, $02
db $20, $1d, $14, $02
db $20, $15, $13, $02
db $20, $0d, $12, $02
db $20, $05, $11, $02
db $80 ; terminator
OAMData_88: ; 0x4a7a
db $20, $f5, $10, $02
db $18, $f5, $02, $02
db $10, $f5, $01, $02
db $80 ; terminator
OAMData_89: ; 0x4a87
db $10, $f5, $10, $42
db $18, $f5, $02, $42
db $20, $f5, $01, $42
db $80 ; terminator
OAMData_8a: ; 0x4a94
db $20, $fd, $00, $02
db $18, $fd, $00, $02
db $10, $fd, $00, $02
db $80 ; terminator
OAMData_8b: ; 0x4aa1
db $20, $fd, $00, $02
db $18, $fd, $04, $02
db $10, $fd, $03, $02
db $80 ; terminator
OAMData_8c: ; 0x4aae
db $10, $fd, $00, $02
db $18, $fd, $04, $42
db $20, $fd, $03, $42
db $80 ; terminator
OAMData_8d: ; 0x4abb
db $18, $fd, $05, $02
db $20, $fd, $03, $42
db $10, $fd, $03, $02
db $80 ; terminator
OAMData_8e: ; 0x4ac8
db $0e, $2f, $1f, $02
db $0e, $27, $1e, $02
db $16, $2f, $29, $02
db $16, $27, $28, $02
db $16, $1f, $27, $02
db $16, $17, $26, $02
db $16, $0f, $25, $02
db $16, $07, $24, $02
db $16, $ff, $23, $02
db $16, $f7, $22, $02
db $16, $ef, $21, $02
db $16, $e7, $20, $02
db $0e, $1f, $1d, $02
db $0e, $17, $1c, $02
db $0e, $0f, $1b, $02
db $0e, $07, $1a, $02
db $0e, $ff, $19, $02
db $0e, $f7, $18, $02
db $0e, $ef, $17, $02
db $0e, $e7, $16, $02
db $80 ; terminator
OAMData_8f: ; 0x4b19
db $0e, $2f, $1f, $02
db $0e, $27, $1e, $02
db $16, $2f, $3b, $02
db $16, $27, $3a, $02
db $16, $1f, $39, $02
db $16, $17, $38, $02
db $16, $0f, $37, $02
db $16, $07, $36, $02
db $16, $ff, $35, $02
db $16, $f7, $34, $02
db $16, $ef, $33, $02
db $16, $e7, $32, $02
db $0e, $1f, $31, $02
db $0e, $17, $30, $02
db $0e, $0f, $2f, $02
db $0e, $07, $2e, $02
db $0e, $ff, $2d, $02
db $0e, $f7, $2c, $02
db $0e, $ef, $2b, $02
db $0e, $e7, $2a, $02
db $80 ; terminator
OAMData_90: ; 0x4b6a
db $1d, $14, $48, $02
db $1d, $0c, $47, $02
db $15, $1c, $45, $02
db $15, $14, $44, $02
db $15, $0c, $43, $02
db $15, $04, $42, $02
db $15, $fc, $41, $02
db $1d, $1c, $00, $02
db $1d, $fc, $00, $02
db $25, $1c, $4c, $22
db $25, $14, $4e, $02
db $25, $0c, $4e, $02
db $25, $04, $4d, $02
db $25, $fc, $4c, $02
db $1d, $04, $46, $02
db $0d, $1c, $40, $02
db $0d, $14, $3f, $02
db $0d, $0c, $3e, $02
db $0d, $04, $3d, $02
db $0d, $fc, $3c, $02
db $80 ; terminator
OAMData_91: ; 0x4bbb
db $1d, $14, $49, $02
db $1d, $0c, $47, $02
db $15, $1c, $45, $02
db $15, $14, $44, $02
db $15, $0c, $43, $02
db $15, $04, $42, $02
db $15, $fc, $41, $02
db $1d, $1c, $00, $02
db $1d, $fc, $00, $02
db $25, $1c, $4c, $22
db $25, $14, $4e, $02
db $25, $0c, $4e, $02
db $25, $04, $4d, $02
db $25, $fc, $4c, $02
db $1d, $04, $46, $02
db $0d, $1c, $40, $02
db $0d, $14, $3f, $02
db $0d, $0c, $3e, $02
db $0d, $04, $3d, $02
db $0d, $fc, $3c, $02
db $80 ; terminator
OAMData_92: ; 0x4c0c
db $1d, $14, $4a, $02
db $1d, $0c, $47, $02
db $15, $1c, $45, $02
db $15, $14, $44, $02
db $15, $0c, $43, $02
db $15, $04, $42, $02
db $15, $fc, $41, $02
db $1d, $1c, $00, $02
db $1d, $fc, $00, $02
db $25, $1c, $4c, $22
db $25, $14, $4e, $02
db $25, $0c, $4e, $02
db $25, $04, $4d, $02
db $25, $fc, $4c, $02
db $1d, $04, $46, $02
db $0d, $1c, $40, $02
db $0d, $14, $3f, $02
db $0d, $0c, $3e, $02
db $0d, $04, $3d, $02
db $0d, $fc, $3c, $02
db $80 ; terminator
OAMData_93: ; 0x4c5d
db $1d, $14, $4b, $02
db $1d, $0c, $47, $02
db $15, $1c, $45, $02
db $15, $14, $44, $02
db $15, $0c, $43, $02
db $15, $04, $42, $02
db $15, $fc, $41, $02
db $1d, $1c, $00, $02
db $1d, $fc, $00, $02
db $25, $1c, $4c, $22
db $25, $14, $4e, $02
db $25, $0c, $4e, $02
db $25, $04, $4d, $02
db $25, $fc, $4c, $02
db $1d, $04, $46, $02
db $0d, $1c, $40, $02
db $0d, $14, $3f, $02
db $0d, $0c, $3e, $02
db $0d, $04, $3d, $02
db $0d, $fc, $3c, $02
db $80 ; terminator
OAMData_94: ; 0x4cae
db $28, $eb, $10, $02
db $20, $2b, $00, $02
db $20, $eb, $00, $02
db $28, $33, $58, $42
db $20, $33, $62, $02
db $18, $33, $62, $02
db $18, $2b, $61, $02
db $10, $33, $58, $02
db $10, $2b, $57, $02
db $20, $23, $69, $02
db $20, $1b, $68, $02
db $20, $13, $67, $02
db $20, $0b, $66, $02
db $20, $03, $65, $02
db $20, $fb, $64, $02
db $20, $f3, $63, $02
db $18, $23, $60, $02
db $18, $1b, $5f, $02
db $18, $13, $5e, $02
db $18, $0b, $5d, $02
db $18, $03, $5c, $02
db $18, $fb, $5b, $02
db $18, $f3, $5a, $02
db $18, $eb, $59, $02
db $10, $23, $56, $02
db $10, $1b, $55, $02
db $10, $13, $54, $02
db $10, $0b, $53, $02
db $10, $03, $52, $02
db $10, $fb, $51, $02
db $10, $f3, $50, $02
db $10, $eb, $4f, $02
db $28, $2b, $71, $02
db $28, $23, $70, $02
db $28, $1b, $6f, $02
db $28, $13, $6e, $02
db $28, $0b, $6d, $02
db $28, $03, $6c, $02
db $28, $fb, $6b, $02
db $28, $f3, $6a, $02
db $80 ; terminator
OAMData_95: ; 0x4d4f
db $18, $18, $7d, $11
db $18, $10, $7c, $11
db $18, $08, $7b, $11
db $10, $10, $7a, $11
db $80 ; terminator
OAMData_96: ; 0x4d60
db $18, $08, $7d, $31
db $18, $10, $7c, $31
db $18, $18, $7b, $31
db $10, $10, $7a, $31
db $80 ; terminator
OAMData_97: ; 0x4d71
db $16, $30, $8b, $02
db $16, $28, $8a, $02
db $16, $20, $89, $02
db $16, $18, $88, $02
db $16, $10, $87, $02
db $16, $08, $86, $02
db $16, $00, $85, $02
db $16, $f8, $84, $02
db $16, $f0, $83, $02
db $16, $e8, $82, $02
db $0e, $30, $81, $02
db $0e, $28, $80, $02
db $0e, $20, $79, $02
db $0e, $18, $78, $02
db $0e, $10, $77, $02
db $0e, $08, $76, $02
db $0e, $00, $75, $02
db $0e, $f8, $74, $02
db $0e, $f0, $73, $02
db $0e, $e8, $72, $02
db $80 ; terminator
OAMData_98: ; 0x4dc2
db $18, $10, $8f, $04
db $18, $08, $8e, $04
db $10, $10, $8d, $04
db $10, $08, $8c, $04
db $80 ; terminator
OAMData_99: ; 0x4dd3
db $18, $10, $91, $04
db $18, $08, $90, $04
db $10, $10, $8d, $04
db $10, $08, $8c, $04
db $80 ; terminator
OAMData_9a: ; 0x4de4
db $18, $10, $93, $04
db $18, $08, $92, $04
db $10, $10, $8d, $04
db $10, $08, $8c, $04
db $80 ; terminator
OAMData_9b: ; 0x4df5
db $10, $10, $95, $04
db $10, $08, $94, $04
db $18, $10, $93, $04
db $18, $08, $92, $04
db $80 ; terminator
OAMData_9c: ; 0x4e06
db $18, $10, $97, $04
db $18, $08, $96, $04
db $10, $10, $95, $04
db $10, $08, $94, $04
db $80 ; terminator
OAMData_9d: ; 0x4e17
db $18, $10, $8f, $04
db $18, $08, $8e, $04
db $10, $10, $95, $04
db $10, $08, $94, $04
db $80 ; terminator
FieldSelectRedStageBorderOAM: ; 0x4e28
db $36, $1c, $71, $40
db $26, $24, $72, $60
db $2e, $24, $72, $60
db $36, $24, $70, $60
db $36, $17, $71, $40
db $36, $0f, $71, $40
db $36, $07, $71, $40
db $36, $ff, $71, $40
db $36, $f7, $71, $40
db $26, $e8, $72, $40
db $2e, $e8, $72, $40
db $36, $f0, $71, $40
db $36, $e8, $70, $40
db $22, $e8, $72, $40
db $22, $24, $72, $60
db $12, $24, $72, $60
db $1a, $24, $72, $60
db $0a, $24, $72, $20
db $12, $e8, $72, $40
db $1a, $e8, $72, $40
db $0a, $e8, $72, $00
db $e2, $1c, $71, $00
db $02, $e8, $72, $00
db $02, $24, $72, $20
db $fa, $24, $72, $20
db $f2, $24, $72, $20
db $ea, $24, $72, $20
db $e2, $17, $71, $00
db $e2, $0f, $71, $00
db $e2, $07, $71, $00
db $e2, $24, $70, $20
db $e2, $ff, $71, $00
db $e2, $f7, $71, $00
db $fa, $e8, $72, $00
db $f2, $e8, $72, $00
db $ea, $e8, $72, $00
db $e2, $f0, $71, $00
db $e2, $e8, $70, $00
db $80 ; terminator
FieldSelectBlueStageBorderOAM: ; 0x4ec1
db $36, $1c, $74, $40
db $26, $24, $75, $60
db $2e, $24, $75, $60
db $36, $24, $73, $60
db $36, $17, $74, $40
db $36, $0f, $74, $40
db $36, $07, $74, $40
db $36, $ff, $74, $40
db $36, $f7, $74, $40
db $26, $e8, $75, $40
db $2e, $e8, $75, $40
db $36, $f0, $74, $40
db $36, $e8, $73, $40
db $22, $e8, $75, $40
db $22, $24, $75, $60
db $12, $24, $75, $60
db $1a, $24, $75, $60
db $0a, $24, $75, $20
db $12, $e8, $75, $40
db $1a, $e8, $75, $40
db $0a, $e8, $75, $00
db $e2, $1c, $74, $00
db $02, $e8, $75, $00
db $02, $24, $75, $20
db $fa, $24, $75, $20
db $f2, $24, $75, $20
db $ea, $24, $75, $20
db $e2, $17, $74, $00
db $e2, $0f, $74, $00
db $e2, $07, $74, $00
db $e2, $24, $73, $20
db $e2, $ff, $74, $00
db $e2, $f7, $74, $00
db $fa, $e8, $75, $00
db $f2, $e8, $75, $00
db $ea, $e8, $75, $00
db $e2, $f0, $74, $00
db $e2, $e8, $73, $00
db $80 ; terminator
OAMData_a0: ; 0x4f5a
db $36, $1c, $77, $40
db $26, $24, $78, $60
db $2e, $24, $78, $60
db $36, $24, $76, $60
db $36, $17, $77, $40
db $36, $0f, $77, $40
db $36, $07, $77, $40
db $36, $ff, $77, $40
db $36, $f7, $77, $40
db $26, $e8, $78, $40
db $2e, $e8, $78, $40
db $36, $f0, $77, $40
db $36, $e8, $76, $40
db $22, $e8, $78, $40
db $22, $24, $78, $60
db $12, $24, $78, $60
db $1a, $24, $78, $60
db $0a, $24, $78, $20
db $12, $e8, $78, $40
db $1a, $e8, $78, $40
db $0a, $e8, $78, $00
db $e2, $1c, $77, $00
db $02, $e8, $78, $00
db $02, $24, $78, $20
db $fa, $24, $78, $20
db $f2, $24, $78, $20
db $ea, $24, $78, $20
db $e2, $17, $77, $00
db $e2, $0f, $77, $00
db $e2, $07, $77, $00
db $e2, $24, $76, $20
db $e2, $ff, $77, $00
db $e2, $f7, $77, $00
db $fa, $e8, $78, $00
db $f2, $e8, $78, $00
db $ea, $e8, $78, $00
db $e2, $f0, $77, $00
db $e2, $e8, $76, $00
db $80 ; terminator
OAMData_a1: ; 0x4ff3
db $10, $08, $7c, $08
db $80 ; terminator
OAMData_a2: ; 0x4ff8
db $08, $08, $7d, $48
db $80 ; terminator
OAMData_a3: ; 0x4ffd
db $10, $08, $7e, $08
db $80 ; terminator
OAMData_a4: ; 0x5002
db $10, $08, $7e, $28
db $80 ; terminator
OAMData_a5: ; 0x5007
db $03, $0a, $0f, $1d
db $fb, $0a, $0e, $1d
db $03, $02, $0d, $1d
db $fb, $02, $0c, $1d
db $07, $15, $0b, $1b
db $ff, $15, $0a, $1b
db $07, $0d, $09, $1b
db $ff, $0d, $08, $1b
db $07, $05, $07, $1b
db $ff, $05, $06, $1b
db $07, $fd, $05, $1b
db $ff, $fd, $04, $1b
db $f7, $08, $03, $1b
db $ef, $08, $02, $1b
db $f7, $00, $01, $1b
db $ef, $00, $00, $1b
db $80 ; terminator
OAMData_a6: ; 0x5048
db $04, $0a, $1d, $1d
db $fc, $0a, $1c, $1d
db $04, $02, $1b, $1d
db $fc, $02, $1a, $1d
db $06, $15, $0b, $1b
db $fe, $15, $0a, $1b
db $07, $0d, $19, $1b
db $ff, $0d, $18, $1b
db $07, $05, $17, $1b
db $ff, $05, $16, $1b
db $07, $fd, $15, $1b
db $ff, $fd, $14, $1b
db $f7, $08, $13, $1b
db $ef, $08, $12, $1b
db $f7, $00, $11, $1b
db $ef, $00, $10, $1b
db $80 ; terminator
OAMData_a7: ; 0x5089
db $07, $08, $2f, $1d
db $ff, $08, $2e, $1d
db $07, $00, $2d, $1d
db $ff, $00, $2c, $1d
db $07, $10, $2b, $1b
db $ff, $10, $2a, $1b
db $07, $08, $29, $1b
db $ff, $08, $28, $1b
db $07, $00, $27, $1b
db $ff, $00, $26, $1b
db $07, $f8, $25, $1b
db $ff, $f8, $24, $1b
db $f7, $10, $23, $1b
db $ef, $10, $22, $1b
db $f7, $08, $21, $1b
db $ef, $08, $20, $1b
db $f7, $00, $1f, $1b
db $ef, $00, $1e, $1b
db $80 ; terminator
OAMData_a8: ; 0x50d2
db $15, $01, $0b, $0a
db $ef, $03, $02, $1d
db $f7, $03, $03, $1d
db $fb, $0b, $05, $1d
db $f3, $0b, $04, $1d
db $fb, $fb, $01, $1d
db $f3, $fb, $00, $1d
db $0d, $09, $0e, $1b
db $05, $09, $0d, $1b
db $fd, $09, $0c, $1b
db $0d, $01, $0a, $1b
db $05, $01, $09, $1b
db $fd, $01, $08, $1b
db $08, $11, $11, $1b
db $00, $11, $10, $1b
db $08, $f9, $07, $1b
db $00, $f9, $06, $1b
db $80 ; terminator
OAMData_a9: ; 0x5117
db $f8, $04, $15, $1d
db $f0, $04, $14, $1d
db $fb, $0c, $17, $1d
db $f3, $0c, $16, $1d
db $fb, $fc, $13, $1d
db $f3, $fc, $12, $1d
db $08, $12, $1f, $1b
db $00, $12, $1e, $1b
db $08, $0a, $1d, $1b
db $00, $0a, $1c, $1b
db $08, $02, $1b, $1b
db $00, $02, $1a, $1b
db $08, $fa, $19, $1b
db $00, $fa, $18, $1b
db $80 ; terminator
OAMData_aa: ; 0x5150
db $00, $10, $27, $1d
db $f8, $10, $26, $1d
db $fb, $08, $25, $1d
db $f3, $08, $24, $1d
db $fb, $00, $23, $1d
db $f3, $00, $22, $1d
db $00, $f8, $21, $1d
db $f8, $f8, $20, $1d
db $08, $10, $2f, $1b
db $00, $10, $2e, $1b
db $08, $08, $2d, $1b
db $00, $08, $2c, $1b
db $08, $00, $2b, $1b
db $00, $00, $2a, $1b
db $08, $f8, $29, $1b
db $00, $f8, $28, $1b
db $80 ; terminator
OAMData_ab: ; 0x5191
db $08, $10, $0f, $1b
db $00, $10, $0e, $1b
db $08, $08, $0d, $1b
db $00, $08, $0c, $1b
db $08, $00, $0b, $1b
db $00, $00, $0a, $1b
db $08, $f8, $09, $1b
db $00, $f8, $08, $1b
db $f8, $10, $07, $1b
db $f0, $10, $06, $1b
db $f8, $08, $05, $1b
db $f0, $08, $04, $1b
db $f8, $00, $03, $1b
db $f0, $00, $02, $1b
db $f8, $f8, $01, $1b
db $f0, $f8, $00, $1b
db $80 ; terminator
OAMData_ac: ; 0x51d2
db $08, $10, $1f, $1b
db $00, $10, $1e, $1b
db $08, $08, $1d, $1b
db $00, $08, $1c, $1b
db $08, $00, $1b, $1b
db $00, $00, $1a, $1b
db $08, $f8, $19, $1b
db $00, $f8, $18, $1b
db $f8, $10, $17, $1b
db $f0, $10, $16, $1b
db $f8, $08, $15, $1b
db $f0, $08, $14, $1b
db $f8, $00, $13, $1b
db $f0, $00, $12, $1b
db $f8, $f8, $11, $1b
db $f0, $f8, $10, $1b
db $80 ; terminator
OAMData_ad: ; 0x5213
db $08, $10, $2f, $1b
db $00, $10, $2e, $1b
db $08, $08, $2d, $1b
db $00, $08, $2c, $1b
db $08, $00, $2b, $1b
db $00, $00, $2a, $1b
db $08, $f8, $29, $1b
db $00, $f8, $28, $1b
db $f8, $10, $27, $1b
db $f0, $10, $26, $1b
db $f8, $08, $25, $1b
db $f0, $08, $24, $1b
db $f8, $00, $23, $1b
db $f0, $00, $22, $1b
db $f8, $f8, $21, $1b
db $f0, $f8, $20, $1b
db $80 ; terminator
OAMData_ae: ; 0x5254
db $08, $10, $0f, $1d
db $00, $10, $0e, $1b
db $08, $08, $0d, $1d
db $00, $08, $0c, $1b
db $08, $00, $0b, $1d
db $00, $00, $0a, $1b
db $08, $f8, $09, $1d
db $00, $f8, $08, $1b
db $f8, $10, $07, $1b
db $f0, $10, $06, $1b
db $f8, $08, $05, $1b
db $f0, $08, $04, $1b
db $f8, $00, $03, $1b
db $f0, $00, $02, $1b
db $f8, $f8, $01, $1b
db $f0, $f8, $00, $1b
db $80 ; terminator
OAMData_af: ; 0x5295
db $08, $10, $1f, $1d
db $00, $10, $1e, $1b
db $08, $08, $1d, $1d
db $00, $08, $1c, $1b
db $08, $00, $1b, $1d
db $00, $00, $1a, $1b
db $08, $f8, $19, $1d
db $00, $f8, $18, $1b
db $f8, $10, $17, $1b
db $f0, $10, $16, $1b
db $f8, $08, $15, $1b
db $f0, $08, $14, $1b
db $f8, $00, $13, $1b
db $f0, $00, $12, $1b
db $f8, $f8, $11, $1b
db $f0, $f8, $10, $1b
db $80 ; terminator
OAMData_b0: ; 0x52d6
db $09, $10, $2f, $1d
db $01, $10, $2e, $1b
db $09, $08, $2d, $1d
db $01, $08, $2c, $1b
db $09, $00, $2b, $1d
db $01, $00, $2a, $1b
db $09, $f8, $29, $1d
db $01, $f8, $28, $1b
db $f9, $10, $27, $1b
db $f1, $10, $26, $1b
db $f9, $08, $25, $1b
db $f1, $08, $24, $1b
db $f9, $00, $23, $1b
db $f1, $00, $22, $1b
db $f9, $f8, $21, $1b
db $f1, $f8, $20, $1b
db $80 ; terminator
Timer0DigitOAM: ; 0x5317
db $10, $08, $60, $08
db $80 ; terminator
Timer1DigitOAM: ; 0x531c
db $10, $08, $62, $08
db $80 ; terminator
Timer2DigitOAM: ; 0x5321
db $10, $08, $64, $08
db $80 ; terminator
Timer3DigitOAM: ; 0x5326
db $10, $08, $66, $08
db $80 ; terminator
Timer4DigitOAM: ; 0x532b
db $10, $08, $68, $08
db $80 ; terminator
Timer5DigitOAM: ; 0x5330
db $10, $08, $6a, $08
db $80 ; terminator
Timer6DigitOAM: ; 0x5335
db $10, $08, $6c, $08
db $80 ; terminator
Timer7DigitOAM: ; 0x533a
db $10, $08, $6e, $08
db $80 ; terminator
Timer8DigitOAM: ; 0x533f
db $10, $08, $70, $08
db $80 ; terminator
Timer9DigitOAM: ; 0x5344
db $10, $08, $72, $08
db $80 ; terminator
TimerColonOAM: ; 0x5349
db $10, $08, $74, $08
db $80 ; terminator
OAMData_bc: ; 0x534e
db $10, $10, $30, $11
db $10, $08, $2e, $11
db $80 ; terminator
OAMData_bd: ; 0x5357
db $10, $10, $34, $11
db $10, $08, $32, $11
db $80 ; terminator
OAMData_be: ; 0x5360
db $12, $10, $66, $15
db $02, $10, $64, $15
db $12, $08, $62, $15
db $02, $08, $60, $15
db $80 ; terminator
OAMData_bf: ; 0x5371
db $00, $0a, $68, $15
db $10, $10, $6c, $15
db $10, $08, $6a, $15
db $80 ; terminator
OAMData_c0: ; 0x537e
db $0f, $10, $70, $15
db $0f, $08, $6e, $15
db $80 ; terminator
OAMData_c1: ; 0x5387
db $00, $0b, $72, $15
db $10, $10, $76, $15
db $10, $08, $74, $15
db $80 ; terminator
OAMData_c2: ; 0x5394
db $08, $0f, $78, $22
db $08, $07, $78, $02
db $80 ; terminator
OAMData_c3: ; 0x539d
db $08, $0f, $7b, $62
db $08, $07, $7b, $42
db $80 ; terminator
OAMData_c4: ; 0x53a6
db $08, $0f, $7d, $62
db $08, $07, $7d, $42
db $80 ; terminator
OAMData_c5: ; 0x53af
db $08, $0f, $7e, $22
db $08, $07, $7e, $02
db $80 ; terminator
OAMData_c6: ; 0x53b8
db $08, $0f, $7c, $22
db $08, $07, $7c, $02
db $80 ; terminator
OAMData_c7: ; 0x53c1
db $08, $0f, $7a, $22
db $08, $07, $7a, $02
db $80 ; terminator
OAMData_c8: ; 0x53ca
db $18, $11, $96, $02
db $20, $29, $a6, $02
db $30, $21, $a4, $02
db $20, $21, $a2, $02
db $38, $19, $a0, $02
db $28, $19, $9e, $02
db $18, $19, $9c, $02
db $38, $11, $9a, $02
db $28, $11, $98, $02
db $38, $09, $94, $02
db $28, $09, $92, $02
db $18, $09, $90, $02
db $80 ; terminator
OAMData_c9: ; 0x53fb
db $18, $21, $2c, $02
db $18, $19, $28, $02
db $30, $09, $20, $02
db $20, $09, $1e, $02
db $28, $19, $2a, $02
db $30, $11, $26, $02
db $20, $11, $24, $02
db $10, $11, $22, $02
db $10, $09, $1c, $02
db $80 ; terminator
OAMData_ca: ; 0x5420
db $30, $08, $1a, $02
db $20, $08, $a8, $02
db $80 ; terminator
OAMData_cb: ; 0x5429
db $10, $18, $06, $1b
db $20, $10, $04, $1b
db $10, $10, $02, $1b
db $10, $08, $00, $1b
db $80 ; terminator
OAMData_cc: ; 0x543a
db $20, $11, $0e, $0c
db $10, $11, $0c, $0c
db $22, $09, $0a, $0c
db $12, $09, $08, $0c
db $80 ; terminator
OAMData_cd: ; 0x544b
db $0f, $11, $30, $11
db $0f, $09, $2e, $11
db $80 ; terminator
OAMData_ce: ; 0x5454
db $10, $0f, $30, $11
db $10, $07, $2e, $11
db $80 ; terminator
OAMData_cf: ; 0x545d
db $11, $11, $30, $11
db $11, $09, $2e, $11
db $80 ; terminator
OAMData_d0: ; 0x5466
db $10, $17, $16, $1b
db $1f, $0f, $14, $1b
db $0f, $0f, $12, $1b
db $0f, $07, $10, $1b
db $80 ; terminator
OAMData_d1: ; 0x5477
db $10, $08, $36, $06
db $80 ; terminator
OAMData_d2: ; 0x547c
db $08, $08, $37, $46
db $80 ; terminator
OAMData_d3: ; 0x5481
db $10, $08, $38, $06
db $80 ; terminator
OAMData_d4: ; 0x5486
db $10, $08, $3a, $06
db $80 ; terminator
OAMData_d5: ; 0x548b
db $10, $08, $3c, $06
db $80 ; terminator
OAMData_d6: ; 0x5490
db $10, $08, $3e, $06
db $80 ; terminator
OAMData_d7: ; 0x5495
db $10, $08, $b0, $00
db $80 ; terminator
OAMData_d8: ; 0x549a
db $10, $08, $b2, $00
db $80 ; terminator
OAMData_d9: ; 0x549f
db $10, $08, $b4, $00
db $80 ; terminator
OAMData_da: ; 0x54a4
db $10, $08, $b6, $00
db $80 ; terminator
OAMData_db: ; 0x54a9
db $10, $08, $38, $00
db $80 ; terminator
OAMData_dc: ; 0x54ae
db $10, $08, $3a, $00
db $80 ; terminator
OAMData_dd: ; 0x54b3
db $10, $08, $7e, $00
db $80 ; terminator
OAMData_de: ; 0x54b8
db $10, $08, $bc, $00
db $80 ; terminator
OAMData_df: ; 0x54bd
db $10, $08, $a8, $00
db $80 ; terminator
OAMData_e0: ; 0x54c2
db $10, $10, $92, $13
db $10, $08, $90, $13
db $80 ; terminator
OAMData_e1: ; 0x54cb
db $10, $10, $96, $13
db $10, $08, $94, $13
db $80 ; terminator
OAMData_e2: ; 0x54d4
db $20, $18, $1e, $11
db $20, $10, $1c, $11
db $20, $08, $1a, $11
db $10, $18, $9c, $11
db $10, $10, $9a, $11
db $10, $08, $98, $11
db $80 ; terminator
OAMData_e3: ; 0x54ed
db $10, $18, $a2, $11
db $10, $10, $a0, $11
db $10, $08, $9e, $11
db $20, $18, $1e, $11
db $20, $10, $1c, $11
db $20, $08, $1a, $11
db $80 ; terminator
OAMData_e4: ; 0x5506
db $10, $1a, $a8, $11
db $10, $12, $a6, $11
db $10, $0a, $a4, $11
db $20, $18, $1e, $11
db $20, $10, $1c, $11
db $20, $08, $1a, $11
db $80 ; terminator
OAMData_e5: ; 0x551f
db $20, $18, $2a, $13
db $20, $10, $28, $13
db $20, $08, $26, $13
db $10, $18, $24, $13
db $10, $10, $22, $13
db $10, $08, $20, $13
db $80 ; terminator
OAMData_e6: ; 0x5538
db $20, $18, $36, $13
db $20, $10, $34, $13
db $20, $08, $32, $13
db $10, $18, $30, $13
db $10, $10, $2e, $13
db $10, $08, $2c, $13
db $80 ; terminator
OAMData_e7: ; 0x5551
db $20, $10, $76, $13
db $20, $08, $74, $13
db $10, $10, $72, $13
db $10, $08, $70, $13
db $20, $18, $2a, $13
db $10, $18, $24, $13
db $80 ; terminator
OAMData_e8: ; 0x556a
db $10, $10, $78, $22
db $10, $08, $78, $02
db $80 ; terminator
OAMData_e9: ; 0x5573
db $10, $10, $7b, $62
db $10, $08, $7b, $42
db $80 ; terminator
OAMData_ea: ; 0x557c
db $10, $10, $7d, $62
db $10, $08, $7d, $42
db $80 ; terminator
OAMData_eb: ; 0x5585
db $10, $10, $7e, $22
db $10, $08, $7e, $02
db $80 ; terminator
OAMData_ec: ; 0x558e
db $10, $10, $7c, $22
db $10, $08, $7c, $02
db $80 ; terminator
OAMData_ed: ; 0x5597
db $10, $10, $7a, $22
db $10, $08, $7a, $02
db $80 ; terminator
OAMData_ee: ; 0x55a0
db $10, $08, $38, $06
db $80 ; terminator
OAMData_ef: ; 0x55a5
db $10, $08, $3a, $06
db $80 ; terminator
OAMData_f0: ; 0x55aa
db $10, $08, $3a, $26
db $80 ; terminator
OAMData_f1: ; 0x55af
db $10, $08, $3c, $06
db $80 ; terminator
OAMData_f2: ; 0x55b4
db $10, $08, $3e, $06
db $80 ; terminator
OAMData_f3: ; 0x55b9
db $10, $08, $3e, $26
db $80 ; terminator
OAMData_f4: ; 0x55be
db $08, $08, $39, $46
db $80 ; terminator
OAMData_f5: ; 0x55c3
db $10, $08, $72, $00
db $80 ; terminator
OAMData_f6: ; 0x55c8
db $10, $08, $74, $00
db $80 ; terminator
OAMData_f7: ; 0x55cd
db $10, $08, $76, $00
db $80 ; terminator
OAMData_f8: ; 0x55d2
db $10, $08, $78, $00
db $80 ; terminator
INCBIN "baserom.gbc",$55d7,$8000 - $55d7 ; 0x55d7
SECTION "bank2", ROMX, BANK[$2]
Func_8000: ; 0x8000
ld a, [wScreenState]
rst $18 ; calls JumpToFuncInTable
CallTable_8004: ; 0x8004
dw Func_800a
dw Func_8104
dw Func_814e
Func_800a: ; 0x800a
xor a
ld [$ffc4], a
ld a, [hJoypadState]
cp D_UP
jr nz, .asm_8018
ld a, [hGameBoyColorFlag]
and a
jr nz, .asm_8021
.asm_8018
ld hl, wCurrentScreen
inc [hl]
xor a
ld [wScreenState], a
ret
.asm_8021
ld a, $45
ld [$ff9e], a
ld a, $e4
ld [$d80c], a
ld [$d80d], a
ld [$d80e], a
xor a
ld [hBoardXShift], a
ld [hBoardYShift], a
call Func_8049
call ClearOAMBuffer
call Func_b66
call Func_588
call Func_bbe
ld hl, wScreenState
inc [hl]
ret
Func_8049: ; 0x8049
ld a, $1
ld [$ff4f], a
ld c, $ff
call FillTilesVRAM
call FillBackgroundsVRAM
xor a
ld [$ff4f], a
ld c, $0
call FillTilesVRAM
call FillBackgroundsVRAM
ld a, $80
ld de, $ff68
ld hl, $40e4 ; todo
call Func_80d1
ld a, $80
ld de, $ff6a
ld hl, $40f4 ; todo
call Func_80d1
ld hl, PointerTable_8089
xor a
call LoadVideoData
ld a, $2
ld bc, $4094 ; todo
ld de, LoadTileLists ; todo
call Func_10c5
ret
PointerTable_8089: ; 0x8089
dw Data_808b
Data_808b: ; 0x808b
dw $5c00
db $36
dw $8a00
dw $1000
db $FF, $FF ; terminators
INCBIN "baserom.gbc",$8094,$80b5 - $8094
FillBackgroundsVRAM: ; 0x80b5
ld hl, vBGMap0
.fillLoop
xor a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld a, h
cp $a0 ; end of VRAM
jr nz, .fillLoop
ret
FillTilesVRAM: ; 0x80c3
ld hl, vTiles0
.fillLoop
ld a, c
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld a, h
cp (vBGMap0 >> 8)
jr nz, .fillLoop
ret
Func_80d1: ; 0x80d1
ld [de], a
inc de
ld b, $4
.asm_80d5
ld c, $8
push hl
.asm_80d8
ld a, [hli]
ld [de], a
ld a, [hli]
ld [de], a
dec c
jr nz, .asm_80d8
pop hl
dec b
jr nz, .asm_80d5
ret
INCBIN "baserom.gbc",$80e4,$8104 - $80e4
Func_8104: ; 0x8104
ld a, [hNewlyPressedButtons]
ld b, a
and (D_DOWN | D_UP)
jr z, .asm_8115
ld a, [hGameBoyColorFlag]
ld [$ffc4], a
xor $1
ld [hGameBoyColorFlag], a
jr .asm_811d
.asm_8115
bit BIT_A_BUTTON, b
ret z
ld hl, wScreenState
inc [hl]
ret
.asm_811d
ld a, [hGameBoyColorFlag]
and a
jr nz, .asm_812e
ld a, $2
ld bc, $413a ; todo
ld de, LoadTileLists ; todo
call Func_10c5
ret
.asm_812e
ld a, $2
ld bc, $4144 ; todo
ld de, LoadTileLists ; todo
call Func_10c5
ret
INCBIN "baserom.gbc",$813a,$814e - $813a
Func_814e: ; 0x414e
call Func_cb5
call Func_576
ld hl, wCurrentScreen
inc [hl]
xor a
ld [wScreenState], a
ret
HandleEraseAllDataMenu: ; 0x815d
ld a, [wScreenState]
rst $18 ; calls JumpToFuncInTable
EraseAllDataMenuFunctions: ; 0x8161
dw CheckForResetButtonCombo
dw HandleEraseAllDataInput
dw ExitEraseAllDataMenu
CheckForResetButtonCombo: ; 0x8167
ld a, [hJoypadState]
cp (D_UP | D_RIGHT | START | SELECT)
jr z, .heldCorrectButtons
ld hl, wCurrentScreen
inc [hl]
ret
.heldCorrectButtons
ld a, $41
ld [$ff9e], a
ld a, $e4
ld [$d80c], a
xor a
ld [$d80d], a
ld [$d80e], a
ld [hBoardXShift], a
ld [hBoardYShift], a
ld a, [hGameBoyColorFlag]
ld hl, EraseAllDataGfxPointers
call LoadVideoData
call ClearOAMBuffer
call Func_b66
call Func_588
call Func_14a4
call Func_bbe
ld hl, wScreenState
inc [hl]
ret
EraseAllDataGfxPointers: ; 0x81a2
dw EraseAllDataGfx_GameBoy
dw EraseAllDataGfx_GameBoyColor
EraseAllDataGfx_GameBoy: ; 0x81a6
dw EraseAllDataGfx
db Bank(EraseAllDataGfx)
dw vTiles2
dw $c00
dw EraseAllDataTilemap
db Bank(EraseAllDataTilemap)
dw vBGMap0
dw $1000
db $FF, $FF ; terminators
EraseAllDataGfx_GameBoyColor: ; 0x81b6
dw EraseAllDataGfx
db Bank(EraseAllDataGfx)
dw vTiles2
dw $c00
dw EraseAllDataTilemap
db Bank(EraseAllDataTilemap)
dw vBGMap0
dw $1000
dw $7c00
db $2F
dw vBGMap0
dw $1002
dw $4d80
db $37
dw $0000
dw $101
db $FF, $FF ; terminators
HandleEraseAllDataInput: ; 0x81d4
ld a, [hNewlyPressedButtons]
bit BIT_A_BUTTON, a
jr z, .checkForBButton
ld hl, $a000
xor a
ld b, a
.eraseSavedDataLoop
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
dec b
jr nz, .eraseSavedDataLoop
ld hl, wScreenState
inc [hl]
ret
.checkForBButton
bit BIT_B_BUTTON, a
ret z
ld hl, wScreenState
inc [hl]
ret
ExitEraseAllDataMenu: ; 0x820f
call Func_cb5
call Func_576
ld hl, wCurrentScreen
inc [hl]
xor a
ld [wScreenState], a
ret
HandleCopyrightScreen: ; 0x821e
ld a, [wScreenState]
rst $18 ; calls JumpToFuncInTable
CopyrightScreenFunctions: ; 0x8222
dw FadeInCopyrightScreen
dw DisplayCopyrightScreen
dw FadeOutCopyrightScreenAndLoadData
FadeInCopyrightScreen: ; 0x8228
ld a, $41
ld [$ff9e], a
ld a, $e4
ld [$d80c], a
xor a
ld [$d80d], a
ld [$d80e], a
ld [hBoardXShift], a
ld [hBoardYShift], a
ld a, [hGameBoyColorFlag]
ld hl, CopyrightTextGfxPointers
call LoadVideoData
call ClearOAMBuffer
call Func_b66
call Func_588
call Func_14a4
ld bc, $0050
call Func_93f
call Func_bbe
ld hl, wScreenState
inc [hl]
ret
CopyrightTextGfxPointers: ; 0x825e
dw CopyrightTextGfx_GameBoy
dw CopyrightTextGfx_GameBoyColor
CopyrightTextGfx_GameBoy: ; 0x8262
dw CopyrightTextGfx
db Bank(CopyrightTextGfx)
dw vTiles1
dw $1000
dw CopyrightScreenTilemap
db Bank(CopyrightScreenTilemap)
dw vBGMap0
dw $1000
db $FF, $FF ; terminators
CopyrightTextGfx_GameBoyColor: ; 0x8272
dw CopyrightTextGfx
db Bank(CopyrightTextGfx)
dw vTiles1
dw $1000 ; todo (This is the number of bytes to copy times 4 with two flags as lower 2 bits)
dw CopyrightScreenTilemap
db Bank(CopyrightScreenTilemap)
dw vBGMap0
dw $1000
dw $6400
db $31
dw vBGMap0
dw $1002
dw $5000 ; Some kind of GBC palette data
db $37
dw $0000
dw $101
db $FF, $FF ; terminators
DisplayCopyrightScreen: ; 0x8290
ld b, $5a ; number of frames to show the copyright screen
.delayLoop
push bc
rst $10 ; wait for next frame
pop bc
ld a, b
cp $2d ; player can press A button to skip copyright screen once counter is below $2d
jr nc, .decrementCounter
ld a, [hNewlyPressedButtons]
bit BIT_A_BUTTON, a
jr nz, .done
.decrementCounter
dec b
jr nz, .delayLoop
.done
ld hl, wScreenState
inc [hl]
ret
FadeOutCopyrightScreenAndLoadData: ; 0x82a8
call Func_cb5
call Func_576
ld hl, $a000
ld de, wRedHighScore1Points
ld bc, $0082
call Func_f0c
jr c, .loadedHighScores
ld [$ff8a], a
ld a, Bank(CopyInitialHighScores)
ld hl, CopyInitialHighScores
call BankSwitch
.loadedHighScores
ld hl, $a10c
ld de, wPokedexFlags
ld bc, $0098
call Func_f0c
jr c, .asm_82de
ld [$ff8a], a
ld a, $a
ld hl, $4d66
call BankSwitch
.asm_82de
ld hl, $a244
ld de, wKeyConfigs
ld bc, $000e
call Func_f0c
jr c, .asm_82f6
ld [$ff8a], a
ld a, Bank(Func_ca3a)
ld hl, Func_ca3a
call BankSwitch
.asm_82f6
ld hl, $a268
ld de, wPartyMons
ld bc, $04c3 ; This is saved game data from when the player saves in the middle of a game.
call Func_f0c
jr c, .asm_8308
xor a
ld [$d7c2], a ; if this is non-zero, the main menu will prompt for "continue or new game?".
.asm_8308
ld hl, wCurrentScreen
inc [hl]
xor a
ld [wScreenState], a
ret
InitializeStage: ; 0x8311
ld hl, wc000
ld bc, $0a00
call ClearData
ld a, $1
ld [$ff4f], a
ld a, [$d805]
and a
jr nz, .asm_8331
ld hl, vBGMap1
ld bc, $0400
ld a, $0
call Func_63e
jr .asm_833c
.asm_8331
ld hl, vBGMap1
ld bc, $0400
ld a, $8
call Func_63e
.asm_833c
xor a
ld [$ff4f], a
call Func_8388
ld a, [wCurrentStage]
call CallInFollowingTable
CallTable_8348: ; 0x8348
; STAGE_RED_FIELD_TOP
dw InitRedField
db Bank(InitRedField), $00
; STAGE_RED_FIELD_BOTTOM
dw InitRedField
db Bank(InitRedField), $00
dw Func_18000
db Bank(Func_18000), $00
dw Func_18000
db Bank(Func_18000), $00
; STAGE_BLUE_FIELD_TOP
dw InitBlueField
db Bank(InitBlueField), $00
; STAGE_BLUE_FIELD_BOTTOM
dw InitBlueField
db Bank(InitBlueField), $00
; STAGE_GENGAR_BONUS
dw InitGengarBonusStage
db Bank(InitGengarBonusStage), $00
; STAGE_GENGAR_BONUS
dw InitGengarBonusStage
db Bank(InitGengarBonusStage), $00
; STAGE_MEWTWO_BONUS
dw InitMewtwoBonusStage
db Bank(InitMewtwoBonusStage), $00
; STAGE_MEWTWO_BONUS
dw InitMewtwoBonusStage
db Bank(InitMewtwoBonusStage), $00
; STAGE_MEOWTH_BONUS
dw InitMeowthBonusStage
db Bank(InitMeowthBonusStage), $00
; STAGE_MEOWTH_BONUS
dw InitMeowthBonusStage
db Bank(InitMeowthBonusStage), $00
; STAGE_DIGLETT_BONUS
dw InitDiglettBonusStage
db Bank(InitDiglettBonusStage), $00
; STAGE_DIGLETT_BONUS
dw InitDiglettBonusStage
db Bank(InitDiglettBonusStage), $00
; STAGE_SEEL_BONUS
dw InitSeelBonusStage
db Bank(InitSeelBonusStage), $00
; STAGE_SEEL_BONUS
dw InitSeelBonusStage
db Bank(InitSeelBonusStage), $00
Func_8388: ; 0x8388
ld a, [$d7c1]
and a
jr z, .asm_8398
ld hl, wSubTileBallXPos
ld bc, $0037
call ClearData
ret
.asm_8398
ld a, [wCurrentStage]
cp $6
ret nc
ld hl, wPartyMons
ld bc, $0170
call ClearData
ld hl, $d473 ; todo
ld bc, $0039
call ClearData
ld hl, $d4ad
ld bc, $034d
call ClearData
ret
StartBallForStage: ; 0x83ba
ld a, [$d7c1]
and a
jr z, .asm_83c7
call Func_8444
call Func_8461
ret
.asm_83c7
xor a
ld [wBallXVelocity], a
ld [wBallXVelocity + 1], a
ld [wBallYVelocity], a
ld [wBallYVelocity + 1], a
ld [$d7ae], a
ld [$d7af], a
ld [$d7b2], a
ld [$d7b3], a
ld [$d7b0], a
ld [$d7b1], a
ld [$d7b4], a
ld [$d7b5], a
ld [wBallSpin], a
ld [wBallRotation], a
inc a
ld [$d548], a
ld [$d549], a
ld a, $20
ld [$d7ab], a
ld a, [wCurrentStage]
call CallInFollowingTable
CallTable_8404: ; 0x8404
; STAGE_RED_FIELD_TOP
dw StartBallRedField
db Bank(StartBallRedField), $00
; STAGE_RED_FIELD_BOTTOM
dw StartBallRedField
db Bank(StartBallRedField), $00
dw Func_1804a
db Bank(Func_1804a), $00
dw Func_1804a
db Bank(Func_1804a), $00
; STAGE_BLUE_FIELD_TOP
dw StartBallBlueField
db Bank(StartBallBlueField), $00
; STAGE_BLUE_FIELD_BOTTOM
dw StartBallBlueField
db Bank(StartBallBlueField), $00
; STAGE_GENGAR_BONUS
dw StartBallGengarBonusStage
db Bank(StartBallGengarBonusStage), $00
; STAGE_GENGAR_BONUS
dw StartBallGengarBonusStage
db Bank(StartBallGengarBonusStage), $00
; STAGE_MEWTWO_BONUS
dw StartBallMewtwoBonusStage
db Bank(StartBallMewtwoBonusStage), $00
; STAGE_MEWTWO_BONUS
dw StartBallMewtwoBonusStage
db Bank(StartBallMewtwoBonusStage), $00
; STAGE_MEOWTH_BONUS
dw StartBallMeowthBonusStage
db Bank(StartBallMeowthBonusStage), $00
; STAGE_MEOWTH_BONUS
dw StartBallMeowthBonusStage
db Bank(StartBallMeowthBonusStage), $00
; STAGE_DIGLETT_BONUS
dw StartBallDiglettBonusStage
db Bank(StartBallDiglettBonusStage), $00
; STAGE_DIGLETT_BONUS
dw StartBallDiglettBonusStage
db Bank(StartBallDiglettBonusStage), $00
; STAGE_SEEL_BONUS
dw StartBallSeelBonusStage
db Bank(StartBallSeelBonusStage), $00
; STAGE_SEEL_BONUS
dw StartBallSeelBonusStage
db Bank(StartBallSeelBonusStage), $00
Func_8444: ; 0x8444
ld a, [wSpecialMode]
and a
jr z, .asm_8460
ld a, [$d550]
and a
jr nz, .asm_8460
ld a, [$d5bb]
and a
jr z, .asm_8460
ld [$ff8a], a
ld a, Bank(Func_10464)
ld hl, Func_10464
call BankSwitch
.asm_8460
ret
Func_8461: ; 0x8461
ld a, [$d7c0]
call SetSongBank
ld a, [$d7bf]
ld e, a
ld d, $0
call Func_490
ret
Func_8471: ; 0x8471
ld a, [wCurrentStage]
call CallInFollowingTable
CallTable_8477: ; 0x8477
; STAGE_RED_FIELD_TOP
dw Func_14000
db Bank(Func_14000), $00
; STAGE_RED_FIELD_BOTTOM
dw Func_1401c
db Bank(Func_1401c), $00
dw Func_1805f
db Bank(Func_1805f), $00
dw Func_18060
db Bank(Func_18060), $00
; STAGE_BLUE_FIELD_TOP
dw Func_1c165
db Bank(Func_1c165), $00
; STAGE_BLUE_FIELD_BOTTOM
dw Func_1c191
db Bank(Func_1c191), $00
; STAGE_GENGAR_BONUS
dw Func_1818b
db Bank(Func_1818b), $00
; STAGE_GENGAR_BONUS
dw Func_1818b
db Bank(Func_1818b), $00
; STAGE_MEWTWO_BONUS
dw Func_19310
db Bank(Func_19310), $00
; STAGE_MEWTWO_BONUS
dw Func_19310
db Bank(Func_19310), $00
; STAGE_MEOWTH_BONUS
dw Func_24128
db Bank(Func_24128), $00
; STAGE_MEOWTH_BONUS
dw Func_24128
db Bank(Func_24128), $00
; STAGE_DIGLETT_BONUS
dw Func_19a76
db Bank(Func_19a76), $00
; STAGE_DIGLETT_BONUS
dw Func_19a76
db Bank(Func_19a76), $00
; STAGE_SEEL_BONUS
dw Func_25b97
db Bank(Func_25b97), $00
; STAGE_SEEL_BONUS
dw Func_25b97
db Bank(Func_25b97), $00
Func_84b7: ; 0x84b7
ld a, [wCurrentStage]
call CallInFollowingTable
PointerTable_84bd: ; 0x84bd
; STAGE_RED_FIELD_TOP
dw Func_1755c
db Bank(Func_1755c), $00
; STAGE_RED_FIELD_BOTTOM
dw Func_1757e
db Bank(Func_1757e), $00
dw Func_18079
db Bank(Func_18079), $00
dw Func_18084
db Bank(Func_18084), $00
; STAGE_BLUE_FIELD_TOP
dw Func_1f330
db Bank(Func_1f330), $00
; STAGE_BLUE_FIELD_BOTTOM
dw Func_1f35a
db Bank(Func_1f35a), $00
; STAGE_GENGAR_BONUS
dw Func_18faf
db Bank(Func_18faf), $00
; STAGE_GENGAR_BONUS
dw Func_18faf
db Bank(Func_18faf), $00
; STAGE_MEWTWO_BONUS
dw Func_1994e
db Bank(Func_1994e), $00
; STAGE_MEWTWO_BONUS
dw Func_1994e
db Bank(Func_1994e), $00
; STAGE_MEOWTH_BONUS
dw Func_2583b
db Bank(Func_2583b), $00
; STAGE_MEOWTH_BONUS
dw Func_2583b
db Bank(Func_2583b), $00
; STAGE_DIGLETT_BONUS
dw Func_1ac98
db Bank(Func_1ac98), $00
; STAGE_DIGLETT_BONUS
dw Func_1ac98
db Bank(Func_1ac98), $00
; STAGE_SEEL_BONUS
dw Func_26b7e
db Bank(Func_26b7e), $00
; STAGE_SEEL_BONUS
dw Func_26b7e
db Bank(Func_26b7e), $00
INCBIN "baserom.gbc",$84fd,$8524 - $84fd
Func_8524: ; 0x8524
ld hl, $d46f
ld bc, $0c01
.asm_852a
ld a, [hl]
swap a
and $f
call Func_8543
inc de
dec b
ld a, [hld]
and $f
call Func_8543
inc de
dec b
jr nz, .asm_852a
ld a, $86
ld [de], a
inc de
ret
Func_8543: ; 0x8543
jr nz, .asm_854c
ld a, b
dec a
jr z, .asm_854c
ld a, c
and a
ret nz
.asm_854c
add $86
ld [de], a
ld c, $0
ld a, b
cp $c
jr z, .asm_8561
cp $9
jr z, .asm_8561
cp $6
jr z, .asm_8561
cp $3
ret nz
.asm_8561
set 7, e
ld a, $82
ld [de], a
res 7, e
ret
INCBIN "baserom.gbc",$8569,$8576 - $8569
Func_8576: ; 0x8576
ld h, b
ld l, c
ld a, [$d477]
ld e, a
ld d, $d4
ld a, [wBallType]
and a
jr nz, .asm_8585
inc a
.asm_8585
ld b, a
jr asm_8592
Func_8588: ; 0x8588
ld h, b
ld l, c
ld a, [$d477]
ld e, a
ld d, $d4
ld b, $1
asm_8592:
push hl
ld a, [de]
add [hl]
daa
ld [de], a
inc de
inc hl
ld a, [de]
adc [hl]
daa
ld [de], a
inc de
inc hl
ld a, [de]
adc [hl]
daa
ld [de], a
inc de
inc hl
ld a, [de]
adc [hl]
daa
ld [de], a
inc de
inc hl
ld a, [de]
adc [hl]
daa
ld [de], a
inc de
inc hl
ld a, [de]
adc [hl]
daa
ld [de], a
inc de
inc hl
ld a, e
cp $60
jr nz, .asm_85be
ld e, $0
.asm_85be
pop hl
dec b
jr nz, asm_8592
ld a, e
ld [$d477], a
ret
Func_85c7: ; 0x85c7
ld a, [$ffb3]
and $3
ret nz
ld a, [$d478]
ld l, a
ld h, $d4
ld de, wScore
ld a, [$d477]
cp l
jr nz, .asm_85de
ld [$d479], a
.asm_85de
push hl
ld a, [hli]
or [hl]
inc hl
or [hl]
inc hl
or [hl]
inc hl
or [hl]
inc hl
or [hl]
pop hl
jr nz, .asm_85f3
ld a, [$d479]
ld [$d478], a
ret
.asm_85f3
ld a, [de]
add [hl]
daa
ld [de], a
ld [hl], $0
inc de
inc hl
ld a, [de]
adc [hl]
daa
ld [de], a
ld [hl], $0
inc de
inc hl
ld a, [de]
adc [hl]
daa
ld [de], a
ld [hl], $0
inc de
inc hl
ld a, [de]
adc [hl]
daa
ld [de], a
ld [hl], $0
inc de
inc hl
ld a, [de]
adc [hl]
daa
ld [de], a
ld [hl], $0
inc de
inc hl
ld a, [de]
adc [hl]
daa
ld [de], a
ld [hl], $0
call c, SetMaxScore
inc de
inc hl
ld a, l
cp $60
jr nz, .asm_862d
ld l, $0
.asm_862d
ld a, l
ld [$d478], a
ld a, $1
ld [$d49f], a
ret
SetMaxScore: ; 0x8637
push hl
ld hl, wScore
ld a, $99
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
pop hl
ret
Func_8645: ; 0x8645
xor a
ld [$d49f], a
ld de, $c647
call Func_8524
ret
Func_8650: ; 0x8650
ld a, [wCurrentStage]
bit 0, a
jr nz, .bottomStage
ld a, $86
ld [$ffa6], a
ret
.bottomStage
ld a, [wBallYPos + 1]
cp $84
jr nc, .asm_8670
ld a, [$ffa6]
sub $3
cp $86
jr nc, .asm_866d
ld a, $86
.asm_866d
ld [$ffa6], a
ret
.asm_8670
ld a, [$ffa6]
add $3
cp $90
jr c, .asm_867a
ld a, $90
.asm_867a
ld [$ffa6], a
ret
StartTimer: ; 0x867d
; Starts the timer that counts down with the specified starting time when things
; like CatchEm Mode starts.
; input: b = minutes
; c = seconds
ld a, c
ld [wTimerSeconds], a
ld a, b
ld [wTimerMinutes], a
xor a
ld [wTimerFrames], a
ld [$d57e], a
ld [$d57f], a
ld a, $1
ld [$d57d], a
ld a, $1
ld [$d580], a
ld [$ff8a], a
ld a, Bank(Func_1404a)
ld hl, Func_1404a
call BankSwitch
ret
Func_86a4: ; 0x86a4
ld a, [$d57f]
and a
ret nz
ld a, [wTimerFrames]
inc a
cp $3c
jr c, .asm_86b2
xor a
.asm_86b2
ld [wTimerFrames], a
ret c
ld hl, wTimerMinutes
ld a, [hld]
or [hl]
jr nz, .asm_86c3
ld a, $1
ld [$d57e], a
ret
.asm_86c3
ld a, [hl]
sub $1
daa
jr nc, .asm_86cb
ld a, $59
.asm_86cb
ld [hli], a
ld a, [hl]
sbc $0
daa
ld [hl], a
ret
Func_86d2: ; 0x86d2
xor a
ld [$d57d], a
ret
HandleInGameMenu: ; 0x86d7
; Routine responsible for the "SAVE"/"CANCEL" menu.
ld a, [$d917]
push af
ld a, $1
ld [$d917], a
call Func_30e8
xor a
ld [$d4aa], a
ld hl, wcBottomMessageText
ld a, $81
ld b, $30
.clearLoop
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
dec b
jr nz, .clearLoop
ld de, $c524
ld hl, SaveText
call Func_8797
ld de, $c564
ld hl, CancelText
call Func_8797
ld a, Bank(InGameMenuSymbolsGfx)
ld hl, InGameMenuSymbolsGfx
ld de, vTiles1 + $60
ld bc, $0010
call LoadVRAMData
ld a, $0
ld hl, wcBottomMessageText
ld de, vBGMap1
ld bc, $00c0
call LoadVRAMData
ld a, $60
ld [$ffa6], a
dec a
ld [$ffa2], a
ld a, $fd
ld [$ffaf], a
call HandleInGameMenuSelection
ld a, [wInGameMenuIndex]
and a
jr nz, .pickedCancel
ld a, $1
ld [$d7c2], a
ld hl, wPartyMons
ld de, $a268
ld bc, $04c3
call Func_f1a
xor a
ld [$d803], a
ld [$d804], a
.pickedCancel
ld bc, $003c
call Func_93f
ld a, $86
ld [$ffa6], a
ld a, $83
ld [$ffa2], a
ld [$ffa8], a
ld a, $ff
ld [$ffaf], a
ld a, [hGameBoyColorFlag]
and a
jr nz, .asm_8778
ld a, Bank(StageRedFieldTopStatusBarSymbolsGfx_GameBoy)
ld hl, StageRedFieldTopStatusBarSymbolsGfx_GameBoy + $60
ld de, vTiles1 + $60
ld bc, $0010
call LoadVRAMData
jr .asm_8786
.asm_8778
ld a, Bank(StageRedFieldTopStatusBarSymbolsGfx_GameBoyColor)
ld hl, StageRedFieldTopStatusBarSymbolsGfx_GameBoyColor + $60
ld de, vTiles1 + $60
ld bc, $0010
call LoadVRAMData
.asm_8786
call Func_30e8
pop af
ld [$d917], a
ld a, $1
ld [$d4aa], a
ld a, [wInGameMenuIndex]
and a
ret
Func_8797: ; 0x8797
ld a, [hli]
and a
ret z
add $bf
ld [de], a
inc de
jr Func_8797
SaveText: ; 0x87a0
db "SAVE@"
CancelText: ; 0x87a5
db "CANCEL@"
HandleInGameMenuSelection: ; 0x87ac
ld a, $1
ld [wInGameMenuIndex], a
.waitForAButton
call MoveInGameMenuCursor
call DrawInGameMenu
rst $10
ld a, [hNewlyPressedButtons]
bit BIT_A_BUTTON, a
jr z, .waitForAButton
ld de, $0001
call PlaySoundEffect
ret
MoveInGameMenuCursor: ; 0x87c5
; Moves the cursor up or down in the "SAVE"/"CANCEL" in-game menu
ld a, [hNewlyPressedButtons]
ld b, a
ld a, [wInGameMenuIndex]
bit BIT_D_UP, b
jr z, .didntPressUp
and a ; is the cursor already on "SAVE"?
ret z
dec a
ld [wInGameMenuIndex], a
ld de, $0003
call PlaySoundEffect
ret
.didntPressUp
bit BIT_D_DOWN, b
ret z
cp $1 ; is the cursor already on "CANCEL"?
ret z
inc a
ld [wInGameMenuIndex], a
ld de, $0003
call PlaySoundEffect
ret
DrawInGameMenu: ; 0x87ed
ld a, $81
ld [$c523], a
ld [$c563], a
ld a, [wInGameMenuIndex]
ld c, a
swap c
sla c
sla c
ld b, $0
ld hl, $c523
add hl, bc
ld a, $86
ld [hl], a
ld a, $0
ld hl, wcBottomMessageText
ld de, vBGMap1
ld bc, $00c0
call LoadVRAMData
ret
INCBIN "baserom.gbc",$8817,$c000 - $8817
SECTION "bank3", ROMX, BANK[$3]
HandleTitlescreen: ; 0xc000
ld a, [wScreenState]
rst $18 ; calls JumpToFuncInTable
TitlescreenFunctions: ; 0xc004
dw FadeInTitlescreen
dw TitlescreenLoop ; titlescreen loop
dw Func_c10e ; previously saved game menu
dw Func_c1cb ; game start, pokedex, option
dw GoToHighScoresFromTitlescreen ; go to high scores
FadeInTitlescreen: ; 0xc00e
ld a, $43
ld [$ff9e], a
ld a, $e4
ld [$d80c], a
ld a, $d2
ld [$d80d], a
ld a, $e1
ld [$d80e], a
xor a
ld [hBoardXShift], a
ld [hBoardYShift], a
ld hl, TitlescreenFadeInGfxPointers
ld a, [hGameBoyColorFlag]
call LoadVideoData
ld a, $1
ld [wTitleScreenGameStartCursorSelection], a
call ClearOAMBuffer
ld a, $2
ld [wTitleScreenPokeballAnimationCounter], a
call HandleTitlescreenAnimations
call Func_b66
ld a, $11
call SetSongBank
ld de, $0004
call Func_490
call Func_588
call Func_bbe ; this does the fading
ld hl, wScreenState
inc [hl]
ret
TitlescreenFadeInGfxPointers: ; 0xc057
dw TitlescreenFadeInGfx_GameBoy
dw TitlescreenFadeInGfx_GameBoyColor
TitlescreenFadeInGfx_GameBoy: ; 0xc05b
dw TitlescreenGfx
db Bank(TitlescreenGfx)
dw vTiles0
dw $6000
dw TitlescreenTilemap
db Bank(TitlescreenTilemap)
dw vBGMap0
dw $900
db $FF, $FF ; terminators
TitlescreenFadeInGfx_GameBoyColor: ; 0xc06b
dw TitlescreenFadeInGfx
db Bank(TitlescreenFadeInGfx)
dw vTiles0
dw $6000
dw TitlescreenTilemap
db Bank(TitlescreenTilemap)
dw vBGMap0
dw $900
dw $5c00
db $31
dw vBGMap0
dw $902
dw $4f80
db $37
dw $0000
dw $101
db $FF, $FF ; terminators
TitlescreenLoop: ; 0xc089
call Func_c0ee
call HandleTitlescreenAnimations
ld a, [hNewlyPressedButtons]
bit BIT_A_BUTTON, a ; was A button pressed?
jr z, .AButtonNotPressed
ld a, [wTitleScreenCursorSelection]
and a
jr nz, .asm_c0d3
; player chose "Game Start"
ld a, [$d7c2] ; if this is non-zero, the main menu will prompt for "continue or new game?".
and a
jr z, .noPreviouslySavedGame
ld de, $0001
call PlaySoundEffect
xor a
ld [$d910], a
ld a, $2
ld [$d911], a
ld a, $1
ld [wTitleScreenGameStartCursorSelection], a
ld hl, wScreenState
inc [hl]
ret
.noPreviouslySavedGame
ld de, $0000
call Func_490
rst $10
ld de, $0027
call PlaySoundEffect
ld bc, $0037
call Func_93f
ld a, $3
ld [wScreenState], a
ret
.asm_c0d3
ld de, $0001
call PlaySoundEffect
ld a, $3
ld [wScreenState], a
ret
.AButtonNotPressed
bit BIT_B_BUTTON, a ; was B button pressed?
ret z
ld de, $0001
call PlaySoundEffect
ld a, $4
ld [wScreenState], a
ret
Func_c0ee: ; 0xc0ee
ld hl, wTitleScreenCursorSelection
ld c, $2
call Func_c1fc
ret
HandleTitlescreenAnimations: ; 0xc0f7
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_c104
ld bc, $2040
ld a, $62 ; seemingly-unused OAM data for titlescreen. It's just blank tiles.
call LoadOAMData
.asm_c104
call Func_c21d ; does nothing...
call HandleTitlescreenPikachuBlinkingAnimation
call HandleTitlescreenPokeballAnimation
ret
Func_c10e: ; 0xc10e
call Func_c1a2
call Func_c1b1
ld a, [$d910]
cp $6
ret nz
ld a, [hNewlyPressedButtons]
bit 0, a
jr z, .asm_c17c
ld de, $0000
call Func_490
rst $10
ld de, $0027
call PlaySoundEffect
ld bc, $0041
call Func_93f
ld a, [wTitleScreenGameStartCursorSelection]
and a
jr z, .asm_c177
call Func_cb5
call Func_576
ld a, [$d7c2]
and a
jr z, .asm_c173
ld hl, $a268
ld de, wPartyMons
ld bc, $04c3
call Func_f0c
jr nc, .asm_c173
xor a
ld [$d7c2], a
ld hl, wPartyMons
ld de, $a268
ld bc, $04c3
call Func_f1a
ld a, $1
ld [$d7c1], a
ld a, $4
ld [wCurrentScreen], a
ld a, $0
ld [wScreenState], a
ret
.asm_c173
xor a
ld [$d7c1], a
.asm_c177
ld hl, wScreenState
inc [hl]
ret
.asm_c17c
bit 1, a
ret z
ld de, $0001
call PlaySoundEffect
ld a, $8
ld [$d910], a
ld a, $2
ld [$d911], a
.asm_c18f
call Func_926
rst $10
call Func_c1b1
ld a, [$d910]
cp $e
jr nz, .asm_c18f
ld hl, wScreenState
dec [hl]
ret
Func_c1a2: ; 0xc1a2
ld a, [$d910]
cp $6
ret nz
ld hl, wTitleScreenGameStartCursorSelection
ld c, $1
call Func_c1fc
ret
Func_c1b1: ; 0xc1b1
call Func_c2df
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_c1c1
ld bc, $2040
ld a, $62
call LoadOAMData
.asm_c1c1
call Func_c21d
call HandleTitlescreenPikachuBlinkingAnimation
call HandleTitlescreenPokeballAnimation
ret
Func_c1cb: ; 0c1cb
call Func_cb5
call Func_576
ld a, [wTitleScreenCursorSelection]
ld c, a
ld b, $0
ld hl, Data_c1e4
add hl, bc
ld a, [hl]
ld [wCurrentScreen], a
xor a
ld [wScreenState], a
ret
Data_c1e4: ; 0xc1e4
db SCREEN_FIELD_SELECT, SCREEN_POKEDEX, SCREEN_OPTIONS
GoToHighScoresFromTitlescreen: ; 0xc1e7
call Func_cb5
call Func_576
ld a, SCREEN_HIGH_SCORES
ld [wCurrentScreen], a
ld a, $1
ld [wScreenState], a
xor a
ld [$da7f], a
ret
Func_c1fc: ; 0xc1fc
ld a, [hPressedButtons]
ld b, a
ld a, [hl]
bit 6, b
jr z, .asm_c20f
and a
ret z
dec a
ld [hl], a
ld de, $0003
call PlaySoundEffect
ret
.asm_c20f
bit 7, b
ret z
cp c
ret z
inc a
ld [hl], a
ld de, $0003
call PlaySoundEffect
ret
Func_c21d: ; 0xc21d
; World's greatest function.
ret
HandleTitlescreenPikachuBlinkingAnimation: ; 0xc21e
ld a, [wTitleScreenBlinkAnimationFrame]
sla a
ld c, a
ld b, $0
ld hl, TitleScreenBlinkAnimation
add hl, bc
ld bc, $3810
ld a, [hl]
cp $5a ; blink animation frame 1 OAM id
call nz, LoadOAMData
ld a, [wTitleScreenBlinkAnimationCounter]
dec a
jr nz, .done
inc hl
inc hl ; hl points to next frame in TitleScreenBlinkAnimation array
ld a, [hl]
and a ; reached the end of the animation frames?
jr z, .saveAnimationFrame
ld a, [wTitleScreenBlinkAnimationFrame]
inc a
.saveAnimationFrame
ld [wTitleScreenBlinkAnimationFrame], a
sla a
ld c, a
ld b, $0
ld hl, (TitleScreenBlinkAnimation + 1)
add hl, bc
ld a, [hl] ; a contains second byte in the current animation frame data
cp $3c ; is this a long-duration animation frame?
jr c, .done
ld c, a
call GenRandom
and $1f
add c
.done
ld [wTitleScreenBlinkAnimationCounter], a
ret
TitleScreenBlinkAnimation: ; 0xc25f
; Array of animation frames. The animation is looped when it finishes.
; first byte = OAM data id to load
; second byte = number of frames to show this animation.
db $5a, $c8
db $5b, $04
db $5c, $04
db $5b, $04
db $5a, $3c
db $5b, $03
db $5c, $03
db $5b, $03
db $5a, $03
db $5b, $03
db $5c, $03
db $5b, $03
db $00 ; terminator
HandleTitlescreenPokeballAnimation: ; 0xc278
ld a, [wTitleScreenCursorSelection]
sla a
ld c, a
ld b, $0
ld hl, TitleScreenPokeballCoordOffsets
add hl, bc
ld a, [hli]
ld c, a
ld a, [hli]
ld b, a
ld e, $0
ld a, [wScreenState] ; TODO: I think this is the "titlescreen state" byte.
cp $1
jr nz, .loadOAM ; skip getting the correct animation frame
ld a, [wTitleScreenBouncingBallAnimationFrame]
sla a
ld e, a
.loadOAM
ld d, $0
ld hl, TitleScreenPokeballAnimation
add hl, de
ld a, [hl] ; a contains OAM id
call LoadOAMData
ld a, [wTitleScreenPokeballAnimationCounter]
dec a
jr nz, .done
ld a, [wTitleScreenBouncingBallAnimationFrame]
sla a
ld c, a
ld b, $0
ld hl, (TitleScreenPokeballAnimation + 2) ; first frame of actual animation
add hl, bc
ld a, [hl]
and a
jr z, .saveAnimationFrame ; end of list?
ld a, [wTitleScreenBouncingBallAnimationFrame]
inc a
.saveAnimationFrame
ld [wTitleScreenBouncingBallAnimationFrame], a
sla a
ld c, a
ld b, $0
ld hl, (TitleScreenPokeballAnimation + 1) ; first duration
add hl, bc
ld a, [hl]
.done
ld [wTitleScreenPokeballAnimationCounter], a
ret
TitleScreenPokeballAnimation: ; 0xc2cc
; first byte = OAM id
; second byte = animation frame duration
db $5D, $02
db $5E, $06
db $5F, $02
db $60, $04
db $61, $06
db $5F, $04
db $00 ; terminator
TitleScreenPokeballCoordOffsets: ; 0xc2d9
db $67, $15
db $73, $15
db $7F, $15
Func_c2df: ; 0xc2df
ld bc, $4446
ld a, [$d910]
cp $6
jr nz, .asm_c2f0
ld a, [wTitleScreenGameStartCursorSelection]
add $58
jr .asm_c2fd
.asm_c2f0
ld a, [$d910]
sla a
ld e, a
ld d, $0
ld hl, $432b
add hl, de
ld a, [hl]
.asm_c2fd
call LoadOAMData
ld a, [$d911]
dec a
jr nz, .asm_c327
ld a, [$d910]
sla a
ld c, a
ld b, $0
ld hl, $432d
add hl, bc
ld a, [hl]
and a
ld a, [$d910]
jr z, .asm_c31d
inc a
ld [$d910], a
.asm_c31d
sla a
ld c, a
ld b, $0
ld hl, $432c
add hl, bc
ld a, [hl]
.asm_c327
ld [$d911], a
ret
INCBIN "baserom.gbc",$c32b,$c34a - $c32b
HandleOptionsScreen: ; 0xc34a
ld a, [wScreenState]
rst $18 ; calls JumpToFuncInTable
OptionsScreenFunctions: ; 0xc34e
dw Func_c35a
dw Func_c400
dw Func_c483
dw Func_c493
dw Func_c506
dw Func_c691
Func_c35a: ; 0xc35a
ld a, $47
ld [$ff9e], a
ld a, $e4
ld [$d80c], a
ld [$d80d], a
ld a, $d2
ld [$d80e], a
xor a
ld [hBoardXShift], a
ld [hBoardYShift], a
ld hl, PointerTable_c3b9
ld a, [hGameBoyColorFlag]
call LoadVideoData
call ClearOAMBuffer
ld a, $2
ld [$d921], a
ld [$d91d], a
ld a, $9
ld [$d91f], a
call Func_c43a
call Func_c948
call Func_b66
ld a, $12
call SetSongBank
ld de, $0002
call Func_490
call Func_588
ld a, [wSoundTestCurrentBackgroundMusic]
ld hl, $9967
call RedrawSoundTestID
ld a, [wSoundTextCurrentSoundEffect]
ld hl, $99a7
call RedrawSoundTestID
call Func_bbe
ld hl, wScreenState
inc [hl]
ret
PointerTable_c3b9: ; 0xc3b9
dw DataArray_c3bd
dw DataArray_c3d4
DataArray_c3bd: ; 0xc3bd
dw OptionMenuAndKeyConfigGfx
db Bank(OptionMenuAndKeyConfigGfx)
dw vTiles0
dw $5000
dw OptionMenuTilemap
db Bank(OptionMenuTilemap)
dw vBGMap0
dw $900
dw $7000
db $30
dw vBGMap1
dw $900
db $FF, $FF ; terminators
DataArray_c3d4: ; 0xc3d4
dw OptionMenuAndKeyConfigGfx
db Bank(OptionMenuAndKeyConfigGfx)
dw vTiles0
dw $5000
dw OptionMenuTilemap
db Bank(OptionMenuTilemap)
dw vBGMap0
dw $900
dw $7c00
db $30
dw vBGMap0
dw $902
dw $7000
db $30
dw vBGMap1
dw $900
dw $7400
db $30
dw vBGMap1
dw $902
dw $4e00
db $37
dw $0000
dw $101
db $FF, $FF ; terminators
Func_c400: ; 0xc400
call Func_c41a
call Func_c43a
call Func_c447
ld a, [hNewlyPressedButtons]
bit 1, a
ret z
ld de, $0001
call PlaySoundEffect
ld a, $2
ld [wScreenState], a
ret
Func_c41a: ; 0xc41a
ld a, [hPressedButtons]
ld b, a
ld a, [$d916]
bit 6, b
jr z, .asm_c429
and a
ret z
dec a
jr .asm_c430
.asm_c429
bit 7, b
ret z
cp $2
ret z
inc a
.asm_c430
ld [$d916], a
ld de, $0003
call PlaySoundEffect
ret
Func_c43a: ; 0xc43a
call Func_c7ac
call Func_c80b
call Func_c88a
call Func_c92e
ret
Func_c447: ; 0xc447
ld a, [hNewlyPressedButtons]
bit BIT_A_BUTTON, a
ret z
ld de, $0001
call PlaySoundEffect
ld a, [$d916]
and a
jr nz, .asm_c465
ld a, [$fffb]
and a
ret nz
call Func_c4f4
ld a, $3
ld [wScreenState], a
ret
.asm_c465
cp $1
jr nz, .asm_c477
call ClearOAMBuffer
ld hl, $ff9e
set 3, [hl]
ld a, $4
ld [wScreenState], a
ret
.asm_c477
ld de, $0000
call Func_490
ld a, $5
ld [wScreenState], a
ret
Func_c483: ; 0xc483
call Func_cb5
call Func_576
ld a, SCREEN_TITLESCREEN
ld [wCurrentScreen], a
xor a
ld [wScreenState], a
ret
Func_c493: ; 0xc493
call Func_c4b4
call Func_c4e6
call Func_c869
ld a, [hNewlyPressedButtons]
bit BIT_B_BUTTON, a
ret z
ld de, $0001
call PlaySoundEffect
xor a
ld [$d803], a
ld [$d804], a
ld a, $1
ld [wScreenState], a
ret
Func_c4b4: ; 0xc4b4
ld a, [hNewlyPressedButtons]
ld b, a
ld a, [$d917]
bit BIT_D_LEFT, b
jr z, .asm_c4ce
and a
ret z
dec a
ld [$d917], a
call Func_c4f4
ld de, $0003
call PlaySoundEffect
ret
.asm_c4ce
bit BIT_D_RIGHT, b
ret z
cp $1
ret z
inc a
ld [$d917], a
xor a
ld [$d803], a
ld [$d804], a
ld de, $0003
call PlaySoundEffect
ret
Func_c4e6: ; 0xc4e6
call Func_c7ac
call Func_c80b
call Func_c88a
xor a
call Func_c8f1
ret
Func_c4f4: ; 0xc4f4
xor a
ld [$d91c], a
ld [$d91e], a
ld a, $2
ld [$d91d], a
ld a, $9
ld [$d91f], a
ret
Func_c506: ; 0xc506
call Func_c534
call Func_c554
call Func_c55a
ld a, [hNewlyPressedButtons]
bit BIT_B_BUTTON, a
ret z
ld de, $0001
call PlaySoundEffect
call ClearOAMBuffer
ld hl, $ff9e
res 3, [hl]
ld hl, wKeyConfigBallStart
ld de, $a244
ld bc, $000e
call Func_f1a
ld a, $1
ld [wScreenState], a
ret
Func_c534: ; 0xc534
ld a, [hNewlyPressedButtons]
ld b, a
ld a, [$d918]
bit BIT_D_UP, b
jr z, .asm_c543
and a
ret z
dec a
jr .asm_c54a
.asm_c543
bit BIT_D_DOWN, b
ret z
cp $7
ret z
inc a
.asm_c54a
ld [$d918], a
ld de, $0003
call PlaySoundEffect
ret
Func_c554: ; 0xc554
ld a, $1
call Func_c8f1
ret
Func_c55a: ; 0xc55a
ld a, [$d918]
and a
jr nz, .asm_c572
ld a, [hNewlyPressedButtons]
bit BIT_A_BUTTON, a
ret z
ld de, $0001
call PlaySoundEffect
call Func_ca3a
call Func_c948
ret
.asm_c572
ld a, [hNewlyPressedButtons]
bit BIT_A_BUTTON, a
ret z
ld de, $0001
call PlaySoundEffect
ld bc, $001e
call Func_93f
ld a, [$d918]
dec a
sla a
ld c, a
ld b, $0
ld hl, $465f ; todo
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld a, [$d918]
dec a
sla a
call Func_c644
ld bc, $00ff
.asm_c59f
push bc
push hl
ld a, [$d918]
dec a
sla a
call Func_c621
call Func_c554
call Func_926
rst $10
pop hl
pop bc
ld a, [hJoypadState]
and a
jr z, .asm_c5c2
ld c, $0
call Func_c9be
call Func_c95f
jr .asm_c59f
.asm_c5c2
or c
jr nz, .asm_c59f
ld a, [$d918]
dec a
sla a
call Func_c639
push hl
ld bc, $001e
call Func_93f
pop hl
ld bc, $0020
add hl, bc
ld a, [$d918]
dec a
sla a
inc a
call Func_c644
ld bc, $00ff
ld d, $5a
.asm_c5e9
push bc
push de
push hl
ld a, [$d918]
dec a
sla a
inc a
call Func_c621
call Func_c554
call Func_926
rst $10
pop hl
pop de
pop bc
dec d
ret z
ld a, [hJoypadState]
and a
jr z, .asm_c613
ld d, $ff
ld c, $0
call Func_c9be
call Func_c95f
jr .asm_c5e9
.asm_c613
or c
jr nz, .asm_c5e9
ld a, [$d918]
dec a
sla a
inc a
call Func_c639
ret
Func_c621: ; 0xc621
sla a
ld c, a
ld b, $0
ld hl, $466d ; todo
add hl, bc
ld a, [hli]
ld c, a
ld a, [hl]
ld b, a
ld a, [$ffb3]
bit 2, a
ret z
ld a, $84
call LoadOAMData
ret
Func_c639: ; 0xc639
push hl
ld e, a
ld d, $0
ld hl, wKeyConfigBallStart
add hl, de
ld [hl], b
pop hl
ret
Func_c644: ; 0xc644
push hl
ld c, a
ld b, $0
ld hl, wKeyConfigBallStart
add hl, bc
ld [hl], $0
pop hl
push hl
ld d, h
ld e, l
ld hl, $4689 ; todo
ld a, $3
ld bc, $0008
call LoadVRAMData
pop hl
ret
INCBIN "baserom.gbc",$c65f,$c691 - $c65f
Func_c691: ; 0xc91
call Func_c6bf
call Func_c6d9
call Func_c6e8
ld a, [hNewlyPressedButtons]
bit BIT_B_BUTTON, a
ret z
ld de, $0000
call Func_490
rst $10
rst $10
rst $10
ld a, $12
call SetSongBank
ld de, $0002
call Func_490
ld de, $0001
call PlaySoundEffect
ld a, $1
ld [wScreenState], a
ret
Func_c6bf: ; 0xc6bf
ld a, [hNewlyPressedButtons]
ld b, a
ld a, [$d919]
bit BIT_D_UP, b
jr z, .asm_c6ce
and a
ret z
dec a
jr .asm_c6d5
.asm_c6ce
bit BIT_D_DOWN, b
ret z
cp $1
ret z
inc a
.asm_c6d5
ld [$d919], a
ret
Func_c6d9: ; 0xc6d9
call Func_c7ac
call Func_c80b
call Func_c88a
ld a, $2
call Func_c8f1
ret
Func_c6e8: ; 0xc6e8
ld a, [$d919]
and a
jr nz, UpdateSoundTestSoundEffectSelection
ld a, [hNewlyPressedButtons]
bit BIT_A_BUTTON, a
jr z, UpdateSoundTestBackgroundMusicSelection
ld de, $0000
call Func_490
rst $10
rst $10
rst $10
ld a, [wSoundTestCurrentBackgroundMusic]
sla a
ld c, a
ld b, $0
ld hl, SongBanks
add hl, bc
ld a, [hli]
ld e, a
ld d, $0
ld a, [hl]
call SetSongBank
call Func_490
ret
UpdateSoundTestBackgroundMusicSelection: ; 0xc715
ld a, [hPressedButtons] ; joypad state
ld b, a
ld a, [wSoundTestCurrentBackgroundMusic]
bit BIT_D_LEFT, b ; was the left dpad button pressed?
jr z, .checkIfRightPressed
dec a ; decrement background music id
bit 7, a ; did it wrap around to $ff?
jr z, .saveBackgroundMusicID
ld a, NUM_SONGS - 1
jr .saveBackgroundMusicID
.checkIfRightPressed
bit BIT_D_RIGHT, b ; was the right dpad button pressed?
ret z
inc a ; increment background music id
cp NUM_SONGS ; should it wrap around to 0?
jr nz, .saveBackgroundMusicID
xor a
.saveBackgroundMusicID
ld [wSoundTestCurrentBackgroundMusic], a
hlCoord 7, 11, vBGMap0
jp RedrawSoundTestID
UpdateSoundTestSoundEffectSelection: ; 0xc73a
ld a, [hNewlyPressedButtons] ; joypad state
bit BIT_A_BUTTON, a
jr z, .didntPressAButton
ld a, [wSoundTextCurrentSoundEffect]
ld e, a
ld d, $0
call PlaySoundEffect
ret
.didntPressAButton
ld a, [hPressedButtons] ; joypad state
ld b, a
ld a, [wSoundTextCurrentSoundEffect]
bit BIT_D_LEFT, b ; was the left dpad button pressed?
jr z, .checkIfRightPressed
dec a ; decrement sound effect id
bit 7, a ; did it wrap around to $ff?
jr z, .saveSoundEffectID
ld a, NUM_SOUND_EFFECTS - 1
jr .saveSoundEffectID
.checkIfRightPressed
bit BIT_D_RIGHT, b ; was the right dpad button pressed?
ret z
inc a ; increment background music id
cp NUM_SOUND_EFFECTS ; should it wrap around to 0?
jr nz, .saveSoundEffectID
xor a
.saveSoundEffectID
ld [wSoundTextCurrentSoundEffect], a
hlCoord 7, 13, vBGMap0
; fall through
RedrawSoundTestID: ; 0xc76c
; Redraws the 2-digit id number for the sound test's current background music or sound effect id.
; input: a = id number
; hl = pointer to bg map location where the new 2-digit id should be drawn
push af ; save music or sound effect id number
swap a
and $f ; a contains high nybble of music id
call .drawDigit
pop af
and $f ; a contains low nybble of music id
.drawDigit
add $b7 ; hexadecimal digit tiles start at tile number $b7
call PutTileInVRAM
inc hl
ret
SongBanks: ; 0xc77e
db MUSIC_NOTHING_0F,BANK(Music_Nothing0F)
db MUSIC_BLUE_FIELD,BANK(Music_BlueField)
db MUSIC_CATCH_EM_RED,BANK(Music_CatchEmRed)
db MUSIC_HURRY_UP_RED,BANK(Music_HurryUpRed)
db MUSIC_POKEDEX,BANK(Music_Pokedex)
db MUSIC_GASTLY_GRAVEYARD,BANK(Music_GastlyInTheGraveyard)
db MUSIC_HAUNTER_GRAVEYARD,BANK(Music_HaunterInTheGraveyard)
db MUSIC_GENGAR_GRAVEYARD,BANK(Music_GengarInTheGraveyard)
db MUSIC_RED_FIELD,BANK(Music_RedField)
db MUSIC_CATCH_EM_BLUE,BANK(Music_CatchEmBlue)
db MUSIC_HURRY_UP_BLUE,BANK(Music_HurryUpBlue)
db MUSIC_HI_SCORE,BANK(Music_HiScore)
db MUSIC_GAME_OVER,BANK(Music_GameOver)
db MUSIC_WHACK_DIGLETT,BANK(Music_WhackTheDiglett)
db MUSIC_WHACK_DUGTRIO,BANK(Music_WhackTheDugtrio)
db MUSIC_SEEL_STAGE,BANK(Music_SeelStage)
db MUSIC_TITLE_SCREEN,BANK(Music_Title)
db MUSIC_MEWTWO_STAGE,BANK(Music_MewtwoStage)
db MUSIC_OPTIONS,BANK(Music_Options)
db MUSIC_FIELD_SELECT,BANK(Music_FieldSelect)
db MUSIC_MEOWTH_STAGE,BANK(Music_MeowthStage)
db MUSIC_END_CREDITS,BANK(Music_EndCredits)
db MUSIC_NAME_ENTRY,BANK(Music_NameEntry)
Func_c7ac: ; 0xc7ac
ld c, $0
ld a, [wScreenState]
cp $1
jr z, .asm_c7cc
ld a, [$d916]
and a
jr nz, .asm_c7cc
ld a, [$d917]
and a
jr nz, .asm_c7cc
ld a, [$d91e]
cp $4
jr nz, .asm_c7cc
ld a, [$d91c]
ld c, a
.asm_c7cc
sla c
ld b, $0
ld hl, $4806 ; todo
add hl, bc
ld a, [hl]
ld bc, $5050
call LoadOAMData
ld a, [$d91d]
dec a
jr nz, .asm_c802
ld a, [$d91c]
sla a
ld c, a
ld b, $0
ld hl, $4808
add hl, bc
ld a, [hl]
and a
jr z, .asm_c7f5
ld a, [$d91c]
inc a
.asm_c7f5
ld [$d91c], a
sla a
ld c, a
ld b, $0
ld hl, $4807 ; todo
add hl, bc
ld a, [hl]
.asm_c802
ld [$d91d], a
ret
INCBIN "baserom.gbc",$c806,$c80b - $c806
Func_c80b: ; 0xc80b
ld c, $0
ld a, [wScreenState]
cp $1
jr z, .asm_c824
ld a, [$d916]
and a
jr nz, .asm_c824
ld a, [$d917]
and a
jr nz, .asm_c824
ld a, [$d91e]
ld c, a
.asm_c824
sla c
ld b, $0
ld hl, $485e ; todo
add hl, bc
ld bc, $7870
ld a, [hl]
call LoadOAMData
ld a, [$d91f]
dec a
jr nz, .asm_c85a
ld a, [$d91e]
sla a
ld c, a
ld b, $0
ld hl, $4860 ; todo
add hl, bc
ld a, [hl]
and a
ld a, [$d91e]
jr z, .asm_c850
inc a
ld [$d91e], a
.asm_c850
sla a
ld c, a
ld b, $0
ld hl, $485f ; todo
add hl, bc
ld a, [hl]
.asm_c85a
ld [$d91f], a
ret
INCBIN "baserom.gbc",$c85e,$c869 - $c85e
Func_c869: ; 0xc869
ld a, [$d916]
and a
ret nz
ld a, [$d917]
and a
ret nz
ld a, [$d91e]
cp $3
ret nz
ld a, [$d91f]
cp $1
ret nz
ld a, $55
ld [$d803], a
ld a, $40
ld [$d804], a
ret
Func_c88a: ; 0xc88a
ld a, [$d916]
sla a
ld c, a
ld b, $0
ld hl, $48eb ; todo
add hl, bc
ld a, [hli]
ld c, a
ld a, [hli]
ld b, a
ld e, $0
ld a, [wScreenState]
cp $1
jr nz, .asm_c8a9
ld a, [$d920]
sla a
ld e, a
.asm_c8a9
ld d, $0
ld hl, $48de ; todo
add hl, de
ld a, [hl]
call LoadOAMData
ld a, [$d921]
dec a
jr nz, .asm_c8da
ld a, [$d920]
sla a
ld c, a
ld b, $0
ld hl, $48e0 ; todo
add hl, bc
ld a, [hl]
and a
jr z, .asm_c8cd
ld a, [$d920]
inc a
.asm_c8cd
ld [$d920], a
sla a
ld c, a
ld b, $0
ld hl, $48df ; todo
add hl, bc
ld a, [hl]
.asm_c8da
ld [$d921], a
ret
INCBIN "baserom.gbc",$c8de,$c8f1 - $c8de
Func_c8f1: ; 0xc8f1
ld c, a
ld b, $0
ld hl, $d917
add hl, bc
ld e, [hl]
sla c
ld hl, $4910 ; todo
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld c, e
sla c
add hl, bc
ld a, [hli]
ld c, a
ld a, [hl]
ld b, a
ld a, $82
call LoadOAMData
ret
INCBIN "baserom.gbc",$c910,$c92e - $c910
Func_c92e: ; 0xc92e
ld a, [$d917]
sla a
ld c, a
ld b, $0
ld hl, $4944 ; todo
add hl, bc
ld a, [hli]
ld c, a
ld a, [hli]
ld b, a
ld a, $85
call LoadOAMData
ret
INCBIN "baserom.gbc",$c944,$c948 - $c944
Func_c948: ; 0xc948
ld hl, $9c6d
ld de, wKeyConfigBallStart
ld b, $e
.asm_c950
push bc
ld a, [de]
call Func_c95f
inc de
ld bc, $0020
add hl, bc
pop bc
dec b
jr nz, .asm_c950
ret
Func_c95f: ; 0xc95f
push bc
push de
push hl
push hl
push af
ld hl, $d922
ld a, $81
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hl], a
pop af
ld hl, $d922
ld de, $49ae ; todo
ld b, $8
.asm_c979
srl a
push af
jr nc, .asm_c994
ld a, [de]
inc de
call Func_c9aa
ld a, [de]
inc de
call Func_c9aa
pop af
push af
and a
jr z, .asm_c996
ld a, $1a
call Func_c9aa
jr .asm_c996
.asm_c994
inc de
inc de
.asm_c996
pop af
dec b
jr nz, .asm_c979
pop de
ld hl, $d922
ld a, $0
ld bc, $0008
call Func_735
pop hl
pop de
pop bc
ret
Func_c9aa: ; 0xc9aa
and a
ret z
ld [hli], a
ret
INCBIN "baserom.gbc",$c9ae,$c9be - $c9ae
Func_c9be: ; 0xc9be
push af
push bc
push hl
ld c, a
xor b
and c
ld hl, $d936
call Func_c9ff
ld a, b
ld hl, $d93f
call Func_c9ff
ld a, [$d947]
cp $3
jr nc, .asm_c9f3
ld hl, $d93e
add [hl]
sub $4
ld hl, $d936
call nc, Func_ca15
ld de, $d936
ld hl, $d93f
ld b, $8
.asm_c9ec
ld a, [de]
or [hl]
ld [hli], a
inc de
dec b
jr nz, .asm_c9ec
.asm_c9f3
ld hl, $d93f
call Func_ca29
pop hl
pop bc
ld b, a
pop af
ld a, b
ret
Func_c9ff: ; 0xc9ff
push bc
ld bc, $0800
.asm_ca03
sla a
jr nc, .asm_ca0c
ld [hl], $ff
inc c
jr .asm_ca0e
.asm_ca0c
ld [hl], $0
.asm_ca0e
inc hl
dec b
jr nz, .asm_ca03
ld [hl], c
pop bc
ret
Func_ca15: ; 0xca15
push bc
inc a
ld c, a
ld b, $8
.asm_ca1a
ld a, [hl]
and a
jr z, .asm_ca23
ld [hl], $0
dec c
jr z, .asm_ca27
.asm_ca23
inc hl
dec b
jr nz, .asm_ca1a
.asm_ca27
pop bc
ret
Func_ca29: ; 0ca29
push bc
ld bc, $0800
.asm_ca2d
ld a, [hli]
and a
jr z, .asm_ca32
scf
.asm_ca32
rl c
dec b
jr nz, .asm_ca2d
ld a, c
pop bc
ret
Func_ca3a: ; 0ca3a
ld hl, $4a55 ; todo
ld de, wKeyConfigBallStart
ld b, $e
.asm_ca42
ld a, [hli]
ld [de], a
inc de
dec b
jr nz, .asm_ca42
ld hl, wKeyConfigBallStart
ld de, $a244
ld bc, $000e
call Func_f1a
ret
INCBIN "baserom.gbc",$ca55,$ca7f - $ca55
HandleHighScoresScreen: ; 0xca7f
ld a, [wScreenState]
rst $18 ; calls JumpToFuncInTable
HighScoresScreenFunctions: ; 0xca83
dw Func_ca8f
dw Func_cb14
dw Func_ccac
dw Func_ccb6
dw Func_cd6c
dw ExitHighScoresScreen
Func_ca8f: ; 0xca8f
ld hl, $d473
call GenRandom
ld [hli], a
call GenRandom
ld [hli], a
call GenRandom
ld [hli], a
call GenRandom
ld [hli], a
ld hl, $da36
ld a, [$da83]
and a
jr z, .asm_caae
ld hl, $da77
.asm_caae
ld b, $5
.asm_cab0
ld de, $d46f
ld c, $6
.asm_cab5
ld a, [de]
cp [hl]
jr c, .asm_cad0
jr nz, .asm_cac2
dec de
dec hl
dec c
jr nz, .asm_cab5
jr .asm_cad0
.asm_cac2
dec hl
dec c
jr nz, .asm_cac2
ld a, l
sub $7
ld l, a
jr nc, .asm_cacd
dec h
.asm_cacd
dec b
jr nz, .asm_cab0
.asm_cad0
ld a, b
ld [$da81], a
xor a
ld [$da80], a
inc b
ld hl, $da30
ld de, $da3d
ld a, [$da83]
and a
jr z, .asm_caeb
ld hl, $da71
ld de, $da7e
.asm_caeb
ld a, $5
.asm_caed
cp b
jr c, .asm_cb02
push af
jr nz, .asm_caf6
ld hl, $d476
.asm_caf6
ld c, $d
.asm_caf8
ld a, [hld]
ld [de], a
dec de
dec c
jr nz, .asm_caf8
pop af
dec a
jr nz, .asm_caed
.asm_cb02
ld a, [$da81]
cp $5
ld a, $1
jr nz, .asm_cb0c
xor a
.asm_cb0c
ld [$da7f], a
ld hl, wScreenState
inc [hl]
ret
Func_cb14: ; 0xcb14
ld a, $43
ld [$ff9e], a
ld a, $e0
ld [$d80c], a
ld a, $e1
ld [$d80d], a
ld [$d80e], a
xor a
ld [hBoardXShift], a
ld [$ffab], a
ld [hBoardYShift], a
ld [$ffad], a
ld a, $e
ld [$ffa2], a
ld [$ffa8], a
ld a, $82
ld [$ffa9], a
ld [$ffaa], a
ld hl, $ff9f
set 6, [hl]
ld hl, $ffff
set 1, [hl]
ld a, $3
ld [$ffb0], a
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_cb51
ld a, [$da83]
inc a
.asm_cb51
ld hl, $4be3 ; todo
call LoadVideoData
call ClearOAMBuffer
ld a, $20
ld [$da82], a
call Func_d211
ld hl, $99c0
ld de, $da3d
call Func_d2cb
ld hl, $9dc0
ld de, $da7e
call Func_d2cb
ld a, [$da83]
and a
jr z, .asm_cb7f
ld hl, $ff9e
set 3, [hl]
.asm_cb7f
call Func_b66
ld a, [$da7f]
and a
jr z, .asm_cbbd
ld a, [$da81]
and a
jr nz, .asm_cb9b
ld a, $13
call SetSongBank
ld de, $0001
call Func_490
jr .asm_cba6
.asm_cb9b
ld a, $13
call SetSongBank
ld de, $0002
call Func_490
.asm_cba6
call Func_588
ld bc, $0009
call Func_d68a
ld bc, $03c9
call Func_d68a
call Func_bbe
ld hl, wScreenState
inc [hl]
ret
.asm_cbbd
ld a, $10
call SetSongBank
ld de, $0004
call Func_490
call Func_588
ld bc, $0009
call Func_d68a
ld bc, $03c9
call Func_d68a
call Func_bbe
ld hl, wScreenState
inc [hl]
ld hl, wScreenState
inc [hl]
ret
INCBIN "baserom.gbc",$cbe3,$ccac - $cbe3
Func_ccac: ; 0xccac
call Func_d18b
call Func_d1d2
call Func_d211
ret
Func_ccb6: ; 0xccb6
call Func_d4cf
call Func_d24f
ld a, [hNewlyPressedButtons]
bit BIT_A_BUTTON, a
jr z, .asm_ccd1
ld de, $0001
call PlaySoundEffect
ld hl, wScreenState
inc [hl]
ld hl, wScreenState
inc [hl]
ret
.asm_ccd1
bit 1, a
jr z, .asm_cce4
ld de, $0001
call PlaySoundEffect
ld hl, wScreenState
inc [hl]
ld hl, wScreenState
inc [hl]
ret
.asm_cce4
bit 3, a
jr z, .asm_ccfb
call Func_1a43
ld a, [hGameBoyColorFlag]
ld [$d8f0], a
ld de, $0001
call PlaySoundEffect
ld hl, wScreenState
inc [hl]
ret
.asm_ccfb
ld a, [hJoypadState]
cp (SELECT | D_UP)
ret nz
ld a, [hNewlyPressedButtons]
and (SELECT | D_UP)
ret z
ld de, $0001
call PlaySoundEffect
call ClearOAMBuffer
ld bc, $473b
ld a, $94
call LoadOAMData
.asm_cd16
rst $10
ld a, [hNewlyPressedButtons]
bit BIT_B_BUTTON, a
jr z, .asm_cd24
ld de, $0001
call PlaySoundEffect
ret
.asm_cd24
bit 0, a
jr z, .asm_cd16
ld de, $0001
call PlaySoundEffect
call CopyInitialHighScores
ld a, $30
ld hl, $6040 ; todo
ld de, $9840
ld bc, $01c0
call LoadVRAMData
ld a, $30
ld hl, $5840 ; todo
ld de, $9c40
ld bc, $01c0
call LoadVRAMData
ld hl, $99c0 ; todo
ld de, $da3d
call Func_d361
ld hl, $9dc0
ld de, $da7e
call Func_d361
ld hl, wRedHighScore1Points
ld de, $a000
ld bc, $0082
call Func_f1a
ret
Func_cd6c: ; 0xcd6c
ld a, [$ffb3]
and $1f
call z, Func_1a43
call Func_cf7d
call Func_cfa6
ld a, [hNewlyPressedButtons]
bit BIT_A_BUTTON, a
jr z, .asm_cdbb
ld de, $0001
call PlaySoundEffect
ld a, [$da85]
and a
jr nz, .asm_cda1
ld a, [$d86e]
and a
jr z, .asm_cdbb
call ClearOAMBuffer
ld bc, $473b
ld a, $8e
call LoadOAMData
call Func_d042
jr .asm_cdc6
.asm_cda1
ld a, [$d8f0]
and a
jr z, .asm_cdbb
ld de, $0000
call Func_490
rst $10
call Func_cdce
push af
ld de, $0004
call Func_490
pop af
jr nc, .asm_cdc6
.asm_cdbb
ld a, [hNewlyPressedButtons]
bit BIT_B_BUTTON, a
ret z
ld de, $0001
call PlaySoundEffect
.asm_cdc6
xor a
ld [$ff56], a
ld hl, wScreenState
dec [hl]
ret
Func_cdce: ; 0xcdce
push af
ld a, $0
ld [$abf6], a
pop af
call ClearOAMBuffer
call Func_1be3
call Func_ced1
push af
ld a, $1
ld [$abf6], a
pop af
di
ld a, [$d8ea]
cp $0
jp nz, .asm_ceb6
ld a, [$d8e9]
cp $1
jr z, .asm_ce23
push af
ld a, $2
ld [$abf6], a
pop af
ld b, $82
ld hl, wRedHighScore1Points
call Func_1cf8
ld a, [$d8ea]
cp $0
jp nz, .asm_ceb6
push af
ld a, $3
ld [$abf6], a
pop af
ld hl, $c4c0
call Func_1dda
ld a, [$d8ea]
cp $0
jp nz, .asm_ceb6
jr .asm_ce4d
.asm_ce23
push af
ld a, $4
ld [$abf6], a
pop af
ld hl, $c4c0
call Func_1dda
ld a, [$d8ea]
cp $0
jr nz, .asm_ceb6
push af
ld a, $5
ld [$abf6], a
pop af
ld b, $82
ld hl, wRedHighScore1Points
call Func_1cf8
ld a, [$d8ea]
cp $0
jr nz, .asm_ceb6
.asm_ce4d
push af
ld a, $6
ld [$abf6], a
pop af
call Func_ceca
rst $10
ld hl, $c4cc
ld b, $5
.asm_ce5d
push bc
push hl
ld d, h
ld e, l
ld hl, $da3d
call Func_cfcb
pop hl
pop bc
ld de, $000d
add hl, de
dec b
jr nz, .asm_ce5d
push af
ld a, $7
ld [$abf6], a
pop af
ld hl, $c50d
ld b, $5
.asm_ce7c
push bc
push hl
ld d, h
ld e, l
ld hl, $da7e
call Func_cfcb
pop hl
pop bc
ld de, $000d
add hl, de
dec b
jr nz, .asm_ce7c
push af
ld a, $8
ld [$abf6], a
pop af
ld hl, $99c0
ld de, $da3d
call Func_d361
ld hl, $9dc0
ld de, $da7e
call Func_d361
ld hl, wRedHighScore1Points
ld de, $a000
ld bc, $0082
call Func_f1a
and a
ret
.asm_ceb6
push af
ld a, $9
ld [$abf6], a
pop af
call Func_ceca
rst $10
push af
ld a, $a
ld [$abf6], a
pop af
scf
ret
Func_ceca: ; 0xceca
ld a, [$ff44]
and a
jr nz, Func_ceca
ei
ret
Func_ced1: ; 0xced1
ld hl, $4f4b ; todo
ld de, $da87
call Func_28a0
ld bc, $4800
ld a, [$da88]
call LoadOAMData
ld bc, $473b
ld a, $8f
call LoadOAMData
call Func_926
rst $10
ld a, $1
ld [$d8e9], a
ld b, $b4
.asm_cef6
push bc
xor a
ld [$ffb2], a
.asm_cefa
ld b, $2
ld c, $56
ld a, [$ff00+c]
and b
jr z, .asm_cf09
ld a, [$ffb2]
and a
jr z, .asm_cefa
jr .asm_cf0e
.asm_cf09
call Func_1c50
jr .asm_cf40
.asm_cf0e
ld hl, $4f4b
ld de, $da87
call Func_28a9
jr nc, .asm_cf40
ld bc, $4800
ld a, [$da88]
call LoadOAMData
ld bc, $473b
ld a, $8f
call LoadOAMData
call Func_926
call Func_1ca1
ld a, [$da89]
cp $6
jr nz, .asm_cf40
ld hl, $4f4b ; todo
ld de, $da87
call Func_28a0
.asm_cf40
pop bc
ld a, [$d8ea]
cp $0
ret z
dec b
jr nz, .asm_cef6
ret
INCBIN "baserom.gbc",$cf4b,$cf58 - $cf4b
Func_cf58: ; 0xcf58
cp $5
ret z
push af
ld de, $0002
call PlaySoundEffect
call ClearOAMBuffer
rst $10
pop af
ld bc, $473b ; todo
add $8f
call LoadOAMData
.asm_cf6f
rst $10
ld a, [hNewlyPressedButtons]
bit BIT_A_BUTTON, a
jr z, .asm_cf6f
ld de, $0001
call PlaySoundEffect
ret
Func_cf7d: ; 0xcf7d
ld a, [$d809]
ld b, a
ld a, [$da85]
bit 6, b
jr z, .asm_cf95
and a
ret z
dec a
ld [$da85], a
ld de, $0003
call PlaySoundEffect
ret
.asm_cf95
bit 7, b
ret z
cp $1
ret z
inc a
ld [$da85], a
ld de, $0003
call PlaySoundEffect
ret
Func_cfa6: ; 0xcfa6
ld bc, $473b
ld a, $87
call LoadOAMData
ld a, [$d8f0]
and a
jr z, .asm_cfb6
ld a, $2
.asm_cfb6
ld e, a
ld a, [$d86e]
add e
xor $3
add $8a
call LoadOAMData
ld a, [$da85]
add $88
call LoadOAMData
ret
Func_cfcb: ; 0xcfcb
ld a, e
ld [$ff8c], a
ld a, d
ld [$ff8d], a
push hl
ld b, $5
.asm_cfd4
ld a, [$ff8c]
ld e, a
ld a, [$ff8d]
ld d, a
call Func_d005
call Func_d017
jr c, .asm_cfe5
dec b
jr nz, .asm_cfd4
.asm_cfe5
inc b
pop de
ld hl, $fff3
add hl, de
ld a, $5
.asm_cfed
cp b
ret c
push af
jr nz, .asm_cff8
ld a, [$ff8c]
ld l, a
ld a, [$ff8d]
ld h, a
.asm_cff8
ld c, $d
.asm_cffa
ld a, [hld]
ld [de], a
dec de
dec c
jr nz, .asm_cffa
pop af
dec a
jr nz, .asm_cfed
ret
Func_d005: ; 0xd005
ld c, $7
.asm_d007
ld a, [de]
cp [hl]
jr nz, .asm_d010
dec de
dec hl
dec c
jr nz, .asm_d007
.asm_d010
ld a, c
ld [$ff8e], a
call Func_d035
ret
Func_d017: ; 0xd017
ld c, $6
.asm_d019
ld a, [de]
cp [hl]
jr c, .asm_d02b
jr nz, .asm_d030
dec de
dec hl
dec c
jr nz, .asm_d019
ld a, [$ff8e]
and a
jr nz, .asm_d02b
ld b, $5
.asm_d02b
call Func_d035
scf
ret
.asm_d030
call Func_d035
and a
ret
Func_d035: ; 0xd035
ld a, e
sub c
ld e, a
jr nc, .asm_d03b
dec d
.asm_d03b
ld a, l
sub c
ld l, a
jr nc, .asm_d041
dec h
.asm_d041
ret
Func_d042: ; 0xd042
ld a, [hJoypadState]
ld [$da86], a
ld b, a
ld a, $80
bit BIT_D_LEFT, b
jr z, .asm_d052
ld a, $7f
jr .asm_d058
.asm_d052
bit BIT_D_RIGHT, b
jr z, .asm_d058
ld a, $10
.asm_d058
ld [$d8a7], a
ld a, $e0
ld [$d8aa], a
ld a, $30
ld hl, $63c0
ld de, $c280
ld bc, $0040
call Func_666
ld a, $0
ld hl, $9840
ld de, $c2c0
ld bc, $01c0
call LoadVRAMData
ld a, $30
ld hl, $6280
ld de, $c480
ld bc, $0040
call Func_666
call Func_d6b6
call Func_d0e3
ret c
ld a, [$da86]
bit 2, a
jr z, .asm_d0a2
ld de, $da06
call Func_d107
call Func_d0f5
ret c
.asm_d0a2
ld a, $30
ld hl, $5bc0 ; todo
ld de, $c280
ld bc, $0040
call Func_666
ld a, $0
ld hl, $9c40
ld de, $c2c0
ld bc, $01c0
call LoadVRAMData
ld a, $30
ld hl, $5a80 ; todo
ld de, $c480
ld bc, $0040
call Func_666
call Func_d6b6
call Func_d0e3
ret c
ld a, [$da86]
bit 2, a
ret z
ld de, $da47
call Func_d107
call Func_d0f5
ret
Func_d0e3: ; 0xd0e3
ld a, $2a
ld hl, $6200
call Func_1a21
ld a, [$d86d]
and a
ret z
call Func_cf58
scf
ret
Func_d0f5: ; 0xd0f5
ld a, $29
ld hl, $7b00
call Func_1a21
ld a, [$d86d]
and a
ret z
call Func_cf58
scf
ret
Func_d107: ; 0xd107
ld hl, $c280
ld a, $c0
ld b, $20
.asm_d10e
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
dec b
jr nz, .asm_d10e
ld hl, $c280
ld b, $5
.asm_d136
ld c, $4
.asm_d138
ld a, [de]
swap a
call Func_d159
ld a, [de]
call Func_d159
inc de
inc hl
dec c
jr nz, .asm_d138
ld a, l
add $4c
ld l, a
jr nc, .asm_d14e
inc h
.asm_d14e
ld a, e
add $9
ld e, a
jr nc, .asm_d155
inc d
.asm_d155
dec b
jr nz, .asm_d136
ret
Func_d159: ; 0xd159
and $f
sla a
sla a
xor $80
ld [hli], a
inc a
ld [hli], a
inc a
push bc
push hl
ld bc, $001e
add hl, bc
ld [hli], a
inc a
ld [hli], a
pop hl
pop bc
ret
ExitHighScoresScreen: ; 0xd171
call Func_cb5
call Func_576
ld hl, $ff9f
res 6, [hl]
ld hl, $ffff
res 1, [hl]
ld a, SCREEN_TITLESCREEN
ld [wCurrentScreen], a
xor a
ld [wScreenState], a
ret
Func_d18b: ; 0xd18b
ld a, [hPressedButtons]
ld b, a
ld a, [$da81]
ld e, a
sla e
sla e
add e
sla e
add e
ld e, a
ld a, [$da80]
add e
ld e, a
ld d, $0
ld hl, wRedHighScore1Name
ld a, [$da83]
and a
jr z, .asm_d1ae
ld hl, wBlueHighScore1Name
.asm_d1ae
add hl, de
ld a, [hl]
bit 4, b
jr z, .asm_d1bd
inc a
cp $38
jr nz, .asm_d1c7
ld a, $a
jr .asm_d1c7
.asm_d1bd
bit 5, b
ret z
dec a
cp $9
jr nz, .asm_d1c7
ld a, $37
.asm_d1c7
ld [hl], a
call Func_d46f
ld de, $0003
call PlaySoundEffect
ret
Func_d1d2: ; 0xd1d2
ld a, [hNewlyPressedButtons]
ld b, a
ld a, [$da80]
bit BIT_A_BUTTON, b
jr z, .asm_d1fc
inc a
cp $3
jr nz, .asm_d202
ld de, $0745
call PlaySoundEffect
xor a
ld [$da7f], a
ld hl, wScreenState
inc [hl]
ld hl, wRedHighScore1Points
ld de, $a000
ld bc, $0082
call Func_f1a
ret
.asm_d1fc
bit 1, b
ret z
and a
ret z
dec a
.asm_d202
ld [$da80], a
ld a, $20
ld [$da82], a
ld de, $0001
call PlaySoundEffect
ret
Func_d211: ; 0xd211
ld a, [$da7f]
and a
ret z
ld a, [hJoypadState]
and (D_RIGHT | D_LEFT)
jr z, .asm_d221
xor a
ld [$da82], a
ret
.asm_d221
ld a, [$da82]
inc a
ld [$da82], a
bit 5, a
ret z
ld a, [$da81]
ld e, a
ld d, $0
ld hl, $5247 ; todo
add hl, de
ld c, [hl]
ld a, [$da80]
ld e, a
ld d, $0
ld hl, $524c ; todo
add hl, de
ld b, [hl]
ld a, $86
call LoadOAMData
ret
INCBIN "baserom.gbc",$d247,$d24f - $d247
Func_d24f: ; 0xd24f
ld a, [$da84]
inc a
cp $28
jr c, .asm_d258
xor a
.asm_d258
ld [$da84], a
ld a, [$da83]
and a
ld c, $77
ld a, $95
ld hl, $527b ; todo
jr z, .asm_d26d
ld a, $96
ld hl, $52a3
.asm_d26d
push af
ld a, [$da84]
ld e, a
ld d, $0
add hl, de
ld b, [hl]
pop af
call LoadOAMData
ret
INCBIN "baserom.gbc",$d27b,$d2cb - $d27b
Func_d2cb: ; 0xd2cb
ld b, $5
.asm_d2cd
push bc
push hl
dec de
dec de
dec de
dec de
ld a, l
add $5
ld l, a
ld b, $3
.asm_d2d9
ld a, [de]
call Func_d348
dec de
dec hl
dec b
jr nz, .asm_d2d9
pop hl
push hl
ld a, l
add $6
ld l, a
ld bc, $0c01
.asm_d2eb
ld a, [de]
swap a
and $f
call Func_d30e
inc hl
dec b
ld a, [de]
and $f
call Func_d30e
dec de
inc hl
dec b
jr nz, .asm_d2eb
xor a
call Func_d317
pop hl
ld bc, hBoardYShift
add hl, bc
pop bc
dec b
jr nz, .asm_d2cd
ret
Func_d30e: ; 0xd30e
jr nz, Func_d317
ld a, b
dec a
jr z, Func_d317
ld a, c
and a
ret nz
; fall through
Func_d317: ; 0xd317
push de
push af
call Func_d336
pop af
ld c, $0
sla a
add e
ld [hl], a
cp $fe
jr z, .asm_d328
inc a
.asm_d328
push hl
push af
ld a, l
add $20
ld l, a
jr nc, .asm_d331
inc h
.asm_d331
pop af
ld [hl], a
pop hl
pop de
ret
Func_d336: ; 0xd336
ld e, $6c
ld a, b
cp $3
ret z
cp $6
ret z
cp $9
ret z
cp $c
ret z
ld e, $58
ret
Func_d348: ; 0xd348
ld c, $0
sla a
add $90
ld [hl], a
cp $fe
jr z, .asm_d354
inc a
.asm_d354
push hl
push af
ld a, l
add $20
ld l, a
jr nc, .asm_d35d
inc h
.asm_d35d
pop af
ld [hl], a
pop hl
ret
Func_d361: ; 0xd361
ld b, $5
.asm_d363
push bc
push hl
dec de
dec de
dec de
dec de
ld a, l
add $5
ld l, a
ld b, $3
.asm_d36f
ld a, [de]
call Func_d3e2
dec de
dec hl
dec b
jr nz, .asm_d36f
pop hl
push hl
ld a, l
add $6
ld l, a
ld bc, $0c01
.asm_d381
ld a, [de]
swap a
and $f
call Func_d3a4
inc hl
dec b
ld a, [de]
and $f
call Func_d3a4
dec de
inc hl
dec b
jr nz, .asm_d381
xor a
call Func_d3ad
pop hl
ld bc, hBoardYShift
add hl, bc
pop bc
dec b
jr nz, .asm_d363
ret
Func_d3a4: ; 0xd3a4
jr nz, Func_d3ad
ld a, b
dec a
jr z, Func_d3ad
ld a, c
and a
ret nz
; fall through
Func_d3ad: ; 0xd3ad
push de
push af
call Func_d3d0
pop af
ld c, $0
sla a
add e
call PutTileInVRAM
cp $fe
jr z, .asm_d3c0
inc a
.asm_d3c0
push hl
push af
ld a, l
add $20
ld l, a
jr nc, .asm_d3c9
inc h
.asm_d3c9
pop af
call PutTileInVRAM
pop hl
pop de
ret
Func_d3d0: ; 0xd3d0
ld e, $6c
ld a, b
cp $3
ret z
cp $6
ret z
cp $9
ret z
cp $c
ret z
ld e, $58
ret
Func_d3e2: ; 0xd3e2
ld c, $0
sla a
add $90
call PutTileInVRAM
cp $fe
jr z, .asm_d3f0
inc a
.asm_d3f0
push hl
push af
ld a, l
add $20
ld l, a
jr nc, .asm_d3f9
inc h
.asm_d3f9
pop af
call PutTileInVRAM
pop hl
ret
CopyInitialHighScores: ; 0xd3ff
ld hl, InitialHighScores
ld de, wRedHighScore1Points
call CopyInitialHighScoresForStage
ld hl, InitialHighScores
ld de, wBlueHighScore1Points
CopyInitialHighScoresForStage: ; 0xd40e
; input: hl = address of high score entries
; de = destination address for high score entries to be copied
ld b, $5 ; 5 high score entries to copy
.copyHighScoreEntry
ld c, $6 ; high score points are 6 bytes long
.copyPoints
ld a, [hli]
ld [de], a
inc de
dec c
jr nz, .copyPoints
ld c, $3 ; name is 3 bytes
.copyName
ld a, [hli]
sub $37
ld [de], a
inc de
dec c
jr nz, .copyName
ld c, $4
.asm_d424 ; TODO: what are these 4 bytes used for?
ld a, [hli]
ld [de], a
inc de
dec c
jr nz, .asm_d424
dec b
jr nz, .copyHighScoreEntry
ret
INCLUDE "data/initial_high_scores.asm" ; 0xd42e
Func_d46f: ; 0xd46f
ld a, [$da81]
ld d, a
sla a
add d
ld d, a
ld e, $0
srl d
rr e
srl d
rr e
srl d
rr e
ld a, [$da80]
add e
ld e, a
ld hl, $9843
ld a, [$da83]
and a
jr z, .asm_d496
ld hl, $9c43
.asm_d496
add hl, de
push hl
ld a, [$da81]
ld e, a
sla e
sla e
add e
sla e
add e
ld e, a
ld a, [$da80]
add e
ld e, a
ld d, $0
ld hl, wRedHighScore1Name
ld a, [$da83]
and a
jr z, .asm_d4b8
ld hl, wBlueHighScore1Name
.asm_d4b8
add hl, de
ld a, [hl]
sla a
add $90
pop hl
call PutTileInVRAM
ld de, $0020
add hl, de
cp $fe
jr z, .asm_d4cb
inc a
.asm_d4cb
call PutTileInVRAM
ret
Func_d4cf: ; 0xd4cf
ld a, [hNewlyPressedButtons]
ld b, a
ld a, [$da83]
bit 4, b
jr z, .asm_d4e3
and a
ret nz
ld de, $0003
call PlaySoundEffect
jr .asm_d4f0
.asm_d4e3
bit 5, b
ret z
and a
ret z
ld de, $0003
call PlaySoundEffect
jr .asm_d537
.asm_d4f0
call ClearOAMBuffer
call Func_d57b
ld a, $a5
ld [$ffa7], a
xor a
ld [$ffa6], a
ld a, $2
ld [hBoardXShift], a
ld hl, $ff9e
set 5, [hl]
ld b, $27
.asm_d508
push bc
ld a, $27
sub b
bit 0, b
call nz, Func_d626
ld hl, $ffa7
dec [hl]
dec [hl]
dec [hl]
dec [hl]
ld hl, hBoardXShift
inc [hl]
inc [hl]
inc [hl]
inc [hl]
rst $10
pop bc
dec b
jr nz, .asm_d508
xor a
ld [hBoardXShift], a
ld hl, $ff9e
res 5, [hl]
set 3, [hl]
ld a, $1
ld [$da83], a
call Func_d5d0
ret
.asm_d537
call ClearOAMBuffer
call Func_d57b
ld a, $7
ld [$ffa7], a
xor a
ld [$ffa6], a
ld a, $a0
ld [hBoardXShift], a
ld hl, $ff9e
set 5, [hl]
res 3, [hl]
ld b, $27
.asm_d551
push bc
ld a, b
bit 0, b
call nz, Func_d626
ld hl, $ffa7
inc [hl]
inc [hl]
inc [hl]
inc [hl]
ld hl, hBoardXShift
dec [hl]
dec [hl]
dec [hl]
dec [hl]
rst $10
pop bc
dec b
jr nz, .asm_d551
xor a
ld [hBoardXShift], a
ld hl, $ff9e
res 5, [hl]
xor a
ld [$da83], a
call Func_d5d0
ret
Func_d57b: ; 0xd57b
ld a, $f0
ld [hBoardYShift], a
xor a
ld [$ffab], a
ld a, $10
ld [$ffad], a
rst $10
ld a, $30
ld hl, $6000
ld de, $9800
ld bc, $0040
call LoadVRAMData
ld a, $30
ld hl, $6200
ld de, $9a00
ld bc, $0040
call LoadVRAMData
ld a, $30
ld hl, $5800
ld de, $9c00
ld bc, $0040
call LoadVRAMData
ld a, $30
ld hl, $5a00
ld de, $9e00
ld bc, $0040
call LoadVRAMData
ld b, $10
.asm_d5c1
push bc
ld hl, hBoardYShift
inc [hl]
ld hl, $ffad
dec [hl]
rst $10
pop bc
dec b
jr nz, .asm_d5c1
ret
Func_d5d0: ; 0xd5d0
ld b, $10
.asm_d5d2
push bc
ld hl, hBoardYShift
dec [hl]
ld hl, $ffad
inc [hl]
rst $10
pop bc
dec b
jr nz, .asm_d5d2
ld a, $30
ld hl, $63c0
ld de, $9800
ld bc, $0040
call LoadVRAMData
ld a, $30
ld hl, $6280
ld de, $9a00
ld bc, $0040
call LoadVRAMData
ld a, $30
ld hl, $5bc0
ld de, $9c00
ld bc, $0040
call LoadVRAMData
ld a, $30
ld hl, $5a80
ld de, $9e00
ld bc, $0040
call LoadVRAMData
ld bc, $0009
call Func_d68a
xor a
ld [hBoardYShift], a
ld [$ffab], a
ld [$ffad], a
ret
INCBIN "baserom.gbc",$d626,$d626 - $d626
Func_d626: ; 0xd626
ld c, a
ld a, [hGameBoyColorFlag]
and a
ret z
ld a, c
srl a
sub $2
cp $10
ret nc
ld c, a
ld b, $0
sla c
add c
ld c, a
ld hl, $565a
add hl, bc
ld a, [hli]
ld c, a
ld a, [hli]
ld b, a
ld a, [hl]
ld h, b
ld l, c
ld de, $0008
ld bc, $0038
push af
call Func_7dc
pop af
ld de, $0040
ld bc, $0008
call Func_7dc
ret
INCBIN "baserom.gbc",$d65a,$d68a - $d65a
Func_d68a: ; 0xd68a
push bc
ld hl, wPokedexFlags
ld bc, $9700
.asm_d691
bit 1, [hl]
jr z, .asm_d696
inc c
.asm_d696
inc hl
dec b
jr nz, .asm_d691
ld a, c
pop bc
cp NUM_POKEMON
ret nz
ld hl, vBGMap0
add hl, bc
call Func_d6aa
ld hl, vBGMap1
add hl, bc
; fall through
Func_d6aa: ; 0xd6aa
ld a, $56
call PutTileInVRAM
inc hl
ld a, $57
call PutTileInVRAM
ret
Func_d6b6: ; 0xd6b6
ld hl, wPokedexFlags
ld bc, $9700
.asm_d6bc
bit 1, [hl]
jr z, .asm_d6c1
inc c
.asm_d6c1
inc hl
dec b
jr nz, .asm_d6bc
ld a, c
cp NUM_POKEMON
ret nz
ld hl, $c289
ld a, $56
ld [hli], a
ld a, $57
ld [hli], a
ret
HandleFieldSelectScreen: ; 0xd6d3
ld a, [wScreenState]
rst $18 ; calls JumpToFuncInTable
FieldSelectScreenFunctions: ; 0xd6d7
dw LoadFieldSelectScreen
dw ChooseFieldToPlay
dw ExitFieldSelectScreen
LoadFieldSelectScreen: ; 0xd6dd
ld a, $43
ld [$ff9e], a
ld a, $e4
ld [$d80c], a
ld a, $d2
ld [$d80d], a
ld [$d80e], a
xor a
ld [hBoardXShift], a
ld [hBoardYShift], a
ld hl, FieldSelectGfxPointers
ld a, [hGameBoyColorFlag]
call LoadVideoData
call ClearOAMBuffer
ld a, $8
ld [wFieldSelectBlinkingBorderFrame], a
call Func_b66
ld a, $12
call SetSongBank
ld de, $0003
call Func_490
call Func_588
call Func_bbe
ld hl, wScreenState
inc [hl]
ret
FieldSelectGfxPointers: ; 0xd71c
dw FieldSelectGfx_GameBoy
dw FieldSelectGfx_GameBoyColor
FieldSelectGfx_GameBoy: ; 0xd720
dw FieldSelectScreenGfx
db Bank(FieldSelectScreenGfx)
dw vTiles1 - $100
dw $3400
dw FieldSelectTilemap
db Bank(FieldSelectTilemap)
dw vBGMap0
dw $900
db $FF, $FF ; terminators
FieldSelectGfx_GameBoyColor: ; 0xd730
dw FieldSelectScreenGfx
db Bank(FieldSelectScreenGfx)
dw vTiles1 - $100
dw $3400
dw FieldSelectTilemap
db Bank(FieldSelectTilemap)
dw vBGMap0
dw $900
dw $7c00
db $2C
dw vBGMap0
dw $902
dw $5100
db $37
dw $0000
dw $91
db $FF, $FF ; terminators
ChooseFieldToPlay: ; 0xd74e
call MoveFieldSelectCursor
ld hl, $583d ; todo
call AnimateBlinkingFieldSelectBorder
ld a, [hNewlyPressedButtons]
and (A_BUTTON | B_BUTTON)
ret z
ld [$d8f6], a
ld a, $18 ; number of frames to blink the border after selecting the Field
ld [wFieldSelectBlinkingBorderTimer], a
ld a, $1
ld [wFieldSelectBlinkingBorderFrame], a
ld de, $0001
call PlaySoundEffect
ld hl, wScreenState
inc [hl]
ret
ExitFieldSelectScreen: ; 0xd774
ld a, [$d8f6] ; this holds the button that was pressed (A or B)
bit BIT_A_BUTTON, a
jr z, .didntPressA
ld hl, $5846
call AnimateBlinkingFieldSelectBorder
ld a, [wFieldSelectBlinkingBorderTimer]
dec a
ld [wFieldSelectBlinkingBorderTimer], a
ret nz
.didntPressA
ld a, [hJoypadState]
push af
call Func_cb5
call Func_576
ld a, [$d8f6]
bit BIT_A_BUTTON, a
jr z, .pressedB
ld a, [wSelectedFieldIndex]
ld c, a
ld b, $0
ld hl, StartingStages
add hl, bc
ld a, [hl]
ld [wCurrentStage], a
pop af
xor a
ld [$d7c2], a
ld hl, wPartyMons
ld de, $a268
ld bc, $04c3
call Func_f1a
xor a
ld [$d7c1], a
; Start a round of Pinball! Yayy
ld a, SCREEN_PINBALL_GAME
ld [wCurrentScreen], a
xor a
ld [wScreenState], a
ret
.pressedB
pop af
ld a, SCREEN_TITLESCREEN
ld [wCurrentScreen], a
xor a
ld [wScreenState], a
ret
StartingStages: ; 0xd7d1
; wSelectedFieldIndex is used to index this array
db STAGE_RED_FIELD_BOTTOM, STAGE_BLUE_FIELD_BOTTOM
MoveFieldSelectCursor: ; 0x57d3
; When the player presses Right or Left, the stage is
; illuminated with a blinking border. This function keeps tracks
; of which field is currently selected.
ld a, [hPressedButtons]
ld b, a
ld a, [wSelectedFieldIndex]
bit BIT_D_LEFT, b
jr z, .didntPressLeft
and a
ret z ; if cursor is already hovering over Red stage, don't do anything
dec a ; move cursor over Red stage
ld [wSelectedFieldIndex], a
ld de, $003c
call PlaySoundEffect
ret
.didntPressLeft
bit BIT_D_RIGHT, b
ret z
cp $1
ret z ; if cursor is already hovering over Blue stage, don't do anything
inc a ; move cursor over Red stage
ld [wSelectedFieldIndex], a
ld de, $003d
call PlaySoundEffect
ret
AnimateBlinkingFieldSelectBorder: ; 0xd7fb
; This makes the border of the currently-selected Field blink in the Field Select screen.
push hl
ld a, [wSelectedFieldIndex]
sla a
ld c, a
ld b, $0
ld hl, $584f ; todo
add hl, bc
ld a, [hli]
ld c, a
ld a, [hli]
ld b, a
ld a, [$d915]
sla a
ld e, a
ld d, $0
pop hl
push hl
add hl, de
ld a, [hl]
call LoadOAMData
ld a, [wFieldSelectBlinkingBorderFrame]
dec a
jr nz, .asm_d838
inc hl
inc hl
ld a, [hl]
and a
jr z, .asm_d82b
ld a, [$d915]
inc a
.asm_d82b
ld [$d915], a
sla a
ld c, a
ld b, $0
pop hl
push hl
inc hl
add hl, bc
ld a, [hl]
.asm_d838
ld [wFieldSelectBlinkingBorderFrame], a
pop hl
ret
INCBIN "baserom.gbc",$d83d,$d853 - $d83d
HandlePinballGame: ; 0xd853
ld a, [wScreenState]
rst $18 ; calls JumpToFuncInTable
PinballGameScreenFunctions: ; 0xd857
dw Func_d861
dw Func_d87f
dw Func_d909
dw Func_da36
dw Func_dab2
Func_d861: ; 0xd861
xor a
ld [$d908], a
ld [$ff8a], a
ld a, Bank(InitializeStage)
ld hl, InitializeStage
call BankSwitch
call Func_30e8
ld a, $1
ld [$d85d], a
ld [$d4aa], a
ld hl, wScreenState
inc [hl]
ret
Func_d87f: ; 0xd87f
ld a, $67
ld [$ff9e], a
ld a, $e4
ld [$d80c], a
ld a, $e1
ld [$d80d], a
ld a, $e4
ld [$d80e], a
ld a, [$d7ab]
ld [hBoardXShift], a
xor a
ld [hBoardYShift], a
ld a, $7
ld [$ffa7], a
ld a, $83
ld [$ffa2], a
ld [$ffa8], a
ld a, $ff
ld [$ffaf], a
ld hl, $ff9f
set 6, [hl]
ld hl, $ffff
set 1, [hl]
ld a, $1
ld [$ffb0], a
ld [$ff8a], a
ld a, Bank(StartBallForStage)
ld hl, StartBallForStage
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_e578)
ld hl, Func_e578
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_e6c2)
ld hl, Func_e6c2
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_ed5e)
ld hl, Func_ed5e
call BankSwitch
call ClearOAMBuffer
ld [$ff8a], a
ld a, Bank(Func_84b7)
ld hl, Func_84b7
call BankSwitch
ld a, [$d849]
and a
call nz, Func_e5d
ld a, $1
ld [$d4aa], a
xor a
ld [$d7c1], a
call Func_b66
call Func_588
call Func_bbe
ld hl, wScreenState
inc [hl]
ret
Func_d909: ; 0xd909
; main loop for stage logic
xor a
ld [wFlipperCollision], a
ld [$d7eb], a
call ApplyGravityToBall
call LimitBallVelocity
xor a
ld [$d7e9], a
call HandleTilts
ld a, [wCurrentStage]
bit 0, a
ld [$ff8a], a
ld a, Bank(HandleFlippers)
ld hl, HandleFlippers
call nz, BankSwitch ; only perform flipper routines on the lower-half of stages
ld a, [wFlipperCollision]
and a
ld a, [$d7ea]
push af
call Func_22b5 ; collision stuff
pop af
jr z, .noFlipperCollision
ld [$d7ea], a
.noFlipperCollision
call Func_2720 ; not collision-related
call Func_281c ; not collision-related
ld hl, wKeyConfigMenu
call IsKeyPressed
jr z, .didntPressMenuKey
ld de, $034c
call PlaySoundEffect
ld [$ff8a], a
ld a, Bank(HandleInGameMenu)
ld hl, HandleInGameMenu
call BankSwitch
jp z, SaveGame
.didntPressMenuKey
ld a, [$d7e9] ; check for collision flag
and a
jr z, .asm_d9a2
call ApplyTiltForces
call LoadBallVelocity
ld a, [$d7ea]
call Func_21e7
call Func_222b
ld a, [wFlipperCollision]
and a
jr z, .asm_d993
ld hl, $d7bc
ld a, [hli]
ld h, [hl]
ld l, a
ld a, e
sub l
ld e, a
ld a, d
sbc h
ld d, a
ld hl, $d7ba
ld a, [hli]
ld h, [hl]
ld l, a
ld a, c
add l
ld c, a
ld a, b
adc h
ld b, a
jr .asm_d999
.asm_d993
ld a, [$d7f8]
and a
jr nz, .asm_d9a2
.asm_d999
ld a, [$d7ea]
call Func_21e5
call SetBallVelocity
.asm_d9a2
call MoveBallPosition
ld [$ff8a], a
ld a, Bank(Func_ece9)
ld hl, Func_ece9
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_84b7)
ld hl, Func_84b7
call BankSwitch
call Func_33e3
ld a, [$d5cb]
and a
jr nz, .asm_d9e9
ld [$ff8a], a
ld a, Bank(Func_85c7)
ld hl, Func_85c7
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_8650)
ld hl, Func_8650
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_8645)
ld hl, Func_8645
call BankSwitch
call Func_dba9
call Func_dc7c
call Func_dcb4
.asm_d9e9
ld a, [$d57d]
and a
ld [$ff8a], a
ld a, Bank(Func_86a4)
ld hl, Func_86a4
call nz, BankSwitch
ld a, [$d4ae]
and a
ret z
xor a
ld [$d4ae], a
ld hl, wScreenState
inc [hl]
ret
SaveGame: ; 0xda05
ld de, $0000
call Func_490
ld bc, $0004
call Func_93f
call Func_cb5
ld a, [$d849]
and a
call nz, Func_e5d
call Func_576
ld hl, $ff9f
res 6, [hl]
ld hl, $ffff
res 1, [hl]
xor a
ld [$d4aa], a
ld a, SCREEN_TITLESCREEN
ld [wCurrentScreen], a
xor a
ld [wScreenState], a
ret
Func_da36: ; 0xda36
xor a
ld [hJoypadState], a
ld [hNewlyPressedButtons], a
ld [hPressedButtons], a
ld [wFlipperCollision], a
ld [$d7eb], a
xor a
ld [$d7e9], a
ld [$d548], a
ld [$d549], a
call HandleTilts
ld a, [wCurrentStage]
bit 0, a
ld [$ff8a], a
ld a, Bank(HandleFlippers)
ld hl, HandleFlippers
call nz, BankSwitch
ld [$ff8a], a
ld a, Bank(Func_84b7)
ld hl, Func_84b7
call BankSwitch
call Func_33e3
ld [$ff8a], a
ld a, Bank(Func_85c7)
ld hl, Func_85c7
call BankSwitch
ld a, [$d5ca]
and a
ret nz
ld a, [$d4c9]
and a
jr z, .asm_daa9
ld a, [$d49c]
cp $2
jr z, .asm_daa9
call Func_f533
ld a, [$d49c]
and a
jr z, .asm_daa9
ld a, $2
ld [$d49c], a
ld [$d4aa], a
call Func_30e8
call Func_30db
ld hl, $d5dc
ld de, $28db
call Func_32aa
ret
.asm_daa9
xor a
ld [$d49c], a
ld hl, wScreenState
inc [hl]
ret
Func_dab2: ; 0xdab2
xor a
ld [$d803], a
ld a, [$d616]
and a
jp nz, Func_db5d
ld a, [$d495]
and a
jr nz, .asm_dae6
ld a, [$d496]
and a
jr nz, .asm_db28
call Func_cb5
ld a, [$d849]
and a
call z, Func_e5d
call Func_576
ld hl, $ff9f
res 6, [hl]
ld hl, $ffff
res 1, [hl]
ld a, $1
ld [wScreenState], a
ret
.asm_dae6
ld de, $0000
call Func_490
ld bc, $0004
call Func_93f
call Func_cb5
ld a, [$d849]
and a
call nz, Func_e5d
call Func_576
ld hl, $ff9f
res 6, [hl]
ld hl, $ffff
res 1, [hl]
ld a, [wCurrentStage]
ld [$d4ad], a
ld a, [$d4af]
ld [$d4b0], a
ld a, [$d497]
ld [wCurrentStage], a
xor a
ld [$d496], a
ld [$d495], a
ld a, $0
ld [wScreenState], a
ret
.asm_db28
ld de, $0000
call Func_490
ld bc, $0004
call Func_93f
call Func_cb5
ld a, [$d849]
and a
call nz, Func_e5d
call Func_576
ld hl, $ff9f
res 6, [hl]
ld hl, $ffff
res 1, [hl]
ld a, [$d4ad]
ld [wCurrentStage], a
ld a, [$d4b0]
ld [$d4af], a
ld a, $1
ld [wScreenState], a
ret
Func_db5d: ; 0xdb5d
xor a
ld [$d616], a
ld de, $0000
call Func_490
ld bc, $0004
call Func_93f
call Func_cb5
call Func_576
ld hl, $ff9f
res 6, [hl]
ld hl, $ffff
res 1, [hl]
xor a
ld [$d4aa], a
ld a, [wCurrentStage]
ld c, a
ld b, $0
ld hl, $5b99 ; todo
add hl, bc
ld a, [hl]
ld [$da83], a
ld a, $7
ld [wCurrentScreen], a
xor a
ld [wScreenState], a
ret
INCBIN "baserom.gbc",$db99,$dba9 - $db99
Func_dba9: ; 0xdba9
ld a, $85
ld [$c644], a
ld a, [$d49d]
xor $3
inc a
add $86
ld [$c645], a
ret
Func_dbba: ; 0xdbba
ld a, $1
ld [wBallSaverIconOn], a
ld a, $ff
ld [$d4a2], a
ld a, $3b
ld [wBallSaverTimerFrames], a
ld a, $14
ld [wBallSaverTimerSeconds], a
ld a, $2
ld [$d4a5], a
ret
InitBallSaverForCatchEmMode: ; 0xdbd4
ld a, [wBallSaverTimerFrames]
ld [wBallSaverTimerFramesBackup], a
ld a, [wBallSaverTimerSeconds]
ld [wBallSaverTimerSecondsBackup], a
ld a, [$d4a5]
ld [$d4a8], a
ld a, $0
ld [wBallSaverIconOn], a
ld a, $ff
ld [$d4a2], a
ld a, 59
ld [wBallSaverTimerFrames], a
ld a, 60
ld [wBallSaverTimerSeconds], a
ld a, $ff
ld [$d4a5], a
ret
Func_dc00: ; 0xdc00
ld a, [wBallSaverTimerFramesBackup]
ld [wBallSaverTimerFrames], a
ld a, [wBallSaverTimerSecondsBackup]
ld [wBallSaverTimerSeconds], a
ld a, [$d4a8]
ld [$d4a5], a
ld a, [wBallSaverTimerSeconds]
and a
jr z, .asm_dc1a
ld a, $1
.asm_dc1a
ld [wBallSaverIconOn], a
ld a, [wBallSaverTimerSeconds]
ld c, $0
cp $2
jr c, .asm_dc34
ld c, $4
cp $6
jr c, .asm_dc34
ld c, $10
cp $b
jr c, .asm_dc34
ld c, $ff
.asm_dc34
ld a, c
ld [$d4a2], a
ld a, [wCurrentStage]
bit 0, a
ret z
ld [$ff8a], a
ld a, Bank(Func_14707)
ld hl, Func_14707
call BankSwitch
ret
INCBIN "baserom.gbc",$dc49,$dc49 - $dc49
Func_dc49: ; 0xdc49
ld a, [wCurrentStage]
rst $18 ; calls JumpToFuncInTable
CallTable_dc4d: ; 0xdc4d
; STAGE_RED_FIELD_TOP
dw Func_dd76
; STAGE_RED_FIELD_BOTTOM
dw Func_dd76
dw Func_de4e
dw Func_de4e
; STAGE_BLUE_FIELD_TOP
dw Func_de4f
; STAGE_BLUE_FIELD_TOP
dw Func_de4f
; STAGE_GENGAR_BONUS
dw Func_df1a
; STAGE_GENGAR_BONUS
dw Func_df1a
; STAGE_MEWTWO_BONUS
dw Func_df7e
; STAGE_MEWTWO_BONUS
dw Func_df7e
; STAGE_MEOWTH_BONUS
dw Func_dfe2
; STAGE_MEOWTH_BONUS
dw Func_dfe2
; STAGE_DIGLETT_BONUS
dw Func_e056
; STAGE_DIGLETT_BONUS
dw Func_e056
; STAGE_SEEL_BONUS
dw Func_e08b
; STAGE_SEEL_BONUS
dw Func_e08b
Func_dc6d: ; 0xdc6d
push de
call Func_30e8
call Func_30db
ld hl, $d5dc
pop de
call Func_32aa
ret
INCBIN "baserom.gbc",$dc7c,$dc7c - $dc7c
Func_dc7c: ; 0xdc7c
ld hl, $c640
ld a, $83
ld [hli], a
ld a, $81
ld [hli], a
ld a, $81
ld [hl], a
ld a, [wNumPartyMons]
call ConvertHexByteToDecWord
ld hl, $c641
ld c, $1
ld a, d
call .asm_dca0
ld a, e
swap a
call .asm_dca0
ld a, e
ld c, $0
.asm_dca0
and $f
jr nz, .asm_dca7
ld a, c
and a
ret nz
.asm_dca7
ld c, $0
add $86
ld [hli], a
ret
INCBIN "baserom.gbc",$dcad,$dcb4 - $dcad
Func_dcb4: ; 0xdcb4
ld a, [$d517]
cp $f
ld a, $81
jr nz, .asm_dcbf
ld a, $84
.asm_dcbf
ld [$c646], a
ret
LoadBallGfx: ; 0xdcc3
xor a
ld [$d4c8], a
ld a, [wBallType]
cp GREAT_BALL
jr nc, .notPokeBall
ld a, Bank(PinballPokeballGfx)
ld hl, PinballPokeballGfx
ld de, $8400
ld bc, $0200
call Func_735
ret
.notPokeBall
cp ULTRA_BALL
jr nc, .notGreatBall
ld a, Bank(PinballGreatballGfx)
ld hl, PinballGreatballGfx
ld de, $8400
ld bc, $0200
call Func_735
ret
.notGreatBall
cp MASTER_BALL
jr nc, .notUltraBall
ld a, Bank(PinballUltraballGfx)
ld hl, PinballUltraballGfx
ld de, $8400
ld bc, $0200
call Func_735
ret
.notUltraBall
ld a, Bank(PinballMasterballGfx)
ld hl, PinballMasterballGfx
ld de, $8400
ld bc, $0200
call Func_735
ret
LoadMiniBallGfx: ; 0xdd12
ld a, $1
ld [$d4c8], a
ld a, [wBallType]
cp GREAT_BALL
jr nc, .notPokeBall
ld a, Bank(PinballPokeballMiniGfx)
ld hl, PinballPokeballMiniGfx
ld de, $8400
ld bc, $0200
call Func_735
ret
.notPokeBall
cp ULTRA_BALL
jr nc, .notGreatBall
ld a, Bank(PinballGreatballMiniGfx)
ld hl, PinballGreatballMiniGfx
ld de, $8400
ld bc, $0200
call Func_735
ret
.notGreatBall
cp MASTER_BALL
jr nc, .notUltraBall
ld a, Bank(PinballUltraballMiniGfx)
ld hl, PinballUltraballMiniGfx
ld de, $8400
ld bc, $0200
call Func_735
ret
.notUltraBall
ld a, Bank(PinballMasterballMiniGfx)
ld hl, PinballMasterballMiniGfx
ld de, $8400
ld bc, $0200
call Func_735
ret
Func_dd62: ; 0xdd62
ld a, $2
ld [$d4c8], a
ld a, $2a
ld hl, $5800
ld de, $8400
ld bc, $0200
call Func_735
ret
Func_dd76: ; 0xdd76
ld a, [wBallSaverTimerFrames]
ld hl, wBallSaverTimerSeconds
or [hl]
jr z, .asm_dda3
ld a, [$d4a5]
bit 7, a
jr nz, .asm_dd9c
dec a
ld [$d4a5], a
push af
ld de, $28c9
call Func_dc6d
pop af
jr nz, .asm_dd9c
ld a, $1
ld [wBallSaverTimerFrames], a
ld [wBallSaverTimerSeconds], a
.asm_dd9c
ld de, $1502
call PlaySoundEffect
ret
.asm_dda3
ld de, $0000
call Func_490
ld bc, $001e
call Func_93f
ld de, $2524
call PlaySoundEffect
call Func_dbba
ld a, $1
ld [$d4c9], a
xor a
ld [$d4de], a
ld [$d4df], a
call Func_ddfd
ld a, [$d49b]
and a
jr z, .asm_dddd
dec a
ld [$d49b], a
ld a, $1
ld [$d49c], a
ld de, $28ee
call Func_dc6d
ret
.asm_dddd
ld a, [$d49d]
ld hl, $d49e
cp [hl]
jr z, .asm_ddf1
inc a
ld [$d49d], a
ld de, $28ee
call Func_dc6d
ret
.asm_ddf1
ld de, $28ee
call Func_dc6d
ld a, $1
ld [$d616], a
ret
Func_ddfd: ; 0xddfd
ld a, [wSpecialMode]
and a
ret z
ld a, [$d550]
and a
jr nz, .asm_de14
ld [$ff8a], a
ld a, Bank(Func_10157)
ld hl, Func_10157
call BankSwitch
jr .asm_de40
.asm_de14
cp $1
jr nz, .asm_de2d
xor a
ld [$d604], a
ld a, $1e
ld [$d607], a
ld [$ff8a], a
ld a, Bank(Func_10ac8)
ld hl, Func_10ac8
call BankSwitch
jr .asm_de40
.asm_de2d
xor a
ld [$d604], a
ld a, $1e
ld [$d607], a
ld [$ff8a], a
ld a, Bank(Func_3022b)
ld hl, Func_3022b
call BankSwitch
.asm_de40
ld a, [$d7ad]
ld c, a
ld a, [$d4af]
and $1
or c
ld [$d4af], a
ret
Func_de4e: ; 0xde4e
ret
Func_de4f: ; 0xde4f
ld a, [wBallSaverTimerFrames]
ld hl, wBallSaverTimerSeconds
or [hl]
jr z, .asm_de7c
ld a, [$d4a5]
bit 7, a
jr nz, .asm_de75
dec a
ld [$d4a5], a
push af
ld de, $28c9
call Func_dc6d
pop af
jr nz, .asm_de75
ld a, $1
ld [wBallSaverTimerFrames], a
ld [wBallSaverTimerSeconds], a
.asm_de75
ld de, $1502
call PlaySoundEffect
ret
.asm_de7c
ld de, $0000
call Func_490
ld bc, $001e
call Func_93f
ld de, $2524
call PlaySoundEffect
call Func_dbba
ld a, $1
ld [$d4c9], a
xor a
ld [$d4de], a
ld [$d4df], a
call Func_ded6
ld a, [$d49b]
and a
jr z, .asm_deb6
dec a
ld [$d49b], a
ld a, $1
ld [$d49c], a
ld de, $28ee
call Func_dc6d
ret
.asm_deb6
ld a, [$d49d]
ld hl, $d49e
cp [hl]
jr z, .asm_deca
inc a
ld [$d49d], a
ld de, $28ee
call Func_dc6d
ret
.asm_deca
ld de, $28ee
call Func_dc6d
ld a, $1
ld [$d616], a
ret
Func_ded6: ; 0xded6
ld a, [wSpecialMode]
and a
ret z
ld a, [$d550]
and a
jr nz, .asm_deec
ld [$ff8a], a
ld a, Bank(Func_10157)
ld hl, Func_10157
call BankSwitch
ret
.asm_deec
cp $1
jr nz, .asm_df05
ld a, $0
ld [$d604], a
ld a, $1e
ld [$d607], a
ld [$ff8a], a
ld a, Bank(Func_10ac8)
ld hl, Func_10ac8
call BankSwitch
ret
.asm_df05
ld a, $0
ld [$d604], a
ld a, $1e
ld [$d607], a
ld [$ff8a], a
ld a, Bank(Func_3022b)
ld hl, Func_3022b
call BankSwitch
ret
Func_df1a: ; 0xdf1a
ld a, [$d4ad]
ld hl, wCurrentStage
cp [hl]
ret z
ld a, [$d6a8]
and a
jr nz, .asm_df57
ld a, [$d6a2]
cp $5
jr c, .asm_df50
xor a
ld [$d4ae], a
ld a, [$d6a7]
and a
ret nz
ld [$d548], a
ld [$d549], a
ld [wBallSpin], a
ld [wBallRotation], a
ld hl, wBallXVelocity
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld a, $1
ld [$d6a7], a
.asm_df50
ld de, $0002
call PlaySoundEffect
ret
.asm_df57
xor a
ld [$d495], a
ld a, $1
ld [$d496], a
ld a, $2
ld [$d4c8], a
xor a
ld [$d7ac], a
ld a, [$d49a]
and a
ret nz
call Func_30e8
call Func_30db
ld hl, $d5dc
ld de, $2f04
call Func_32aa
ret
Func_df7e: ; 0xdf7e
ld a, [$d4ad]
ld hl, wCurrentStage
cp [hl]
ret z
ld a, [$d6b3]
and a
jr nz, .asm_dfbb
ld a, [$d6b1]
cp $8
jr c, .asm_dfb4
xor a
ld [$d4ae], a
ld a, [$d6b2]
and a
ret nz
ld [$d548], a
ld [$d549], a
ld [wBallSpin], a
ld [wBallRotation], a
ld hl, wBallXVelocity
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld a, $1
ld [$d6b2], a
.asm_dfb4
ld de, $000b
call PlaySoundEffect
ret
.asm_dfbb
xor a
ld [$d495], a
ld a, $1
ld [$d496], a
ld a, $2
ld [$d4c8], a
xor a
ld [$d7ac], a
ld a, [$d49a]
and a
ret nz
call Func_30e8
call Func_30db
ld hl, $d5dc
ld de, $2f1c
call Func_32aa
ret
Func_dfe2: ; 0xdfe2
xor a
ld [$d64e], a
ld a, [$d7be]
and a
jr z, .asm_dff2
ld a, [$d49a]
and a
jr z, .asm_e00f
.asm_dff2
ld a, [wMeowthStageScore]
cp $14
jr nc, .asm_e00f
cp $5
jr c, .asm_e001
sub $4
jr .asm_e002
.asm_e001
xor a
.asm_e002
ld [wMeowthStageScore], a
ld [$ff8a], a
ld a, Bank(Func_24fa3)
ld hl, Func_24fa3
call BankSwitch
.asm_e00f
ld a, [$d4ad]
ld hl, wCurrentStage
cp [hl]
ret z
ld a, [$d712]
cp $0
jr nz, .asm_e025
ld de, $0002
call PlaySoundEffect
ret
.asm_e025
xor a
ld [$d57e], a
ld [$d57d], a
xor a
ld [$d495], a
ld a, $1
ld [$d496], a
ld a, $2
ld [$d4c8], a
xor a
ld [$d7ac], a
ld [$d712], a
ld a, [$d49a]
and a
ret nz
call Func_30e8
call Func_30db
ld hl, $d5dc
ld de, $2f4d
call Func_32aa
ret
Func_e056: ; 0xe056
ld a, [$d4ad]
ld hl, wCurrentStage
cp [hl]
ret z
ld de, $000b
call PlaySoundEffect
xor a
ld [$d495], a
ld a, $1
ld [$d496], a
ld a, $2
ld [$d4c8], a
xor a
ld [$d7ac], a
ld a, [$d49a]
and a
ret nz
call Func_30e8
call Func_30db
ld hl, $d5dc
ld de, $2f34
call Func_32aa
ret
Func_e08b: ; 0xe08b
xor a
ld [$d64e], a
ld a, [$d7be]
and a
jr z, .asm_e09b
ld a, [$d49a]
and a
jr z, .asm_e0b8
.asm_e09b
ld a, [$d793]
cp $14
jr nc, .asm_e0b8
cp $5
jr c, .asm_e0aa
sub $4
jr .asm_e0ab
.asm_e0aa
xor a
.asm_e0ab
ld [$d793], a
ld [$ff8a], a
ld a, Bank(Func_262f4)
ld hl, Func_262f4
call BankSwitch
.asm_e0b8
ld a, [$d4ad]
ld hl, wCurrentStage
cp [hl]
ret z
ld a, [$d794]
cp $0
jr nz, .asm_e0c8
ret
.asm_e0c8
ld de, $0002
call PlaySoundEffect
xor a
ld [$d57d], a
ld [$d57d], a
ld [$d495], a
ld a, $1
ld [$d496], a
ld a, $2
ld [$d4c8], a
xor a
ld [$d7ac], a
ld [$d794], a
ld a, [$d49a]
and a
ret nz
call Func_30e8
call Func_30db
ld hl, $d5dc
ld de, $2f65
call Func_32aa
ret
HandleFlippers: ; 0xe0fe
xor a
ld [wFlipperCollision], a
ld [$ffbf], a
ld [$d7ba], a
ld [$d7bb], a
call Func_e118
call Func_e1f0
ld a, [wFlipperCollision]
and a
call nz, HandleFlipperCollision
ret
Func_e118: ; 0xe118
call PlayFlipperSoundIfPressed
ld a, [$d7af]
ld [$d7b6], a
ld a, [$d7b3]
ld [$d7b7], a
ld hl, wKeyConfigLeftFlipper
call IsKeyPressed2
ld hl, $fccd
jr z, .asm_e13b
ld a, [$d7be]
and a
jr nz, .asm_e13b
ld hl, $0333
.asm_e13b
ld a, [$d7af]
and a
jr nz, .asm_e145
bit 7, h
jr nz, .asm_e14d
.asm_e145
cp $f
jr nz, .asm_e150
bit 7, h
jr nz, .asm_e150
.asm_e14d
ld hl, $0000
.asm_e150
ld a, l
ld [$d7b0], a
ld a, h
ld [$d7b1], a
ld a, [$d7ae]
ld c, a
ld a, [$d7af]
ld b, a
add hl, bc
bit 7, h
jr nz, .asm_e16f
ld a, h
cp $10
jr c, .asm_e172
ld hl, $0f00
jr .asm_e172
.asm_e16f
ld hl, $0000
.asm_e172
ld a, l
ld [$d7ae], a
ld a, h
ld [$d7af], a
ld hl, wKeyConfigRightFlipper
call IsKeyPressed2
ld hl, $fccd
jr z, .asm_e18e
ld a, [$d7be]
and a
jr nz, .asm_e18e
ld hl, $0333
.asm_e18e
ld a, [$d7b3]
and a
jr nz, .asm_e198
bit 7, h
jr nz, .asm_e1a0
.asm_e198
cp $f
jr nz, .asm_e1a3
bit 7, h
jr nz, .asm_e1a3
.asm_e1a0
ld hl, $0000
.asm_e1a3
ld a, l
ld [$d7b4], a
ld a, h
ld [$d7b5], a
ld a, [$d7b2]
ld c, a
ld a, [$d7b3]
ld b, a
add hl, bc
bit 7, h
jr nz, .asm_e1c2
ld a, h
cp $10
jr c, .asm_e1c5
ld hl, $0f00
jr .asm_e1c5
.asm_e1c2
ld hl, $0000
.asm_e1c5
ld a, l
ld [$d7b2], a
ld a, h
ld [$d7b3], a
ret
PlayFlipperSoundIfPressed: ; 0xe1ce
ld a, [$d7be]
and a
ret nz
ld hl, wKeyConfigLeftFlipper
call IsKeyPressed
jr z, .asm_e1e2
ld de, $000c
call PlaySoundEffect
ret
.asm_e1e2
ld hl, wKeyConfigRightFlipper
call IsKeyPressed
ret z
ld de, $000c
call PlaySoundEffect
ret
Func_e1f0: ; 0xe1f0
ld a, [wBallXPos + 1]
cp $50 ; which half of the screen is the ball in?
jp nc, Func_e226 ; right half of screen
ld hl, wBallXPos
ld c, $ba
ld a, [hli]
ld [$ff00+c], a
inc c
ld a, [hli]
ld [$ff00+c], a
inc c
ld a, [hli]
ld [$ff00+c], a
inc c
ld a, [hli]
ld [$ff00+c], a
inc c
ld a, [$d7b6]
ld [$ffc2], a
ld a, [$d7af]
ld [$ffc3], a
call Func_e25a
ld a, [wFlipperCollision]
and a
ret z
ld a, [$d7b0]
ld [$ffc0], a
ld a, [$d7b1]
ld [$ffc1], a
ret
Func_e226: ; 0xe226
; ball is in right half of screen
ld hl, wBallXPos
ld c, $ba
ld a, [hli]
sub $1
cpl
ld [$ff00+c], a
inc c
ld a, [hli]
sbc $a0
cpl
ld [$ff00+c], a
inc c
ld a, [hli]
ld [$ff00+c], a
inc c
ld a, [hli]
ld [$ff00+c], a
inc c
ld a, [$d7b7]
ld [$ffc2], a
ld a, [$d7b3]
ld [$ffc3], a
call Func_e25a
ld a, [wFlipperCollision]
and a
ret z
ld a, [$d7b4]
ld [$ffc0], a
ld a, [$d7b5]
ld [$ffc1], a
ret
Func_e25a: ; 0xe25a
ld a, [$ffbb]
sub $2b
ret c
cp $30
ret nc
ld [$ffbb], a
ld a, [$ffbd]
sub $7b
ret c
cp $20
ret nc
ld [$ffbd], a
ld a, [$ffc2]
.asm_e270
push af
ld l, $0
ld h, a
sla a
sla h
sla h
add h
ld h, a
ld a, [$ffbb]
ld c, a
ld b, $0
sla c
rl b
sla c
rl b
sla c
rl b
sla c
rl b
sla c
rl b
add hl, bc
ld a, [$ffbd]
ld c, a
ld b, $0
add hl, bc
ld d, h
ld e, l
ld a, h
cp $40
jr nc, .asm_e2aa
add $40
ld h, a
ld a, $3d
jr .asm_e2ac
.asm_e2aa
ld a, $3e
.asm_e2ac
call Func_68f
ld b, a
and a
jr nz, .asm_e2c1
pop af
ld hl, $ffc3
cp [hl]
ret z
jr c, .asm_e2be
dec a
jr .asm_e270
.asm_e2be
inc a
jr .asm_e270
.asm_e2c1
pop af
ld a, b
ld [$ffbf], a
ld h, d
ld l, e
ld a, h
cp $20
jr nc, .asm_e2d3
add $60
ld h, a
ld a, $3e
jr .asm_e2d8
.asm_e2d3
add $20
ld h, a
ld a, $3f
.asm_e2d8
call Func_68f
ld [$d7b8], a
ld a, $1
ld [wFlipperCollision], a
ret
INCBIN "baserom.gbc",$e2e4,$e379 - $e2e4
Func_e379: ; 0xe379
ld a, b
xor d
ld [$ffbe], a
bit 7, b
jr z, .asm_e388
ld a, c
cpl
ld c, a
ld a, b
cpl
ld b, a
inc bc
.asm_e388
bit 7, d
jr z, .asm_e393
ld a, e
cpl
ld e, a
ld a, d
cpl
ld d, a
inc de
.asm_e393
push bc
push de
ld c, d
call Func_e410
pop de
pop bc
push hl
push bc
push de
ld c, e
call Func_e410
pop de
pop bc
push hl
push bc
push de
ld b, d
call Func_e410
pop de
pop bc
push hl
ld b, e
call Func_e410
ld c, l
ld l, h
xor a
ld h, a
pop de
add hl, de
rl a
pop de
add hl, de
jr nc, .asm_e3bf
inc a
.asm_e3bf
ld b, l
ld l, h
ld h, a
pop de
add hl, de
ld a, [$ffbe]
bit 7, a
ret z
ld a, c
sub $1
cpl
ld c, a
ld a, b
sbc $0
cpl
ld b, a
ld a, l
sbc $0
cpl
ld l, a
ld a, h
sbc $0
cpl
ld h, a
ret
INCBIN "baserom.gbc",$e3de,$e410 - $e3de
Func_e410: ; 0xe410
ld a, b
cp c
jr nc, .asm_e416
ld b, c
ld c, a
.asm_e416
ld h, $3e
ld l, c
ld e, [hl]
inc h
ld d, [hl]
ld l, b
ld a, [hl]
dec h
ld l, [hl]
ld h, a
add hl, de
push af
ld d, $3e
ld a, b
sub c
ld e, a
ld a, [de]
ld c, a
inc d
ld a, [de]
ld b, a
ld a, l
sub c
ld l, a
ld a, h
sbc b
ld h, a
jr nc, .asm_e43c
pop af
ccf
rr h
rr l
ret
.asm_e43c
pop af
rr h
rr l
ret
HandleFlipperCollision: ; 0xe442
; This is called when the ball is colliding with either the
; right or left flipper.
ld a, $1
ld [$d7e9], a
xor a
ld [$d7f3], a
ld [$d7f4], a
ld [$d7f5], a
ld [$d7f6], a
ld [$d7f7], a
ld a, [$ffbf]
sla a
ld c, a
ld b, $0
ld hl, Data_e538
add hl, bc
ld a, [hli]
ld c, a
ld a, [hl]
ld b, a
ld a, [$ffc0]
ld e, a
ld a, [$ffc1]
ld d, a
sla e
rl d
sla e
rl d ; multiplied de by 4
call Func_e379
ld a, b
ld [$d7bc], a
ld a, l
ld [$d7bd], a
ld a, [wBallXPos + 1]
cp $50
ld a, [$d7b8]
jr c, .asm_e48b
cpl
inc a
.asm_e48b
ld [$d7ea], a
ld a, $1
ld [$d7eb], a
ld a, [$d7bd]
bit 7, a
ret z
xor a
ld [$d7bc], a
ld [$d7bd], a
ret
Func_e4a1: ; 0xe4a1
ld a, [wCurrentStage]
and a
ret z
ld hl, $650a
ld a, [hBoardXShift]
ld d, a
ld a, [hBoardYShift]
ld e, a
ld a, [hli]
sub d
ld b, a
ld a, [hli]
sub e
ld c, a
push hl
ld hl, $650e
ld a, [$d7af]
ld e, a
ld d, $0
add hl, de
ld a, [hl]
cp $b
jr nz, .asm_e4d6
ld a, [hGameBoyColorFlag]
and a
jr nz, .asm_e4d4
ld a, [$d7be]
and a
jr z, .asm_e4d4
ld a, $18
jr .asm_e4d6
.asm_e4d4
ld a, $b
.asm_e4d6
call LoadOAMData
pop hl
ld a, [hBoardXShift]
ld d, a
ld a, [hBoardYShift]
ld e, a
ld a, [hli]
sub d
ld b, a
ld a, [hli]
sub e
ld c, a
ld hl, $6523
ld a, [$d7b3]
ld e, a
ld d, $0
add hl, de
ld a, [hl]
cp $8
jr nz, .asm_e506
ld a, [hGameBoyColorFlag]
and a
jr nz, .asm_e504
ld a, [$d7be]
and a
jr z, .asm_e504
ld a, $17
jr .asm_e506
.asm_e504
ld a, $8
.asm_e506
call LoadOAMData
ret
INCBIN "baserom.gbc",$e50a,$e538 - $e50a
Data_e538: ; 0xe538
dw $0000
dw $000C
dw $001C
dw $0030
dw $0038
dw $0048
dw $005C
dw $006C
dw $0070
dw $0080
dw $0094
dw $00A4
dw $00B4
dw $00C4
dw $00D4
dw $00E4
dw $00F8
dw $00FC
dw $00FC
dw $00FC
dw $00FC
dw $00FC
dw $00FC
dw $00FC
dw $00FC
dw $00FC
dw $00FC
dw $00FC
dw $00FC
dw $00FC
dw $00FC
dw $00FC
Func_e578: ; 0xe578
ld a, [wCurrentStage]
sla a
ld c, a
ld b, $0
ld hl, $65a7 ; todo
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld a, [hli]
and a
jr z, .asm_e598
ld a, [$d4af]
sla a
ld c, a
sla a
add c
ld c, a
ld b, $0
add hl, bc
.asm_e598
ld de, $d7ec
ld b, $6
.asm_e59d
ld a, [hli]
ld [de], a
inc de
dec b
jr nz, .asm_e59d
call Func_e656
ret
INCBIN "baserom.gbc",$e5a7,$e656 - $e5a7
Func_e656: ; 0xe656
ld hl, $d7ec
ld a, [hli]
ld h, [hl]
ld l, a
ld a, [$d7ee]
ld de, $c700
ld bc, $0300
call Func_666
ld hl, $d7ec
ld [hl], $0
inc hl
ld [hl], $c7
inc hl
ld [hl], $0
ret
Func_e674: ; 0xe674
push af
ld a, [$d548]
push af
xor a
ld [$d548], a
ld [$d803], a
ld [$ff8a], a
ld a, Bank(Func_84b7)
ld hl, Func_84b7
call BankSwitch
call Func_926
pop af
ld [$d548], a
pop af
ld [wCurrentStage], a
xor a
ld [$ffa3], a
ld [$ffa4], a
ld [$ffa5], a
rst $10
call Func_e5d
call Func_576
call ClearOAMBuffer
call Func_1129
call Func_e578
call Func_e6c2
call Func_e5d
call Func_588
ld a, $e4
ld [$ffa3], a
ld a, $e1
ld [$ffa4], a
ld a, $e4
ld [$ffa5], a
ret
Func_e6c2: ; 0xe6c2
ld a, [wCurrentStage]
bit 0, a
ld a, $86
jr z, .asm_e6d5
ld a, [$d5ca]
and a
ld a, $86
jr nz, .asm_e6d5
ld a, $90
.asm_e6d5
ld [$ffa6], a
ld hl, StageGfxPointers_GameBoy
ld a, [hGameBoyColorFlag]
and a
jr z, .loadData
ld hl, StageGfxPointers_GameBoyColor
.loadData
ld a, [wCurrentStage]
call LoadVideoData
xor a
ld [$d7f2], a
ld [$ff8a], a
ld a, Bank(Func_8471)
ld hl, Func_8471
call BankSwitch
ret
StageGfxPointers_GameBoy: ; 0xe6f7
dw StageRedFieldTopGfx_GameBoy
dw StageRedFieldBottomGfx_GameBoy
dw Data_e896
dw Data_e8bd
dw Data_e8f2
dw Data_e982
dw Data_ea12
dw Data_ea12
dw Data_eabe
dw Data_eabe
dw Data_eb4e
dw Data_eb4e
dw Data_ebd7
dw Data_ebd7
dw Data_ec60
dw Data_ec60
StageGfxPointers_GameBoyColor: ; 0xe717
dw StageRedFieldTopGfx_GameBoyColor
dw StageRedFieldBottomGfx_GameBoyColor
dw Data_e8a6
dw Data_e8d4
dw Data_e92c
dw Data_e9bc
dw Data_ea5a
dw Data_ea5a
dw Data_eaf8
dw Data_eaf8
dw Data_eb88
dw Data_eb88
dw Data_ec11
dw Data_ec11
dw Data_ec9a
dw Data_ec9a
StageRedFieldTopGfx_GameBoy: ; 0xe737
dw Alphabet1Gfx
db Bank(Alphabet1Gfx)
dw vTiles0
dw $680
dw StageRedFieldTopGfx1
db Bank(StageRedFieldTopGfx1)
dw vTiles0 + $1A0
dw $980
dw PinballPokeballGfx
db Bank(PinballPokeballGfx)
dw vTiles0 + $400
dw $800
dw StageRedFieldTopGfx2
db Bank(StageRedFieldTopGfx2)
dw vTiles0 + $600
dw $0800
dw StageRedFieldTopStatusBarSymbolsGfx_GameBoy
db Bank(StageRedFieldTopStatusBarSymbolsGfx_GameBoy)
dw vTiles1
dw $0400
dw StageRedFieldTopGfx3
db Bank(StageRedFieldTopGfx3)
dw vTiles1 + $100
dw $0680
dw StageRedFieldTopBaseGameBoyGfx
db Bank(StageRedFieldTopBaseGameBoyGfx)
dw vTiles1 + $2A0
dw $3580
dw StageRedFieldTopTilemap_GameBoy
db Bank(StageRedFieldTopTilemap_GameBoy)
dw vBGMap0
dw $1000
db $FF, $FF ; terminators
StageRedFieldTopGfx_GameBoyColor: ; 0xe771
dw Alphabet2Gfx
db Bank(Alphabet2Gfx)
dw vTiles0
dw $0680
dw StageRedFieldTopGfx1
db Bank(StageRedFieldTopGfx1)
dw vTiles0 + $1A0
dw $0980
dw PinballPokeballGfx
db Bank(PinballPokeballGfx)
dw vTiles0 + $400
dw $0800
dw StageRedFieldTopGfx2
db Bank(StageRedFieldTopGfx2)
dw vTiles0 + $600
dw $0800
dw StageRedFieldTopStatusBarSymbolsGfx_GameBoyColor
db Bank(StageRedFieldTopStatusBarSymbolsGfx_GameBoyColor)
dw vTiles1
dw $0400
dw StageRedFieldTopGfx3
db Bank(StageRedFieldTopGfx3)
dw vTiles1 + $100
dw $0680
dw StageRedFieldTopBaseGameBoyColorGfx
db Bank(StageRedFieldTopBaseGameBoyColorGfx)
dw vTiles1 + $2A0
dw $3580
dw StageRedFieldTopGfx4
db Bank(StageRedFieldTopGfx4)
dw vTiles1
dw $4002
dw StageRedFieldTopGfx5
db Bank(StageRedFieldTopGfx5)
dw vTiles0
dw $0802
dw TimerDigitsGfx
db Bank(TimerDigitsGfx)
dw vTiles0 + $600
dw $0582
dw StageRedJapaneseCharactersGfx
db Bank(StageRedJapaneseCharactersGfx)
dw vTiles0 + $200
dw $1002
dw StageRedJapaneseCharactersGfx2
db Bank(StageRedJapaneseCharactersGfx2)
dw vTiles1 + $100
dw $0802
dw StageRedFieldTopStatusBarSymbolsGfx_GameBoyColor
db Bank(StageRedFieldTopStatusBarSymbolsGfx_GameBoyColor)
dw vTiles1
dw $0402
dw StageRedFieldTopTilemap_GameBoyColor
db Bank(StageRedFieldTopTilemap_GameBoyColor)
dw vBGMap0
dw $1000
dw StageRedFieldTopTilemap2_GameBoyColor
db Bank(StageRedFieldTopTilemap2_GameBoyColor)
dw vBGMap0
dw $1002
dw $4980
db $37
dw $0000
dw $0101
dw StageRedFieldTopGfx6
db Bank(StageRedFieldTopGfx6)
dw vTiles0 + $7C0
dw $0102
db $FF, $FF ; terminators
StageRedFieldBottomGfx_GameBoy: ; 0xe7ea
dw Alphabet1Gfx
db Bank(Alphabet1Gfx)
dw vTiles0
dw $0680
dw StageRedFieldBottomGfx1
db Bank(StageRedFieldBottomGfx1)
dw vTiles0 + $1A0
dw $0580
dw StageRedFieldBottomGfx2
db Bank(StageRedFieldBottomGfx2)
dw vTiles0 + $300
dw $0200
dw StageRedFieldBottomGfx3
db Bank(StageRedFieldBottomGfx3)
dw vTiles0 + $380
dw $0080
dw StageRedFieldBottomGfx4
db Bank(StageRedFieldBottomGfx4)
dw vTiles0 + $3C0
dw $1100
dw StageRedFieldBottomBaseGameBoyGfx
db Bank(StageRedFieldBottomBaseGameBoyGfx)
dw vTiles1
dw $4000
dw SaverTextOffGfx
db Bank(SaverTextOffGfx)
dw vTiles1 + $2A0
dw $0100
dw StageRedFieldBottomTilemap_GameBoy
db Bank(StageRedFieldBottomTilemap_GameBoy)
dw vBGMap0
dw $1000
db $FF, $FF ; terminators
StageRedFieldBottomGfx_GameBoyColor: ; 0xe824
dw Alphabet2Gfx
db Bank(Alphabet2Gfx)
dw vTiles0
dw $0680
dw StageRedFieldBottomGfx1
db Bank(StageRedFieldBottomGfx1)
dw vTiles0 + $1A0
dw $0580
dw StageRedFieldBottomGfx2
db Bank(StageRedFieldBottomGfx2)
dw vTiles0 + $300
dw $0200
dw StageRedFieldBottomGfx3
db Bank(StageRedFieldBottomGfx3)
dw vTiles0 + $380
dw $0080
dw StageRedFieldBottomGfx4
db Bank(StageRedFieldBottomGfx4)
dw vTiles0 + $3C0
dw $1100
dw StageRedFieldBottomBaseGameBoyColorGfx
db Bank(StageRedFieldBottomBaseGameBoyColorGfx)
dw vTiles1
dw $4000
dw StageRedFieldBottomGfx5
db Bank(StageRedFieldBottomGfx5)
dw vTiles1
dw $4002
dw TimerDigitsGfx
db Bank(TimerDigitsGfx)
dw vTiles0 + $600
dw $0582
dw SaverTextOffGfx
db Bank(SaverTextOffGfx)
dw vTiles1 + $2A0
dw $0100
dw StageRedJapaneseCharactersGfx
db Bank(StageRedJapaneseCharactersGfx)
dw vTiles0 + $200
dw $1002
dw StageRedJapaneseCharactersGfx2
db Bank(StageRedJapaneseCharactersGfx2)
dw vTiles1 + $100
dw $0802
dw StageRedFieldBottomBaseGameBoyColorGfx
db Bank(StageRedFieldBottomBaseGameBoyColorGfx)
dw vTiles1
dw $0402
dw StageRedFieldBottomTilemap_GameBoyColor
db Bank(StageRedFieldBottomTilemap_GameBoyColor)
dw vBGMap0
dw $1000
dw StageRedFieldBottomTilemap2_GameBoyColor
db Bank(StageRedFieldBottomTilemap2_GameBoyColor)
dw vBGMap0
dw $1002
dw $4A80
db $37
dw $0000
dw $0101
dw StageRedFieldTopGfx6
db Bank(StageRedFieldTopGfx6)
dw vTiles0 + $7C0
dw $0102
db $FF, $FF ; terminators
Data_e896: ; 0xe896
dw Alphabet1Gfx
db Bank(Alphabet1Gfx)
dw vTiles0
dw $0680
dw PinballPokeballGfx
db Bank(PinballPokeballGfx)
dw vTiles0 + $400
dw $0800
db $FF, $FF ; terminators
Data_e8a6: ; 0xe8a6
dw Alphabet2Gfx
db Bank(Alphabet2Gfx)
dw vTiles0
dw $0680
dw PinballPokeballGfx
db Bank(PinballPokeballGfx)
dw vTiles0 + $400
dw $0800
dw TimerDigitsGfx
db Bank(TimerDigitsGfx)
dw vTiles0 + $600
dw $0582
db $FF, $FF ; terminators
Data_e8bd: ; 0xe8bd
dw Alphabet1Gfx
db Bank(Alphabet1Gfx)
dw vTiles0
dw $0680
dw $4380
db $2A
dw $8380
dw $1200
dw SaverTextOffGfx
db Bank(SaverTextOffGfx)
dw vTiles1 + $2a0
dw $0100
db $FF, $FF ; terminators
Data_e8d4: ; 0xe8d4
dw Alphabet2Gfx
db Bank(Alphabet2Gfx)
dw vTiles0
dw $0680
dw $4380
db $2A
dw $8380
dw $1200
dw TimerDigitsGfx
db Bank(TimerDigitsGfx)
dw vTiles0 + $600
dw $0582
dw SaverTextOffGfx
db Bank(SaverTextOffGfx)
dw vTiles1 + $2A0
dw $0100
db $FF, $FF ; terminators
Data_e8f2: ; 0xe8f2
dw Alphabet1Gfx
db Bank(Alphabet1Gfx)
dw vTiles0
dw $0680
dw $67A0
db $35
dw $81A0
dw $0980
dw PinballPokeballGfx
db Bank(PinballPokeballGfx)
dw vTiles0 + $400
dw $0800
dw $6A00
db $35
dw $8600
dw $0800
dw $7000
db $1A
dw $8800
dw $0400
dw $6600
db $35
dw $8900
dw $0680
dw $72A0
db $1A
dw $8AA0
dw $3580
dw $7000
db $2F
dw $9800
dw $1000
db $FF, $FF ; terminators
Data_e92c: ; 0xe92c
dw Alphabet2Gfx
db Bank(Alphabet2Gfx)
dw vTiles0
dw $0680
dw $67A0
db $35
dw $81A0
dw $0980
dw PinballPokeballGfx
db Bank(PinballPokeballGfx)
dw vTiles0 + $400
dw $0800
dw $6A00
db $35
dw $8600
dw $0800
dw $4000
db $28
dw $8800
dw $0400
dw $6600
db $35
dw $8900
dw $0680
dw $42A0
db $28
dw $8AA0
dw $3580
dw $5000
db $28
dw $8800
dw $4002
dw TimerDigitsGfx
db Bank(TimerDigitsGfx)
dw vTiles0 + $600
dw $0582
dw $6800
db $31
dw $9800
dw $1000
dw $6C00
db $31
dw $9800
dw $1002
dw $4B00
db $37
dw $0000
dw $0101
db $FF, $FF ; terminators
Data_e982: ; 0xe982
dw Alphabet1Gfx
db Bank(Alphabet1Gfx)
dw vTiles0
dw $0680
dw StageRedFieldBottomGfx1
db Bank(StageRedFieldBottomGfx1)
dw vTiles0 + $1A0
dw $0580
dw StageRedFieldBottomGfx2
db Bank(StageRedFieldBottomGfx2)
dw vTiles0 + $300
dw $0200
dw StageRedFieldBottomGfx3
db Bank(StageRedFieldBottomGfx3)
dw vTiles0 + $380
dw $0080
dw StageRedFieldBottomGfx4
db Bank(StageRedFieldBottomGfx4)
dw vTiles0 + $3C0
dw $1100
dw $7000
db $19
dw $8800
dw $4000
dw SaverTextOffGfx
db Bank(SaverTextOffGfx)
dw vTiles1 + $2A0
dw $0100
dw $4000
db $30
dw $9800
dw $1000
db $FF, $FF ; terminators
Data_e9bc: ; 0xe9bc
dw Alphabet2Gfx
db Bank(Alphabet2Gfx)
dw vTiles0
dw $0680
dw StageRedFieldBottomGfx1
db Bank(StageRedFieldBottomGfx1)
dw vTiles0 + $1A0
dw $0580
dw StageRedFieldBottomGfx2
db Bank(StageRedFieldBottomGfx2)
dw vTiles0 + $300
dw $0200
dw StageRedFieldBottomGfx3
db Bank(StageRedFieldBottomGfx3)
dw vTiles0 + $380
dw $0080
dw StageRedFieldBottomGfx4
db Bank(StageRedFieldBottomGfx4)
dw vTiles0 + $3C0
dw $1100
dw $4000
db $29
dw $8800
dw $4000
dw $5000
db $29
dw $8800
dw $4002
dw TimerDigitsGfx
db Bank(TimerDigitsGfx)
dw vTiles0 + $600
dw $0582
dw SaverTextOffGfx
db Bank(SaverTextOffGfx)
dw vTiles1 + $2A0
dw $0100
dw $7000
db $31
dw $9800
dw $1000
dw $7400
db $31
dw $9800
dw $1002
dw $4B80
db $37
dw $0000
dw $0101
db $FF, $FF ; terminators
Data_ea12: ; 0xea12
dw Alphabet1Gfx
db Bank(Alphabet1Gfx)
dw vTiles0
dw $0680
dw PinballPokeballGfx
db Bank(PinballPokeballGfx)
dw vTiles0 + $400
dw $0C80
dw $7000
db $1C
dw $8800
dw $4000
dw $7D00
db $22
dw $8900
dw $0600
dw $7E80
db $21
dw $8A80
dw $0080
dw $7EA0
db $21
dw $81A0
dw $0400
dw $7BA0
db $26
dw $82A0
dw $0580
dw $7D00
db $26
dw $87A0
dw $0180
dw $7D60
db $26
dw $8AA0
dw $0A80
dw $4800
db $32
dw $9800
dw $1000
db $FF, $FF ; terminators
Data_ea5a: ; 0xea5a
dw Alphabet2Gfx
db Bank(Alphabet2Gfx)
dw vTiles0
dw $0680
dw StageRedFieldBottomGfx4
db Bank(StageRedFieldBottomGfx4)
dw vTiles0 + $3C0
dw $1100
dw $6000
db $27
dw $8800
dw $4000
dw $7D00
db $22
dw $8900
dw $0600
dw $7E80
db $21
dw $8A80
dw $0080
dw $7EA0
db $21
dw $81A0
dw $0400
dw $7BA0
db $26
dw $82A0
dw $0580
dw $7D00
db $26
dw $87A0
dw $0180
dw $7D60
db $26
dw $8AA0
dw $0A80
dw $7000
db $27
dw $8800
dw $4002
dw TimerDigitsGfx
db Bank(TimerDigitsGfx)
dw vTiles0 + $600
dw $0582
dw $5000
db $32
dw $9800
dw $1000
dw $5400
db $32
dw $9800
dw $1002
dw $5080
db $37
dw $0000
dw $0101
db $FF, $FF ; terminators
Data_eabe: ; 0xeabe
dw Alphabet1Gfx
db Bank(Alphabet1Gfx)
dw vTiles0
dw $0680
dw $59A0
db $32
dw $81A0
dw $0980
dw PinballPokeballGfx
db Bank(PinballPokeballGfx)
dw vTiles0 + $400
dw $0C80
dw $5C00
db $32
dw $87A0
dw $0180
dw $7000
db $1F
dw $8800
dw $4000
dw $5800
db $32
dw $8900
dw $0680
dw $5C60
db $32
dw $8AA0
dw $0A80
dw $7000
db $32
dw $9800
dw $1000
db $FF, $FF ; terminators
Data_eaf8: ; 0xeaf8
dw Alphabet2Gfx
db Bank(Alphabet2Gfx)
dw vTiles0
dw $0680
dw $59A0
db $32
dw $81A0
dw $0980
dw PinballPokeballGfx
db Bank(PinballPokeballGfx)
dw vTiles0 + $400
dw $0C80
dw $5C00
db $32
dw $87A0
dw $0180
dw $7000
db $20
dw $8800
dw $4000
dw $5800
db $32
dw $8900
dw $0680
dw $5C60
db $32
dw $8AA0
dw $0A80
dw vTiles0
db $20
dw $8800
dw $4002
dw TimerDigitsGfx
db Bank(TimerDigitsGfx)
dw vTiles0 + $600
dw $0582
dw $7800
db $32
dw $9800
dw $1000
dw $7C00
db $32
dw $9800
dw $1002
dw $4F00
db $37
dw $0000
dw $0101
db $FF, $FF ; terminators
Data_eb4e: ; 0xeb4e
dw Alphabet1Gfx
db Bank(Alphabet1Gfx)
dw vTiles0
dw $0680
dw $41A0
db $33
dw $81A0
dw $0980
dw PinballPokeballGfx
db Bank(PinballPokeballGfx)
dw vTiles0 + $400
dw $0C80
dw $4400
db $33
dw $87A0
dw $0180
dw $7600
db $17
dw $8800
dw $2800
dw $4000
db $33
dw $8900
dw $0680
dw $4460
db $33
dw $8AA0
dw $0D80
dw $5800
db $33
dw $9800
dw $1000
db $FF, $FF ; terminators
Data_eb88: ; 0xeb88
dw Alphabet2Gfx
db Bank(Alphabet2Gfx)
dw vTiles0
dw $0680
dw $41A0
db $33
dw $81A0
dw $0980
dw PinballPokeballGfx
db Bank(PinballPokeballGfx)
dw vTiles0 + $400
dw $0C80
dw $4400
db $33
dw $87A0
dw $0180
dw $7200
db $2A
dw $8800
dw $2400
dw $4000
db $33
dw $8900
dw $0680
dw $4460
db $33
dw $8AA0
dw $0D80
dw TimerDigitsGfx
db Bank(TimerDigitsGfx)
dw vTiles0 + $600
dw $0582
dw $6000
db $33
dw $9800
dw $1000
dw $6400
db $33
dw $9800
dw $1002
dw $4C80
db $37
dw $0000
dw $0101
db $FF, $FF ; terminators
Data_ebd7: ; 0xebd7
dw Alphabet1Gfx
db Bank(Alphabet1Gfx)
dw vTiles0
dw $0680
dw $7AA0
db $2B
dw $81A0
dw $0980
dw PinballPokeballGfx
db Bank(PinballPokeballGfx)
dw vTiles0 + $400
dw $0C80
dw $7D00
db $2B
dw $87A0
dw $0180
dw $7000
db $23
dw $8800
dw $3800
dw $7900
db $2B
dw $8900
dw $0680
dw $7D60
db $2B
dw $8AA0
dw $0A00
dw $7800
db $33
dw $9800
dw $1000
db $FF, $FF ; terminators
Data_ec11: ; 0xec11
dw Alphabet2Gfx
db Bank(Alphabet2Gfx)
dw vTiles0
dw $0680
dw $7AA0
db $2B
dw $81A0
dw $0980
dw PinballPokeballGfx
db Bank(PinballPokeballGfx)
dw vTiles0 + $400
dw $0C80
dw $7D00
db $2B
dw $87A0
dw $0180
dw $7000
db $21
dw $8800
dw $3800
dw $7900
db $2B
dw $8900
dw $0680
dw $7D60
db $2B
dw $8AA0
dw $0A00
dw TimerDigitsGfx
db Bank(TimerDigitsGfx)
dw vTiles0 + $600
dw $0582
dw $7000
db $34
dw $9800
dw $1000
dw $7400
db $34
dw $9800
dw $1002
dw $4A00
db $37
dw $0000
dw $0101
db $FF, $FF ; terminators
Data_ec60: ; 0xec60
dw Alphabet1Gfx
db Bank(Alphabet1Gfx)
dw vTiles0
dw $0680
dw $71A0
db $26
dw $81A0
dw $0980
dw PinballPokeballGfx
db Bank(PinballPokeballGfx)
dw vTiles0 + $400
dw $0C80
dw $7400
db $26
dw $87A0
dw $0180
dw $7000
db $24
dw $8800
dw $3400
dw $7000
db $26
dw $8900
dw $0680
dw $7460
db $26
dw $8AA0
dw $1280
dw $5000
db $35
dw $9800
dw $1000
db $FF, $FF ; terminators
Data_ec9a: ; 0xec9a
dw Alphabet2Gfx
db Bank(Alphabet2Gfx)
dw vTiles0
dw $0680
dw $71A0
db $26
dw $81A0
dw $0980
dw PinballPokeballGfx
db Bank(PinballPokeballGfx)
dw vTiles0 + $400
dw $0C80
dw $7400
db $26
dw $87A0
dw $0180
dw $7000
db $25
dw $8800
dw $2C00
dw $7000
db $26
dw $8900
dw $0680
dw $7460
db $26
dw $8AA0
dw $1280
dw TimerDigitsGfx
db Bank(TimerDigitsGfx)
dw vTiles0 + $600
dw $0582
dw $5800
db $35
dw $9800
dw $1000
dw $5C00
db $35
dw $9800
dw $1002
dw $4880
db $37
dw $0000
dw $0101
db $FF, $FF ; terminators
Func_ece9: ; 0xece9
call Func_ed5e
ld a, [wBallYPos + 1]
add $10
cp $18
jr c, .asm_ed13
cp $b8
ret c
ld a, [wCurrentStage]
ld c, a
ld b, $0
ld hl, $6d4e ; todo
add hl, bc
ld a, [hl]
cp $ff
jr z, .asm_ed2e
call Func_e674
ld a, [wBallYPos + 1]
sub $88
ld [wBallYPos + 1], a
ret
.asm_ed13
ld a, [wCurrentStage]
ld c, a
ld b, $0
ld hl, $6d3e ; todo
add hl, bc
ld a, [hl]
cp $ff
jr z, .asm_ed2e
call Func_e674
ld a, [wBallYPos + 1]
add $88
ld [wBallYPos + 1], a
ret
.asm_ed2e
ld a, $1
ld [$d4ae], a
ld [$ff8a], a
ld a, Bank(Func_dc49)
ld hl, Func_dc49
call BankSwitch
ret
INCBIN "baserom.gbc",$ed3e,$ed5e - $ed3e
Func_ed5e: ; 0xed5e
ld hl, $d7ab
ld a, [$d7ac]
and a
jr nz, .asm_ed7f
ld a, [wBallXPos + 1]
cp $9a
ld a, $2
jr nc, .asm_ed72
ld a, $fe
.asm_ed72
ld [$d7aa], a
add [hl]
cp $22
jr z, .asm_ed7f
bit 7, a
jr nz, .asm_ed7f
ld [hl], a
.asm_ed7f
ld a, [hl]
ld hl, $d79f
sub [hl]
ld [hBoardXShift], a
xor a
ld hl, $d7a0
sub [hl]
ld [hBoardYShift], a
ret
Func_ed8e: ; 0xed8e
xor a
ld [$d803], a
ld [$d804], a
ld [$d622], a
ld a, [wNumPartyMons]
ld [$d620], a
ld a, [wBallType]
ld c, a
ld b, $0
ld hl, $6f2f
add hl, bc
ld a, [hl]
ld [$d621], a
.asm_edac
xor a
ld [hJoypadState], a
ld [hNewlyPressedButtons], a
ld [hPressedButtons], a
call HandleTilts
ld a, [wCurrentStage]
bit 0, a
ld [$ff8a], a
ld a, $3
ld hl, HandleFlippers
call nz, BankSwitch
ld [$ff8a], a
ld a, Bank(Func_84b7)
ld hl, Func_84b7
call BankSwitch
call Func_33e3
call Func_926
rst $10
ld a, [$d7af]
and a
jr nz, .asm_edac
ld a, [$d7b3]
and a
jr nz, .asm_edac
ld a, [hGameBoyColorFlag]
and a
call nz, Func_f269
call GenRandom
and $f0
ld [$d61a], a
xor a
ld [$d61b], a
ld [$d61e], a
.asm_6df7
ld a, [$d61a]
ld c, a
ld b, $0
ld hl, $7339
add hl, bc
ld a, [$d619]
add [hl]
ld c, a
ld hl, $7439
add hl, bc
ld a, [hli]
bit 7, a
jr nz, .asm_ee56
call Func_eef9
ld [$d61d], a
push af
ld de, $0009
call PlaySoundEffect
pop af
call Func_f196
ld a, [$d61b]
cp $a
jr nc, .asm_ee29
ld a, $a
.asm_ee29
ld b, a
.asm_ee2a
push bc
call Func_eeee
ld a, [$d61e]
and a
jr nz, .asm_ee47
call Func_ef1e
jr z, .asm_ee47
ld [$d61e], a
ld a, $32
ld [$d61b], a
ld de, $0728
call PlaySoundEffect
.asm_ee47
pop bc
dec b
jr nz, .asm_ee2a
ld a, [$d61b]
inc a
ld [$d61b], a
cp $3c
jr z, .asm_ee69
.asm_ee56
ld a, [$d61a]
and $f0
ld b, a
ld a, [$d61a]
inc a
and $f
or b
ld [$d61a], a
jp .asm_6df7
.asm_ee69
ld a, [$d61d]
cp $5
jr nz, .asm_ee78
ld de, $0c42
call PlaySoundEffect
jr .asm_ee7e
.asm_ee78
ld de, $0c43
call PlaySoundEffect
.asm_ee7e
ld b, $28
.asm_ee80
push bc
rst $10
pop bc
call Func_ef1e
jr nz, .asm_ee8b
dec b
jr nz, .asm_ee80
.asm_ee8b
ld a, [hGameBoyColorFlag]
and a
ld a, [$d61d]
call nz, Func_f2a0
ld b, $80
.asm_ee96
push bc
ld a, b
and $f
jr nz, .asm_eeae
bit 4, b
jr z, .asm_eea8
ld a, [$d61d]
call LoadBillboardPicture
jr .asm_eeae
.asm_eea8
ld a, [$d61d]
call Func_f196
.asm_eeae
rst $10
pop bc
call Func_ef1e
jr nz, .asm_eeb8
dec b
jr nz, .asm_ee96
.asm_eeb8
ld a, [$d619]
add $a
cp $fa
jr nz, .asm_eec3
ld a, $64
.asm_eec3
ld [$d619], a
ld a, [$d61d]
rst $18 ; calls JumpToFuncInTable
CallTable_eeca: ; 0xeeca
dw Func_ef35
dw Func_ef4f
dw Func_ef69
dw Func_ef83
dw Func_efa7
dw Func_efb2
dw Func_eff3
dw Func_f034
dw Func_f03a
dw UpgradeBallBlueField
dw UpgradeBallBlueField
dw UpgradeBallBlueField
dw Func_f0c1
dw Func_f172
dw Func_f172
dw Func_f172
dw Func_f172
dw Func_f172
Func_eeee: ; 0xeeee
push bc
ld bc, $0200
.asm_eef2
dec bc
ld a, b
or c
jr nz, .asm_eef2
pop bc
ret
Func_eef9: ; 0xeef9
cp $8
jr nz, .asm_ef09
ld a, [$d620]
and a
jr nz, .asm_ef06
ld a, $7
ret
.asm_ef06
ld a, $8
ret
.asm_ef09
cp $9
jr nz, .asm_ef14
push hl
ld hl, $d621
add [hl]
pop hl
ret
.asm_ef14
cp $d
ret nz
push hl
ld hl, $d498
add [hl]
pop hl
ret
Func_ef1e: ; 0xef1e
push bc
ld hl, wKeyConfigRightFlipper
call IsKeyPressed
jr nz, .asm_ef2d
ld hl, wKeyConfigLeftFlipper
call IsKeyPressed
.asm_ef2d
pop bc
ret
INCBIN "baserom.gbc",$ef2f,$ef35 - $ef2f
Func_ef35: ; 0xef35
ld a, $0
ld [wBallSaverIconOn], a
ld a, $ff
ld [$d4a2], a
ld a, $3b
ld [wBallSaverTimerFrames], a
ld a, $1e
ld [wBallSaverTimerSeconds], a
ld a, $2
ld [$d4a5], a
ret
Func_ef4f: ; 0xef4f
ld a, $0
ld [wBallSaverIconOn], a
ld a, $ff
ld [$d4a2], a
ld a, $3b
ld [wBallSaverTimerFrames], a
ld a, $3c
ld [wBallSaverTimerSeconds], a
ld a, $2
ld [$d4a5], a
ret
Func_ef69: ; 0xef69
ld a, $0
ld [wBallSaverIconOn], a
ld a, $ff
ld [$d4a2], a
ld a, $3b
ld [wBallSaverTimerFrames], a
ld a, $5a
ld [wBallSaverTimerSeconds], a
ld a, $2
ld [$d4a5], a
ret
Func_ef83: ; 0xef83
ld a, $1
ld [$d51d], a
ld a, $f
ld [$d517], a
xor a
ld [$d85d], a
call Func_310a
rst $10
ld a, $0
ld [$ff8a], a
ld a, Bank(Func_50000)
ld hl, Func_50000
call BankSwitch
ld a, $1
ld [$d85d], a
ret
Func_efa7: ; 0xefa7
ld [$ff8a], a
ld a, Bank(Func_30164)
ld hl, Func_30164
call BankSwitch
ret
Func_efb2: ; 0xefb2
ld a, $8
call Func_a21
ld [$d61f], a
ld b, $80
.asm_efbc
push bc
ld a, b
and $f
jr nz, .asm_efd8
bit 4, b
jr z, .asm_efd0
ld a, [$d61f]
add $12
call LoadBillboardPicture
jr .asm_efd8
.asm_efd0
ld a, [$d61f]
add $12
call Func_f196
.asm_efd8
rst $10
pop bc
ld a, [hNewlyPressedButtons]
and $21
jr nz, .asm_efe3
dec b
jr nz, .asm_efbc
.asm_efe3
ld a, [$d61f]
inc a
swap a
ld e, a
ld d, $0
ld bc, $0000
call Func_351c
ret
Func_eff3: ; 0xeff3
ld a, $8
call Func_a21
ld [$d61f], a
ld b, $80
.asm_effd
push bc
ld a, b
and $f
jr nz, .asm_f019
bit 4, b
jr z, .asm_f011
ld a, [$d61f]
add $1b
call LoadBillboardPicture
jr .asm_f019
.asm_f011
ld a, [$d61f]
add $1b
call Func_f196
.asm_f019
rst $10
pop bc
ld a, [hNewlyPressedButtons]
and $21
jr nz, .asm_f024
dec b
jr nz, .asm_effd
.asm_f024
ld a, [$d61f]
inc a
swap a
ld c, a
ld b, $0
ld de, $0000
call Func_351c
ret
Func_f034: ; 0xf034
ld a, $1
ld [$d622], a
ret
Func_f03a: ; 0xf03a
ld a, $2
ld [$d622], a
ret
UpgradeBallBlueField: ; 0xf040
; load approximately 1 minute of frames into wBallTypeCounter
ld a, $10
ld [wBallTypeCounter], a
ld a, $e
ld [wBallTypeCounter + 1], a
ld a, [wBallType]
cp MASTER_BALL
jr z, .masterBall
ld de, $063a
call PlaySoundEffect
call Func_30e8
call Func_30db
ld de, $2907
ld hl, $d5cc
call Func_32aa
; upgrade ball type
ld a, [wBallType]
ld c, a
ld b, $0
ld hl, BallTypeProgressionBlueField
add hl, bc
ld a, [hl]
ld [wBallType], a
add $30
ld [$c512], a
jr .asm_f0b0
.masterBall
ld de, $0f4d
call PlaySoundEffect
ld bc, $34e8
ld [$ff8a], a
ld a, Bank(Func_8588)
ld hl, Func_8588
call BankSwitch
ld bc, $100
ld de, $0000
push bc
push de
call Func_30e8
call Func_30db
ld hl, $d5d4
ld de, $2948
call Func_32cc
pop de
pop bc
ld hl, $d5cc
ld de, $2922
call Func_32aa
.asm_f0b0
ld [$ff8a], a
ld a, Bank(Func_155bb)
ld hl, Func_155bb
call BankSwitch
ret
BallTypeProgressionBlueField: ; 0xf0bb
; Determines the next upgrade for the Ball.
db GREAT_BALL ; POKE_BALL -> GREAT_BALL
db GREAT_BALL ; unused
db ULTRA_BALL ; GREAT_BALL -> ULTRA_BALL
db MASTER_BALL ; ULTRA_BALL -> MASTER_BALL
db MASTER_BALL ; unused
db MASTER_BALL ; MASTER_BALL -> MASTER_BALL
Func_f0c1: ; 0xf0c1
ld a, $4
call Func_a21
ld [$d61f], a
ld b, $80
.asm_f0cb
push bc
ld a, b
and $f
jr nz, .asm_f0e7
bit 4, b
jr z, .asm_f0df
ld a, [$d61f]
add $24
call LoadBillboardPicture
jr .asm_f0e7
.asm_f0df
ld a, [$d61f]
add $24
call Func_f196
.asm_f0e7
rst $10
pop bc
ld a, [hNewlyPressedButtons]
and $21
jr nz, .asm_f0f2
dec b
jr nz, .asm_f0cb
.asm_f0f2
ld a, $3
ld [$d610], a
xor a
ld [$d611], a
ld [$d612], a
ld a, [$d482]
call Func_f14a
ld b, c
ld a, [$d61f]
inc a
ld hl, $d482
add [hl]
cp $64
jr c, .asm_f113
ld a, $63
.asm_f113
ld [hl], a
call Func_f14a
ld a, c
cp b
ld [$ff8a], a
ld a, Bank(Func_30164)
ld hl, Func_30164
call nz, BankSwitch
ld [$ff8a], a
ld a, Bank(Func_16f95)
ld hl, Func_16f95
call BankSwitch
ld a, [$d60c]
ld [$ff8a], a
ld a, Bank(Func_f154)
ld hl, Func_f154
call BankSwitch ; no need for BankSwitch here...
ld a, [$d60d]
add $14
ld [$ff8a], a
ld a, Bank(Func_f154)
ld hl, Func_f154
call BankSwitch ; no need for BankSwitch here...
ret
Func_f14a: ; 0xf14a
ld c, $0
.asm_f14c
cp $19
ret c
sub $19
inc c
jr .asm_f14c
Func_f154: ; 0xf154
ld a, [wCurrentStage]
call CallInFollowingTable
CallTable_f15a: ; 0xf15a
dw Func_16f28
db Bank(Func_16f28), $00
dw Func_16f28
db Bank(Func_16f28), $00
dw Func_16f28
db Bank(Func_16f28), $00
dw Func_16f28
db Bank(Func_16f28), $00
dw Func_1d5f2
db Bank(Func_1d5f2), $00
dw Func_1d5f2
db Bank(Func_1d5f2), $00
Func_f172: ; 0xf172
ld a, $1
ld [$d623], a
ret
LoadBillboardPicture: ; 0xf178
; Loads a billboard picture's tiles into VRAM
; input: a = billboard picture id
push hl
ld c, a
ld b, $0
sla c
add c ; a has been multplied by 3 becuase entires in BillboardPicturePointers are 3 bytes long
ld c, a
ld hl, BillboardPicturePointers
add hl, bc
ld a, [hli]
ld c, a
ld a, [hli]
ld b, a
ld a, [hl]
ld h, b
ld l, c
ld de, $8900 ; destination address to copy the tiles
ld bc, $180 ; billboard pictures are $180 bytes
call LoadVRAMData ; loads the tiles into VRAM
pop hl
ret
Func_f196: ; 0xf196
push hl
ld c, a
ld b, $0
sla c
add c
ld c, a
ld hl, BillboardPicturePointers
add hl, bc
ld a, [hli]
ld c, a
ld a, [hli]
ld b, a
ld a, [hl]
ld h, b
ld l, c
ld bc, $0180
add hl, bc
ld de, $8900
ld bc, $0180
call LoadVRAMData
pop hl
ret
BillboardPicturePointers: ; 0xf1b8
dw BallSaver30SecondsOnPic
db Bank(BallSaver30SecondsOnPic)
dw BallSaver60SecondsOnPic
db Bank(BallSaver60SecondsOnPic)
dw BallSaver90SecondsOnPic
db Bank(BallSaver90SecondsOnPic)
dw PikachuSaverOnPic
db Bank(PikachuSaverOnPic)
dw ExtraBallOnPic
db Bank(ExtraBallOnPic)
dw SmallRewardOnPic
db Bank(SmallRewardOnPic)
dw BigRewardOnPic
db Bank(BigRewardOnPic)
dw CatchEmModeOnPic
db Bank(CatchEmModeOnPic)
dw EvolutionModeOnPic
db Bank(EvolutionModeOnPic)
dw GreatBallOnPic
db Bank(GreatBallOnPic)
dw UltraBallOnPic
db Bank(UltraBallOnPic)
dw MasterBallOnPic
db Bank(MasterBallOnPic)
dw BonusMultiplierOnPic
db Bank(BonusMultiplierOnPic)
dw GoToGengarBonusOnPic
db Bank(GoToGengarBonusOnPic)
dw GoToMewtwoBonusOnPic
db Bank(GoToMewtwoBonusOnPic)
dw GoToMeowthBonusOnPic
db Bank(GoToMeowthBonusOnPic)
dw GoToDiglettBonusOnPic
db Bank(GoToDiglettBonusOnPic)
dw GoToSeelBonusOnPic
db Bank(GoToSeelBonusOnPic)
dw SmallReward100PointsOnPic
db Bank(SmallReward100PointsOnPic)
dw SmallReward200PointsOnPic
db Bank(SmallReward200PointsOnPic)
dw SmallReward300PointsOnPic
db Bank(SmallReward300PointsOnPic)
dw SmallReward400PointsOnPic
db Bank(SmallReward400PointsOnPic)
dw SmallReward500PointsOnPic
db Bank(SmallReward500PointsOnPic)
dw SmallReward600PointsOnPic
db Bank(SmallReward600PointsOnPic)
dw SmallReward700PointsOnPic
db Bank(SmallReward700PointsOnPic)
dw SmallReward800PointsOnPic
db Bank(SmallReward800PointsOnPic)
dw SmallReward900PointsOnPic
db Bank(SmallReward900PointsOnPic)
dw BigReward1000000PointsOnPic
db Bank(BigReward1000000PointsOnPic)
dw BigReward2000000PointsOnPic
db Bank(BigReward2000000PointsOnPic)
dw BigReward3000000PointsOnPic
db Bank(BigReward3000000PointsOnPic)
dw BigReward4000000PointsOnPic
db Bank(BigReward4000000PointsOnPic)
dw BigReward5000000PointsOnPic
db Bank(BigReward5000000PointsOnPic)
dw BigReward6000000PointsOnPic
db Bank(BigReward6000000PointsOnPic)
dw BigReward7000000PointsOnPic
db Bank(BigReward7000000PointsOnPic)
dw BigReward8000000PointsOnPic
db Bank(BigReward8000000PointsOnPic)
dw BigReward9000000PointsOnPic
db Bank(BigReward9000000PointsOnPic)
dw BonusMultiplierX1OnPic
db Bank(BonusMultiplierX1OnPic)
dw BonusMultiplierX2OnPic
db Bank(BonusMultiplierX2OnPic)
dw BonusMultiplierX3OnPic
db Bank(BonusMultiplierX3OnPic)
dw BonusMultiplierX4OnPic
db Bank(BonusMultiplierX4OnPic)
dw BonusMultiplierX5OnPic
db Bank(BonusMultiplierX5OnPic)
dw PalletTownPic
db Bank(PalletTownPic)
dw ViridianCityPic
db Bank(ViridianCityPic)
dw ViridianForestPic
db Bank(ViridianForestPic)
dw PewterCityPic
db Bank(PewterCityPic)
dw MtMoonPic
db Bank(MtMoonPic)
dw CeruleanCityPic
db Bank(CeruleanCityPic)
dw VermilionCitySeasidePic
db Bank(VermilionCitySeasidePic)
dw VermilionCityStreetsPic
db Bank(VermilionCityStreetsPic)
dw RockMountainPic
db Bank(RockMountainPic)
dw LavenderTownPic
db Bank(LavenderTownPic)
dw CeladonCityPic
db Bank(CeladonCityPic)
dw CyclingRoadPic
db Bank(CyclingRoadPic)
dw FuchsiaCityPic
db Bank(FuchsiaCityPic)
dw SafariZonePic
db Bank(SafariZonePic)
dw SaffronCityPic
db Bank(SaffronCityPic)
dw SeafoamIslandsPic
db Bank(SeafoamIslandsPic)
dw CinnabarIslandPic
db Bank(CinnabarIslandPic)
dw IndigoPlateauPic
db Bank(IndigoPlateauPic)
Func_f269: ; 0xf269
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_f27c
ld a, $37
ld hl, $4aa8
ld de, $0030
ld bc, $0008
call Func_7dc
.asm_f27c
ld a, $3
ld de, $7288
ld hl, $9887
call Func_86f
ret
INCBIN "baserom.gbc",$f288,$f2a0 - $f288
Func_f2a0: ; 0xf2a0
push hl
ld c, a
ld b, $0
sla c
add c
ld c, a
ld hl, $72be
add hl, bc
ld a, [hli]
ld c, a
ld a, [hli]
ld b, a
ld a, [hl]
ld h, b
ld l, c
ld de, $0030
ld bc, $0010
call Func_7dc
pop hl
ret
INCBIN "baserom.gbc",$f2be,$f533 - $f2be
Func_f533: ; 0xf533
call Func_30e8
call Func_f55c
call Func_f57f
ld a, $60
ld [$ffa6], a
dec a
ld [$ffa2], a
ld a, $fd
ld [$ffaf], a
call Func_f5a0
ld a, $90
ld [$ffa6], a
ld a, $83
ld [$ffa2], a
ld [$ffa8], a
ld a, $ff
ld [$ffaf], a
call Func_30e8
ret
Func_f55c: ; 0xf55c
ld a, [hGameBoyColorFlag]
and a
jr nz, .gameboyColor
ld a, $35
ld hl, $61c0
ld de, $8830
ld bc, $0010
call LoadVRAMData
ret
.gameboyColor
ld a, $35
ld hl, $63c0
ld de, $8830
ld bc, $0010
call LoadVRAMData
ret
Func_f57f: ; 0xf57f
xor a
ld [$d4aa], a
ld hl, wcBottomMessageText
ld a, $81
ld b, $40
.clearLoop
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
dec b
jr nz, .clearLoop
ld a, $0
ld hl, wcBottomMessageText
ld de, vBGMap1
ld bc, $00c0
call LoadVRAMData
ret
Func_f5a0: ; 0xf5a0
ld de, $c540
ld hl, $3069 ; todo
call Func_f7b1
ld de, $c580
ld hl, $3070
call Func_f7b1
ld hl, $d489
call Func_f8b5
ld hl, $d48f
call Func_f8b5
ld a, $1
ld [$d4ab], a
call Func_f626
call Func_f64e
call Func_f60a
call Func_f676
ld a, $1
ld [$d4ab], a
call Func_f70d
ld a, [$d616]
and a
ret z
ld a, $10
call SetSongBank
ld de, $0005
call Func_490
ld hl, wcBottomMessageText
ld bc, $0040
call Func_f81b
ld de, $c520
ld hl, $3094
call Func_f7b1
ld bc, $0040
ld de, $0000
call Func_f80d
.asm_f602
rst $10
ld a, [hNewlyPressedButtons]
bit BIT_A_BUTTON, a
jr z, .asm_f602
ret
Func_f60a: ; 0xf60a
ld a, [wCurrentStage]
rst $18 ; calls JumpToFuncInTable
CallTable_f60d: ; 0xf60d
; STAGE_RED_FIELD_TOP
dw Func_f945
; STAGE_RED_FIELD_BOTTOM
dw Func_f945
dw Func_f9f2
dw Func_f9f2
; STAGE_BLUE_FIELD_TOP
dw Func_f9f3
; STAGE_BLUE_FIELD_BOTTOM
dw Func_f9f3
; STAGE_GENGAR_BONUS
dw Func_faf6
; STAGE_GENGAR_BONUS
dw Func_faf6
; STAGE_MEWTWO_BONUS
dw Func_faf7
; STAGE_MEWTWO_BONUS
dw Func_faf7
; STAGE_MEOWTH_BONUS
dw Func_faf8
; STAGE_MEOWTH_BONUS
dw Func_faf8
Func_f626: ; 0xf626
ld de, $c501
ld hl, $3006 ; todo
call Func_f7b1
ld hl, $c501
ld a, [$d628]
call Func_f78e
ld bc, $0040
ld de, $0000
call Func_f80d
ld hl, $d628
ld de, $7921
call Func_f853
call Func_f824
ret
Func_f64e: ; 0xf64e
ld de, wcBottomMessageText
ld hl, $3019 ; todo
call Func_f7b1
ld hl, wcBottomMessageText
ld a, [$d629]
call Func_f78e
ld bc, $0040
ld de, $0000
call Func_f80d
ld hl, $d629
ld de, $7927
call Func_f853
call Func_f824
ret
Func_f676: ; 0xf676
ld b, $4
.asm_f678
push bc
ld hl, $c520
ld de, wcBottomMessageText
ld bc, $00e0
call Func_65d
ld bc, $00c0
ld de, $0000
call Func_f80d
ld a, [$d4ab]
and a
jr z, .asm_f69f
rst $10
ld a, [hNewlyPressedButtons]
bit BIT_A_BUTTON, a
jr z, .asm_f69f
xor a
ld [$d4ab], a
.asm_f69f
pop bc
dec b
jr nz, .asm_f678
ld de, $c540
ld hl, $307a ; todo
call Func_f7b1
ld de, $c580
ld hl, $3086 ; todo
call Func_f7b1
ld hl, $c550
ld a, [$d482]
call Func_f78e
ld bc, $0040
ld de, $0040
call Func_f80d
.asm_f6c7
push de
push hl
ld hl, $d494
ld de, $c586
call Func_f8bd
ld bc, $0040
ld de, $0080
call Func_f80d
ld de, $003e
call PlaySoundEffect
ld a, [$d4ab]
and a
jr z, .asm_f6f2
rst $10
ld a, [hNewlyPressedButtons]
bit BIT_A_BUTTON, a
jr z, .asm_f6f2
xor a
ld [$d4ab], a
.asm_f6f2
pop hl
pop de
ld a, [$d482]
and a
jr z, .asm_f709
dec a
ld [$d482], a
ld hl, $d48f
ld de, $d489
call Func_f902
jr .asm_f6c7
.asm_f709
call Func_f83a
ret
Func_f70d: ; 0xf70d
ld b, $4
.asm_f70f
push bc
ld hl, $c520
ld de, wcBottomMessageText
ld bc, $00e0
call Func_65d
ld bc, $00c0
ld de, $0000
call Func_f80d
ld a, [$d4ab]
and a
jr z, .asm_f736
rst $10
ld a, [hNewlyPressedButtons]
bit BIT_A_BUTTON, a
jr z, .asm_f736
xor a
ld [$d4ab], a
.asm_f736
pop bc
dec b
jr nz, .asm_f70f
ld de, $c560
ld hl, $308d
call Func_f7b1
ld hl, $d46f
ld de, $c566
call Func_f8bd
ld bc, $0040
ld de, $0060
call Func_f80d
ld de, $003e
call PlaySoundEffect
ld a, [$d4ab]
and a
jr z, .asm_f76c
rst $10
ld a, [hNewlyPressedButtons]
bit BIT_A_BUTTON, a
jr z, .asm_f76c
xor a
ld [$d4ab], a
.asm_f76c
ld hl, wScore
ld de, $d48f
call Func_f902
ld hl, $d46f
ld de, $c566
call Func_f8bd
ld bc, $0040
ld de, $0060
call Func_f80d
call Func_f83a
call Func_f83a
ret
Func_f78e: ; 0xf78e
push hl
call ConvertHexByteToDecWord
pop hl
ld c, $1
ld a, d
call .asm_f7a4
inc hl
ld a, e
swap a
call .asm_f7a4
inc hl
ld c, $0
ld a, e
; fall through
.asm_f7a4
and $f
jr nz, .asm_f7ab
ld a, c
and a
ret nz
.asm_f7ab
add $86
ld [hl], a
ld c, $0
ret
Func_f7b1: ; 0xf7b1
ld a, [$d805]
and a
jr nz, .asm_f7e0
.asm_f7b7
ld a, [hli]
and a
ret z
cp $30
jr c, .asm_f7c6
cp $3a
jr nc, .asm_f7c6
add $56
jr .asm_f7dc
.asm_f7c6
cp $41
jr c, .asm_f7d2
cp $5b
jr nc, .asm_f7d2
add $bf
jr .asm_f7dc
.asm_f7d2
cp $65
jr nz, .asm_f7da
ld a, $83
jr .asm_f7dc
.asm_f7da
ld a, $81
.asm_f7dc
ld [de], a
inc de
jr .asm_f7b7
.asm_f7e0
ld a, [hli]
and a
ret z
cp $30
jr c, .asm_f7ef
cp $3a
jr nc, .asm_f7ef
add $56
jr .asm_f809
.asm_f7ef
cp $a0
jr c, .asm_f7fb
cp $e0
jr nc, .asm_f7fb
sub $80
jr .asm_f809
.asm_f7fb
cp $e0
jr c, .asm_f807
cp $f4
jr nc, .asm_f807
sub $50
jr .asm_f809
.asm_f807
ld a, $81
.asm_f809
ld [de], a
inc de
jr .asm_f7e0
Func_f80d: ; 0xf80d
ld hl, $9c00
add hl, de
push hl
ld hl, wcBottomMessageText
add hl, de
pop de
call LoadVRAMData
ret
Func_f81b: ; 0xf81b
ld a, $81
ld [hli], a
dec bc
ld a, b
or c
jr nz, Func_f81b
ret
Func_f824: ; 0xf824
call Func_f83a
ld hl, wcBottomMessageText
ld bc, $0040
call Func_f81b
ld hl, $c548
ld bc, $0038
call Func_f81b
ret
Func_f83a: ; 0xf83a
ld a, [$d4ab]
and a
ret z
ld b, $46
.asm_f841
push bc
rst $10
pop bc
ld a, [hNewlyPressedButtons]
bit BIT_A_BUTTON, a
jr nz, .asm_f84e
dec b
jr nz, .asm_f841
ret
.asm_f84e
xor a
ld [$d4ab], a
ret
Func_f853: ; 0xf853
push hl
ld hl, $d483
call Func_f8b5
pop hl
.asm_f85b
push de
push hl
ld hl, $d488
ld de, $c546
call Func_f8bd
ld bc, $0040
ld de, $0040
call Func_f80d
ld de, $003e
call PlaySoundEffect
ld a, [$d4ab]
and a
jr z, .asm_f886
rst $10
ld a, [hNewlyPressedButtons]
bit BIT_A_BUTTON, a
jr z, .asm_f886
xor a
ld [$d4ab], a
.asm_f886
pop hl
pop de
ld a, [hl]
and a
jr z, .asm_f899
dec [hl]
push de
push hl
ld hl, $d483
call Func_f902
pop hl
pop de
jr .asm_f85b
.asm_f899
ld hl, $d489
ld de, $d483
call Func_f902
ld hl, $d48e
ld de, $c586
call Func_f8bd
ld bc, $0040
ld de, $0080
call Func_f80d
ret
Func_f8b5: ; 0xf8b5
xor a
ld b, $6
.asm_f8b8
ld [hli], a
dec b
jr nz, .asm_f8b8
ret
Func_f8bd: ; 0xf8bd
ld bc, $0c01
.asm_f8c0
ld a, [hl]
swap a
call Func_f8d5
inc de
dec b
ld a, [hld]
call Func_f8d5
inc de
dec b
jr nz, .asm_f8c0
ld a, $86
ld [de], a
inc de
ret
Func_f8d5: ; 0xf8d5
and $f
jr nz, .asm_f8e0
ld a, b
dec a
jr z, .asm_f8e0
ld a, c
and a
ret nz
.asm_f8e0
add $86
ld [de], a
ld c, $0
ld a, b
cp $c
jr z, .asm_f8f5
cp $9
jr z, .asm_f8f5
cp $6
jr z, .asm_f8f5
cp $3
ret nz
.asm_f8f5
push de
ld a, e
add $20
ld e, a
jr nc, .asm_f8fd
inc d
.asm_f8fd
ld a, $82
ld [de], a
pop de
ret
Func_f902: ; 0xf902
ld a, [de]
add [hl]
daa
ld [hli], a
inc de
ld a, [de]
adc [hl]
daa
ld [hli], a
inc de
ld a, [de]
adc [hl]
daa
ld [hli], a
inc de
ld a, [de]
adc [hl]
daa
ld [hli], a
inc de
ld a, [de]
adc [hl]
daa
ld [hli], a
inc de
ld a, [de]
adc [hl]
daa
ld [hli], a
inc de
ret
INCBIN "baserom.gbc",$f921,$f945 - $f921
Func_f945: ; 0xf945
call Func_f952
call Func_f97a
call Func_f9a2
call Func_f9ca
ret
Func_f952: ; 0xf952
ld de, $c503
ld hl, $302d
call Func_f7b1
ld hl, $c503
ld a, [$d62a]
call Func_f78e
ld bc, $0040
ld de, $0000
call Func_f80d
ld hl, $d62a
ld de, $792d
call Func_f853
call Func_f824
ret
Func_f97a: ; 0xf97a
ld de, $c504
ld hl, $303c
call Func_f7b1
ld hl, $c504
ld a, [$d62b]
call Func_f78e
ld bc, $0040
ld de, $0000
call Func_f80d
ld hl, $d62b
ld de, $7933
call Func_f853
call Func_f824
ret
Func_f9a2: ; 0xf9a2
ld de, $c503
ld hl, $3048
call Func_f7b1
ld hl, $c503
ld a, [$d62c]
call Func_f78e
ld bc, $0040
ld de, $0000
call Func_f80d
ld hl, $d62c
ld de, $7939
call Func_f853
call Func_f824
ret
Func_f9ca: ; 0xf9ca
ld de, $c501
ld hl, $3057
call Func_f7b1
ld hl, $c501
ld a, [$d62d]
call Func_f78e
ld bc, $0040
ld de, $0000
call Func_f80d
ld hl, $d62d
ld de, $793f
call Func_f853
call Func_f824
ret
Func_f9f2: ; 0xf9f2
ret
Func_f9f3: ; 0xf9f3
call Func_fa06
call Func_fa2e
call Func_fa56
call Func_fa7e
call Func_faa6
call Func_face
ret
Func_fa06: ; 0xfa06
ld de, $c504
ld hl, $30c1
call Func_f7b1
ld hl, $c504
ld a, [$d63b]
call Func_f78e
ld bc, $0040
ld de, $0000
call Func_f80d
ld hl, $d63b
ld de, $792d
call Func_f853
call Func_f824
ret
Func_fa2e: ; 0xfa2e
ld de, $c504
ld hl, $30ce
call Func_f7b1
ld hl, $c504
ld a, [$d63a]
call Func_f78e
ld bc, $0040
ld de, $0000
call Func_f80d
ld hl, $d63a
ld de, $792d
call Func_f853
call Func_f824
ret
Func_fa56: ; 0xfa56
ld de, $c504
ld hl, $30b5
call Func_f7b1
ld hl, $c504
ld a, [$d63d]
call Func_f78e
ld bc, $0040
ld de, $0000
call Func_f80d
ld hl, $d63d
ld de, $7933
call Func_f853
call Func_f824
ret
Func_fa7e: ; 0xfa7e
ld de, $c504
ld hl, $30a9
call Func_f7b1
ld hl, $c504
ld a, [$d63c]
call Func_f78e
ld bc, $0040
ld de, $0000
call Func_f80d
ld hl, $d63c
ld de, $7933
call Func_f853
call Func_f824
ret
Func_faa6: ; 0xfaa6
ld de, $c503
ld hl, $3048
call Func_f7b1
ld hl, $c503
ld a, [$d62c]
call Func_f78e
ld bc, $0040
ld de, $0000
call Func_f80d
ld hl, $d62c
ld de, $7939
call Func_f853
call Func_f824
ret
Func_face: ; 0xface :)
ld de, $c501
ld hl, $3057
call Func_f7b1
ld hl, $c501
ld a, [$d62d]
call Func_f78e
ld bc, $0040
ld de, $0000
call Func_f80d
ld hl, $d62d
ld de, $793f
call Func_f853
call Func_f824
ret
Func_faf6: ; 0xfaf6
ret
Func_faf7: ; 0xfaf7
ret
Func_faf8: ; 0xfaf8
ret
INCBIN "baserom.gbc",$faf9,$10000 - $faf9
SECTION "bank4", ROMX, BANK[$4]
Func_10000: ; 0x10000
ld c, a
ld a, [wSpecialMode]
and a
ret z
ld a, c
ld [$d54c], a
ld a, [$d550]
cp $1
jp z, Func_10a95
cp $2
jr nz, .asm_10021
ld [$ff8a], a
ld a, $c
ld hl, $41ce
call BankSwitch
ret
.asm_10021
ld a, [wCurrentStage]
call CallInFollowingTable
CallTable_10027: ; 0x10027
; STAGE_RED_FIELD_TOP
dw Func_20000
db Bank(Func_20000), $00
; STAGE_RED_FIELD_BOTTOM
dw Func_20000
db Bank(Func_20000), $00
dw Func_20000
db Bank(Func_20000), $00
dw Func_20000
db Bank(Func_20000), $00
; STAGE_BLUE_FIELD_TOP
dw Func_202bc
db Bank(Func_202bc), $00
; STAGE_BLUE_FIELD_BOTTOM
dw Func_202bc
db Bank(Func_202bc), $00
StartCatchEmMode: ; 0x1003f
ld a, [wSpecialMode] ; current game mode?
and a
ret nz ; don't start catch 'em mode if we're already doing something like Map Move mode
ld a, $1
ld [wSpecialMode], a ; set special mode flag
xor a
ld [$d550], a
ld [$d54d], a
ld a, [wCurrentStage]
sla a
ld c, a
ld b, $0
push bc
ld hl, WildMonOffsetsPointers
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld a, [wCurrentMap]
sla a
ld c, a
add hl, bc
ld a, [hli]
ld c, a
ld a, [hl]
ld b, a
pop de
ld hl, WildMonPointers
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
add hl, bc
call GenRandom
and $f
call CheckForMew
ld c, a
ld b, $0
add hl, bc
ld a, [wRareMonsFlag] ; this gets set to $08 when the rare mons should be used.
sla a
ld c, a
add hl, bc
ld a, [hl] ; a contains mon id
dec a
ld [wCurrentMon], a
ld a, [wCurrentMon]
ld c, a
ld b, $0
ld hl, EvolutionLineIds
add hl, bc
ld c, [hl]
ld h, b
ld l, c
add hl, bc
add hl, bc ; multiply the evolution line id by 3
ld bc, Data_13685
add hl, bc
ld a, [hli]
ld [$d5c1], a
ld [$d5be], a
ld a, [hli]
ld [$d5c2], a
ld a, [hli]
ld [$d5c3], a
ld hl, $d586
ld a, [$d5b6]
ld c, a
and a
ld b, $18
jr z, .asm_100c7
.asm_100ba
ld a, $1
ld [hli], a
xor a
ld [hli], a
dec b
dec c
jr nz, .asm_100ba
ld a, b
and a
jr z, .asm_100ce
.asm_100c7
xor a
ld [hli], a
inc a
ld [hli], a
dec b
jr nz, .asm_100c7
.asm_100ce
ld a, [wCurrentMon]
ld c, a
ld b, $0
sla c
rl b
ld hl, CatchEmTimerData
add hl, bc
ld a, [hli]
ld c, a
ld a, [hl]
ld b, a
ld [$ff8a], a
ld a, Bank(StartTimer)
ld hl, StartTimer
call BankSwitch
ld [$ff8a], a
ld a, Bank(InitBallSaverForCatchEmMode)
ld hl, InitBallSaverForCatchEmMode
call BankSwitch
call Func_10696
call Func_3579
ld a, [wCurrentStage]
bit 0, a
jr z, .asm_1011d
ld a, $28
ld hl, $6300
ld de, $8ae0
ld bc, $0020
call Func_735
ld a, $0
ld hl, $2898
ld de, $9906
ld bc, $0008
call Func_735
.asm_1011d
call SetPokemonSeenFlag
ld a, [wCurrentStage]
rst $18 ; calls JumpToFuncInTable
CallTable_10124: ; 0x10124
; STAGE_RED_FIELD_TOP
dw Func_10871
; STAGE_RED_FIELD_BOTTOM
dw Func_10871
dw Func_1098a
dw Func_1098a
; STAGE_BLUE_FIELD_TOP
dw Func_1098c
; STAGE_BLUE_FIELD_BOTTOM
dw Func_1098c
CheckForMew:
; Sets the encountered mon to Mew if the following conditions are met:
; 1. Random number in register a equals $f
; 2. The current map is Indigo Plateu (it does a roundabout way of checking this)
; 3. The right alley has been hit three times
; 4. The Mewtwo Bonus Stage completion counter equals 2.
push af
cp $f ; random number equals $f
jr nz, .asm_10155
ld a, c
cp $60 ; check if low-byte of map mons offset is Indigo Plateau
jr nz, .asm_10155
ld a, b
cp $1 ; check if high-byte of map mons offset is Indigo Plateau
jr nz, .asm_10155
ld a, [wRareMonsFlag]
cp $8
jr nz, .asm_10155
ld a, [wNumMewtwoBonusCompletions]
cp $2
jr nz, .asm_10155
pop af
xor a
ld [wNumMewtwoBonusCompletions], a
ld a, $10
ret
.asm_10155
pop af
ret
Func_10157: ; 0x10157
xor a
ld [wSpecialMode], a
ld [$d5bb], a
ld [$d5c6], a
ld [$d5b6], a
ld [wNumMonHits], a
call Func_10488
ld [$ff8a], a
ld a, Bank(Func_86d2)
ld hl, Func_86d2
call BankSwitch
ld a, [wCurrentStage]
rst $18 ; calls JumpToFuncInTable
CallTable_10178: ; 0x10178
; STAGE_RED_FIELD_TOP
dw Func_108f5
; STAGE_RED_FIELD_BOTTOM
dw Func_108f5
dw Func_1098b
dw Func_1098b
; STAGE_BLUE_FIELD_TOP
dw Func_109fc
; STAGE_BLUE_FIELD_BOTTOM
dw Func_109fc
Func_10184: ; 0x10184
ld a, [wCurrentStage]
bit 0, a
ret z
ld a, [wCurrentMon]
ld c, a
ld b, $0
sla c
rl b
add c
ld c, a
jr nc, .asm_10199
inc b
.asm_10199
ld hl, $6b50
add hl, bc
ld a, [hli]
ld [$ff8c], a
ld a, [hli]
ld [$ff8d], a
ld a, [hl]
ld [$ff8e], a
ld hl, $6d15
add hl, bc
ld a, [hli]
ld [$ff8f], a
ld a, [hli]
ld [$ff90], a
ld a, [hli]
ld [$ff91], a
ld de, wc000
ld hl, $d586
ld c, $0
.asm_101bb
ld a, [hli]
cp [hl]
ld [hli], a
jr z, .asm_101d2
ld b, a
call nz, Func_101d9
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_101d2
ld a, [wCurrentStage]
bit 0, a
ld a, b
call nz, Func_10230
.asm_101d2
inc c
ld a, c
cp $18
jr nz, .asm_101bb
ret
Func_101d9: ; 0x101d9
push bc
push hl
push de
push af
ld a, $10
ld [de], a
inc de
ld a, $1
ld [de], a
inc de
ld b, $0
ld hl, $42a4
add hl, bc
ld c, [hl]
sla c
rl b
sla c
rl b
sla c
rl b
sla c
rl b
ld hl, $8900
add hl, bc
ld a, l
ld [de], a
inc de
ld a, h
ld [de], a
inc de
ld a, [$ff8c]
ld l, a
ld a, [$ff8d]
ld h, a
add hl, bc
pop af
and a
jr nz, .asm_10215
ld bc, $0180
add hl, bc
.asm_10215
ld a, l
ld [de], a
inc de
ld a, h
ld [de], a
inc de
ld a, [$ff8e]
ld [de], a
inc de
ld a, $0
ld [de], a
inc de
pop bc
push de
xor a
ld de, $11d2
call Func_10c5
pop de
pop hl
pop bc
ret
Func_10230: ; 0x10230
push bc
push hl
push de
push af
ld a, $1
ld [de], a
inc de
ld [de], a
inc de
ld b, $0
ld hl, $42a4
add hl, bc
ld c, [hl]
sla c
ld hl, $4274
add hl, bc
ld a, [hli]
ld [de], a
inc de
ld a, [hl]
ld [de], a
inc de
srl c
ld a, [$ff8f]
ld l, a
ld a, [$ff90]
ld h, a
add hl, bc
pop af
and a
ld a, [$ff91]
call Func_68f
jr nz, .asm_10261
ld a, $5
.asm_10261
ld [de], a
inc de
ld a, $0
ld [de], a
inc de
pop bc
push de
xor a
ld de, $118d
call Func_10c5
pop de
pop hl
pop bc
ret
INCBIN "baserom.gbc",$10274,$102bc - $10274
Func_102bc: ; 0x102bc
ld a, [wCurrentMon]
ld c, a
ld b, $0
sla c
rl b
add c
ld c, a
jr nc, .asm_102cb
inc b
.asm_102cb
ld hl, $6eda
add hl, bc
ld a, [hli]
ld [$ff8c], a
ld a, [hli]
ld [$ff8d], a
ld a, [hl]
ld [$ff8e], a
ld de, $c1b8
ld a, $10
ld [de], a
inc de
ld a, $8
ld [de], a
inc de
ld a, $30
ld [de], a
inc de
ld a, [$ff8c]
ld [de], a
inc de
ld a, [$ff8d]
ld [de], a
inc de
ld a, [$ff8e]
ld [de], a
inc de
ld a, $0
ld [de], a
xor a
ld bc, $c1b8
ld de, $1266
call Func_10c5
ret
Func_10301: ; 0x10301
ld a, [wCurrentMon]
ld c, a
ld b, $0
sla c
rl b
add c
ld c, a
jr nc, .asm_10310
inc b
.asm_10310
ld hl, $709f
add hl, bc
ld a, [hli]
ld [$ff8c], a
ld a, [hli]
ld [$ff8d], a
ld a, [hl]
ld [$ff8e], a
ld de, $c1b8
ld a, $10
ld [de], a
inc de
ld a, $4
ld [de], a
inc de
ld a, $58
ld [de], a
inc de
ld a, [$ff8c]
ld [de], a
inc de
ld a, [$ff8d]
ld [de], a
inc de
ld a, [$ff8e]
ld [de], a
inc de
ld a, $4
ld [de], a
inc de
ld a, $68
ld [de], a
inc de
ld a, [$ff8c]
ld l, a
ld a, [$ff8d]
ld h, a
ld bc, $0008
add hl, bc
ld a, l
ld [de], a
inc de
ld a, h
ld [de], a
inc de
ld a, [$ff8e]
ld [de], a
inc de
ld a, $0
ld [de], a
xor a
ld bc, $c1b8
ld de, $1266
call Func_10c5
ret
Func_10362: ; 0x10362
ld a, [wCurrentMon]
ld c, a
ld b, $0
sla c
rl b
add c
ld c, a
jr nc, .asm_10371
inc b
.asm_10371
ld hl, $7264
add hl, bc
ld a, [hli]
ld [$ff8c], a
ld a, [hli]
ld [$ff8d], a
ld a, [hl]
ld [$ff8e], a
ld de, $c150
ld bc, $0000
.asm_10384
call Func_1038e
inc c
ld a, c
cp $d
jr nz, .asm_10384
ret
Func_1038e: ; 0x1038e
push bc
push de
ld a, c
sla a
add c
ld c, a
sla c
ld hl, $43c6
add hl, bc
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
inc de
ld a, [$ff8c]
add [hl]
ld [de], a
inc hl
inc de
ld a, [$ff8d]
adc [hl]
ld [de], a
inc de
ld a, [$ff8e]
ld [de], a
inc de
ld a, $0
ld [de], a
inc de
pop bc
push de
xor a
ld de, $11d2
call Func_10c5
pop de
pop bc
ret
INCBIN "baserom.gbc",$103c6,$10414 - $103c6
Func_10414: ; 0x10414
ld a, $4
ld bc, $4420
ld de, $11b5
call Func_10c5
ret
INCBIN "baserom.gbc",$10420,$10432 - $10420
Func_10432: ; 0x10432
ld a, $4
ld bc, $443e
ld de, LoadTileLists
call Func_10c5
ret
INCBIN "baserom.gbc",$1043e,$10464 - $1043e
Func_10464: ; 0x10464
ld a, [wCurrentMon]
ld c, a
ld b, $0
sla c
rl b
add c
ld c, a
jr nc, .noCarry
inc b
.noCarry
ld hl, $74c0 ; todo
add hl, bc
ld a, [hli]
ld c, a
ld a, [hli]
ld b, a
ld a, [hl]
ld h, b
ld l, c
ld de, $c400
ld bc, $0080
call Func_666
ret
Func_10488: ; 0x10488
xor a
ld hl, $c400
ld b, $20
.asm_1048e
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
dec b
jr nz, .asm_1048e
ret
Func_10496: ; 0x10496
xor a
ld [$d5c6], a
ld a, $2a
ld hl, $47e0
ld de, $87e0
ld bc, $0020
call LoadVRAMData
ld a, $2a
ld hl, $4800
ld de, $8900
ld bc, $0180
call LoadVRAMData
call LoadShakeBallGfx
ld hl, $45e4
ld de, $d5f4
call Func_28a0
ld a, $1
ld [$d5f3], a
xor a
ld [wBallXVelocity], a
ld [wBallXVelocity + 1], a
ld [wBallYVelocity], a
ld [wBallYVelocity + 1], a
xor a
ld [$d548], a
ld [$d549], a
ld de, $000b
call PlaySoundEffect
ret
LoadShakeBallGfx: ; 0x104e2
; Loads the graphics for the ball shaking after a pokemon is caught.
ld a, [wBallType]
cp GREAT_BALL
jr nc, .notPokeball
ld a, Bank(PinballPokeballShakeGfx)
ld hl, PinballPokeballShakeGfx
ld de, $8380
ld bc, $0040
call LoadVRAMData
ret
.notPokeball
cp ULTRA_BALL
jr nc, .notGreatball
ld a, Bank(PinballGreatballShakeGfx)
ld hl, PinballGreatballShakeGfx
ld de, $8380
ld bc, $0040
call LoadVRAMData
ret
.notGreatball
cp MASTER_BALL
jr nc, .notUltraBall
ld a, Bank(PinballUltraballShakeGfx)
ld hl, PinballUltraballShakeGfx
ld de, $8380
ld bc, $0040
call LoadVRAMData
ret
.notUltraBall
ld a, Bank(PinballMasterballShakeGfx)
ld hl, PinballMasterballShakeGfx
ld de, $8380
ld bc, $0040
call LoadVRAMData
ret
Func_1052d: ; 0x1052d
ld a, [$d5f5]
cp $c
jr nz, .asm_10541
ld a, [$d5f4]
cp $1
jr nz, .asm_10541
ld de, $0041
call PlaySoundEffect
.asm_10541
ld hl, $45e4
ld de, $d5f4
call Func_28a9
ld a, [$d5f6]
cp $1
jr nz, .asm_1055d
ld a, [$d5f4]
cp $1
jr nz, .asm_1055d
xor a
ld [$d5bb], a
ret
.asm_1055d
ld a, [$d5f6]
cp $15
ret nz
ld a, [$d5f4]
cp $1
ret nz
call Func_3475
ld de, $0000
call Func_490
rst $10
ld de, $2329
call PlaySoundEffect
call Func_10825
call Func_3475
ld a, [wNumPartyMons]
and a
call z, Func_10848
ld a, $50
ld [$d4b4], a
ld a, $40
ld [$d4b6], a
ld a, $80
ld [wBallXVelocity], a
xor a
ld [wBallXPos], a
ld [wBallYPos], a
ld [$d5f3], a
ld a, $1
ld [$d548], a
ld [$d549], a
ld [$ff8a], a
ld a, Bank(Func_dc00)
ld hl, Func_dc00
call BankSwitch
call Func_10157
ld de, $0001
call Func_490
ld hl, $d628
call Func_e4a
jr nc, .asm_105d1
ld c, $a
call Func_e55
ld [$ff8a], a
ld a, Bank(Func_30164)
ld hl, Func_30164
call z, BankSwitch
.asm_105d1
call Func_1077c
ld a, [$d624]
cp $3
ret z
inc a
ld [$d625], a
ld a, $80
ld [$d626], a
ret
INCBIN "baserom.gbc",$105e4,$10611 - $105e4
Func_10611: ; 0x10611
and a
ret z
dec a
sla a
ld c, a
ld b, $0
ld hl, $462a
add hl, bc
ld a, [hli]
ld c, a
ld a, [hl]
ld b, a
ld a, $4
ld de, $11d2
call Func_10c5
ret
INCBIN "baserom.gbc",$1062a,$10648 - $1062a
Func_10648: ; 0x10648
call Func_10184
ld a, [$d54e]
dec a
ld [$d54e], a
jr nz, .asm_10677
ld a, $14
ld [$d54e], a
ld hl, $d586
ld b, $18
.asm_1065e
ld a, [$d54f]
and $1
ld [hli], a
xor $1
ld [hli], a
dec b
jr nz, .asm_1065e
ld a, [$d54f]
dec a
ld [$d54f], a
jr nz, .asm_10677
ld hl, $d54d
inc [hl]
.asm_10677
ret
Func_10678: ; 0x10678
ld a, [wCurrentMon]
ld c, a
ld b, $0
ld hl, $7429
add hl, bc
ld a, [hl]
ld [$d5bc], a
ld [$d5bd], a
ld a, $1
ld [$d5bb], a
xor a
ld [$d5bf], a
ld [wNumMonHits], a
ret
Func_10696: ; 0x10696
call Func_30e8
call Func_30db
ld hl, $d5cc
ld de, $29b7
call Func_32aa
ret
Func_106a6: ; 0x106a6
call Func_30e8
call Func_30db
ld hl, $d5cc
ld de, $29d0
call Func_32aa
ret
Func_106b6: ; 0x106b6
ld a, [wCurrentMon]
ld c, a
ld b, $0
sla c
rl b
sla c
rl b
sla c
rl b
sla c
rl b ; bc was just multiplied by 16
ld hl, PokemonNames + 1
add hl, bc
ld de, $2a67 ; todo "You got an"
ld bc, $2a91 ; todo
ld a, [hl]
; check if mon's name starts with a vowel, so it can print "an", instead of "a"
cp "A"
jr z, .asm_106f1
cp "I"
jr z, .asm_106f1
cp "U"
jr z, .asm_106f1
cp "E"
jr z, .asm_106f1
cp "O"
jr z, .asm_106f1
ld de, $2a56 ; todo "You got a"
ld bc, $2a79
.asm_106f1
push hl
push bc
push de
call Func_30e8
call Func_30db
ld hl, $d5cc
pop de
call Func_32aa
ld hl, $d5d4
pop de
call Func_32aa
pop hl
ld de, $c520
ld b, $0 ; count the number of letters in mon's name in register b
.readLetter
ld a, [hli]
and a
jr z, .endOfName
ld [de], a
inc de
inc b
jr .readLetter
.endOfName
ld a, $20
ld [de], a
inc de
xor a
ld [de], a
ld a, [$d5db]
add b
ld [$d5db], a
ld a, $14
sub b
srl a
ld b, a
ld a, [$d5d8]
add b
ld [$d5d8], a
ret
Func_10732: ; 0x10732
ld a, [wCurrentMon]
inc a
ld e, a
ld d, $0
call Func_4ef
ret
AddCaughtPokemonToParty: ; 0x1073d
ld a, [wNumPartyMons]
ld c, a
ld b, $0
ld hl, wPartyMons
add hl, bc
ld a, [wCurrentMon]
ld [hl], a
ld a, [wNumPartyMons]
inc a
ld [wNumPartyMons], a
ret
SetPokemonSeenFlag: ; 0x10753
ld a, [$d550]
and a
ld a, [wCurrentMon]
jr z, .asm_10766
ld a, [$d552]
cp $ff
jr nz, .asm_10766
ld a, [wCurrentMon]
.asm_10766
ld c, a
ld b, $0
ld hl, wPokedexFlags
add hl, bc
set 0, [hl]
ld hl, wPokedexFlags
ld de, $a10c
ld bc, $0098
call Func_f1a
ret
Func_1077c: ; 0x1077c
ld a, [$d550]
and a
ld a, [wCurrentMon]
jr z, .asm_1078f
ld a, [$d552]
cp $ff
jr nz, .asm_1078f
ld a, [wCurrentMon]
.asm_1078f
ld c, a
ld b, $0
ld hl, wPokedexFlags
add hl, bc
set 1, [hl]
ld hl, wPokedexFlags
ld de, $a10c
ld bc, $0098
call Func_f1a
ret
Func_107a5: ; 0x107a5
xor a
ld hl, $d52f
ld b, $13
.asm_107ab
ld [hli], a
dec b
jr nz, .asm_107ab
ret
Func_107b0: ; 0x107b0
xor a
ld [$d604], a
ld [$d533], a
ld [$ff8a], a
ld a, Bank(Func_16425)
ld hl, Func_16425
call BankSwitch
ret
Func_107c2: ; 0x107c2
ld a, $1e
ld [$d607], a
ret
Func_107c8: ; 0x107c8
ld a, [wRightAlleyCount]
cp $3
jr z, .asm_107d1
set 7, a
.asm_107d1
ld [$d530], a
ld a, [wRightAlleyCount]
cp $2
jr c, .asm_107e0
ld a, $80
ld [$d532], a
.asm_107e0
ld a, [wLeftAlleyCount]
set 7, a
ld [$d52f], a
ret
Func_107e9: ; 0x107e9
ld a, [wLeftAlleyCount]
cp $3
ld a, $4
jr nz, .asm_107f4
ld a, $6
.asm_107f4
ld [$d7ad], a
ret
INCBIN "baserom.gbc",$107f8,$107f8 - $107f8
Func_107f8: ; 0x107f8
ld a, [wTimerFrames]
and a
ret nz
ld a, [wTimerMinutes]
and a
ret nz
ld a, [wTimerSeconds]
cp $20
jr nz, .asm_10810
ld de, $0749
call PlaySoundEffect
ret
.asm_10810
cp $10
jr nz, .asm_1081b
ld de, $0a4a
call PlaySoundEffect
ret
.asm_1081b
cp $5
ret nz
ld de, $0d4b
call PlaySoundEffect
ret
Func_10825: ; 0x10825
call Func_3556
push bc
push de
call Func_351c
call Func_30e8
call Func_30db
ld hl, $d5e9
ld de, $2a50
call Func_3372
pop de
pop bc
ld hl, $d5e4
ld de, $2a43
call Func_3357
ret
Func_10848: ; 0x10848
ld bc, $34fa
ld [$ff8a], a
ld a, Bank(Func_8588)
ld hl, Func_8588
call BankSwitch
call Func_30e8
call Func_30db
ld hl, $d5d4
ld de, $2a0c
call Func_32aa
ld hl, $d5cc
ld de, $29e8
call Func_32aa
call Func_3475
ret
Func_10871: ; 0x10871
ld a, [wCurrentMon]
ld c, a
ld b, $0
ld hl, EvolutionLineIds
add hl, bc
ld a, [hl] ; a contains evolution line id
ld c, a
ld b, $0
ld l, c
ld h, b
sla l
rl h
sla l
rl h
sla l
rl h
sla l
rl h
add hl, bc
add hl, bc
add hl, bc
ld c, l
ld b, h
ld hl, $63ae
add hl, bc
ld de, $d52f
ld b, $13
.asm_1089f
ld a, [hli]
ld [de], a
inc de
dec b
jr nz, .asm_1089f
xor a
ld [wRightAlleyCount], a
call Func_107b0
ld a, $4
ld [$d7ad], a
ld de, $0002
call Func_490
ld a, [wCurrentStage]
bit 0, a
jr nz, .asm_108d3
ld [$ff8a], a
ld a, Bank(Func_e578)
ld hl, Func_e578
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_159f4)
ld hl, Func_159f4
call BankSwitch
ret
.asm_108d3
ld [$ff8a], a
ld a, Bank(Func_14135)
ld hl, Func_14135
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_10184)
ld hl, Func_10184
call BankSwitch
ld a, [hGameBoyColorFlag]
and a
ld [$ff8a], a
ld a, Bank(Func_102bc)
ld hl, Func_102bc
call nz, BankSwitch
ret
Func_108f5: ; 0x108f5
call Func_107a5
call Func_107c2
call Func_107c8
call Func_107e9
ld a, [wCurrentStage]
bit 0, a
ret z
ld [$ff8a], a
ld a, Bank(Func_14135)
ld hl, Func_14135
call BankSwitch
call Func_10432
ld [$ff8a], a
ld a, Bank(Func_30253)
ld hl, Func_30253
call BankSwitch
ld a, $36
ld hl, $6c00
ld de, $81a0
ld bc, $0160
call LoadVRAMData
ld a, $36
ld hl, $6de0
ld de, $8380
ld bc, $0020
call LoadVRAMData
ld hl, $4958
ld a, $4
call Func_10aa
ld a, [$d624]
ld [$ff8a], a
ld a, Bank(Func_174d4)
ld hl, Func_174d4
call BankSwitch
ld hl, $497d
ld a, $4
call Func_10aa
ret
INCBIN "baserom.gbc",$10958,$1098a - $10958
Func_1098a: ; 0x1098a
ret
Func_1098b: ; 0x1098b
ret
INCBIN "baserom.gbc",$1098c,$1098c - $1098c
Func_1098c: ; 0x1098c
ld a, [wCurrentMon]
ld c, a
ld b, $0
ld hl, EvolutionLineIds
add hl, bc
ld a, [hl]
ld c, a
ld b, $0
ld l, c
ld h, b
sla l
rl h
sla l
rl h
sla l
rl h
sla l
rl h
add hl, bc
add hl, bc
add hl, bc
ld c, l
ld b, h
ld hl, $63ae
add hl, bc
ld de, $d52f
ld b, $13
.asm_109ba
ld a, [hli]
ld [de], a
inc de
dec b
jr nz, .asm_109ba
xor a
ld [wRightAlleyCount], a
ld [$ff8a], a
ld a, Bank(Func_1f2ed)
ld hl, Func_1f2ed
call BankSwitch
ld de, $0002
call Func_490
ld a, [wCurrentStage]
bit 0, a
ret z
ld [$ff8a], a
ld a, Bank(Func_1c2cb)
ld hl, Func_1c2cb
call BankSwitch
ld [$ff8a], a
ld a, $4
ld hl, Func_10184
call BankSwitch
ld a, [hGameBoyColorFlag]
and a
ld [$ff8a], a
ld a, Bank(Func_102bc)
ld hl, Func_102bc
call nz, BankSwitch
ret
Func_109fc: ; 0x109fc
call Func_107a5
call Func_107c2
ld [$ff8a], a
ld a, Bank(Func_1f2ff)
ld hl, Func_1f2ff
call BankSwitch
ld a, [wCurrentStage]
bit 0, a
ret z
ld [$ff8a], a
ld a, Bank(Func_1c2cb)
ld hl, Func_1c2cb
call BankSwitch
call Func_10432
ld [$ff8a], a
ld a, Bank(Func_30253)
ld hl, Func_30253
call BankSwitch
ld a, $36
ld hl, $6c00
ld de, $81a0
ld bc, $0160
call LoadVRAMData
ld a, $36
ld hl, $6de0
ld de, $8380
ld bc, $0020
call LoadVRAMData
ld hl, $4a63
ld a, $4
call Func_10aa
ld a, [$d624]
ld [$ff8a], a
ld a, Bank(Func_174d4)
ld hl, Func_174d4
call BankSwitch
ld hl, $4a88
ld a, $4
call Func_10aa
ret
INCBIN "baserom.gbc",$10a63,$10a95 - $10a63
Func_10a95: ; 0x19a95
ld a, [wCurrentStage]
call CallInFollowingTable
PointerTable_10a9b: ; 0x10a9b
; STAGE_RED_FIELD_TOP
dw Func_20581
db Bank(Func_20581), $00
; STAGE_RED_FIELD_BOTTOM
dw Func_20581
db Bank(Func_20581), $00
dw Func_20581
db Bank(Func_20581), $00
dw Func_20581
db Bank(Func_20581), $00
; STAGE_BLUE_FIELD_TOP
dw Func_20bae
db Bank(Func_20bae), $00
; STAGE_BLUE_FIELD_BOTTOM
dw Func_20bae
db Bank(Func_20bae), $00
Func_10ab3: ; 0x10ab3
ld a, [wSpecialMode]
and a
ret nz
ld a, [wCurrentStage]
rst $18 ; calls JumpToFuncInTable
CallTable_10abc: ; 0x10abc
; STAGE_RED_FIELD_TOP
dw Func_10ebb
; STAGE_RED_FIELD_BOTTOM
dw Func_10ebb
dw Func_11054
dw Func_11054
; STAGE_BLUE_FIELD_TOP
dw Func_11061
; STAGE_BLUE_FIELD_BOTTOM
dw Func_11061
Func_10ac8: ; 0x10ac8
xor a
ld [$d5ca], a
call Func_30e8
xor a
ld [wSpecialMode], a
ld [$d5bb], a
ld [$d5b6], a
ld [wNumMonHits], a
ld [$d551], a
ld [$d554], a
call Func_10488
ld [$ff8a], a
ld a, Bank(Func_86d2)
ld hl, Func_86d2
call BankSwitch
ld a, [wCurrentStage]
rst $18 ; calls JumpToFuncInTable
CallTable_10af3: ; 0x10af3
; STAGE_RED_FIELD_TOP
dw Func_10fe3
; STAGE_RED_FIELD_BOTTOM
dw Func_10fe3
dw Func_11060
dw Func_11060
; STAGE_BLUE_FIELD_TOP
dw Func_11195
; STAGE_BLUE_FIELD_TOP
dw Func_11195
Func_10aff: ; 0x10aff
ld a, [wCurrentStage]
res 0, a
ld c, a
ld b, $0
srl c
sla a
sla a
sla a
sub c
ld c, a
ld hl, $4b2a
add hl, bc
ld a, [hli]
ld c, a
ld a, [hli]
ld b, a
ld a, [hli]
push af
push bc
ld a, [hli]
ld e, a
ld a, [hli]
ld d, a
ld a, [hli]
ld c, a
ld a, [hli]
ld b, a
pop hl
pop af
call LoadVRAMData
ret
INCBIN "baserom.gbc",$10b2a,$10b3f - $10b2a
Func_10b3f: ; 0x10b3f
call Func_30e8
call Func_30db
ld hl, $d5cc
ld a, [$d553]
cp $7
ld de, $2aa9
jr z, .asm_10b55
ld de, $2abf
.asm_10b55
call Func_32aa
ret
Func_10b59: ; 0x10b59
xor a
ld [$d4aa], a
ld hl, wcBottomMessageText
ld a, $81
ld b, $30
.asm_10b64
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
dec b
jr nz, .asm_10b64
ld hl, wPartyMons
call Func_10b8e
ld a, $35
ld hl, $6450
ld de, $8880
ld bc, $0030
call LoadVRAMData
ld a, $0
ld hl, wcBottomMessageText
ld de, $9c00
ld bc, $00c0
call LoadVRAMData
ret
Func_10b8e: ; 0x10b8e
ld a, [wNumPartyMons]
ld c, $0
ld b, a
.asm_10b94
ld a, [hli]
call Func_10ba2
inc c
ld a, c
cp $6
jr z, .asm_10ba1
dec b
jr nz, .asm_10b94
.asm_10ba1
ret
Func_10ba2: ; 0x10ba2
push bc
push hl
swap c
sla c
ld b, $0
ld hl, wcBottomMessageText
add hl, bc
ld d, h
ld e, l
ld c, a
ld b, $0
sla c
rl b
sla c
rl b
sla c
rl b
sla c
rl b
ld hl, PokemonNames
add hl, bc
ld a, $81
ld [de], a
inc de
ld a, $81
ld [de], a
inc de
ld a, $81
ld [de], a
inc de
ld a, $81
ld [de], a
inc de
call Func_3125
.asm_10bda
ld a, e
and $1f
cp $14
jr nc, .asm_10be7
ld a, $81
ld [de], a
inc de
jr .asm_10bda
.asm_10be7
pop hl
pop bc
ret
Func_10bea: ; 0x10bea
xor a
ld [$d461], a
ld [$d462], a
ld [$d463], a
.asm_10bf4
call Func_10c0c
call Func_b2e
call Func_10c38
rst $10
ld a, [$d809]
bit 0, a
jr z, .asm_10bf4
ld de, $0001
call PlaySoundEffect
ret
Func_10c0c: ; 0x10c0c
ld a, [$d80a]
ld b, a
ld a, [wNumPartyMons]
ld c, a
ld a, [$d461]
bit 6, b
jr z, .asm_10c28
and a
ret z
dec a
ld [$d461], a
ld de, $0003
call PlaySoundEffect
ret
.asm_10c28
bit 7, b
ret z
inc a
cp c
ret z
ld [$d461], a
ld de, $0003
call PlaySoundEffect
ret
Func_10c38: ; 0x10c38
ld a, [$d461]
ld hl, $d462
sub [hl]
jr nc, .asm_10c45
dec [hl]
xor a
jr .asm_10c4c
.asm_10c45
cp $6
jr c, .asm_10c4c
inc [hl]
ld a, $5
.asm_10c4c
ld c, a
push bc
ld a, [hl]
ld c, a
ld b, $0
ld hl, wPartyMons
add hl, bc
call Func_10b8e
ld a, [hJoypadState]
and a
ld a, [$d463]
jr z, .asm_10c62
xor a
.asm_10c62
inc a
ld [$d463], a
bit 3, a
pop bc
jr nz, .asm_10c78
swap c
sla c
ld b, $0
ld hl, $c503
add hl, bc
ld a, $88
ld [hl], a
.asm_10c78
ld a, [$d462]
and a
jr z, .asm_10c83
ld a, $8a
ld [$c511], a
.asm_10c83
ld a, [$d462]
add $7
jr z, .asm_10c96
ld c, a
ld a, [wNumPartyMons]
cp c
jr c, .asm_10c96
ld a, $89
ld [$c5b1], a
.asm_10c96
ld a, $0
ld hl, wcBottomMessageText
ld de, $9c00
ld bc, $00c0
call LoadVRAMData
ret
Func_10ca5: ; 0x10ca5
ld a, [$d461]
ld c, a
ld b, $0
ld hl, wPartyMons
add hl, bc
ld a, [$d552]
cp $ff
ret z
ld [hl], a
ret
Func_10cb7: ; 0x10cb7
call Func_30e8
call Func_10b59
ld a, $60
ld [$ffa6], a
dec a
ld [$ffa2], a
ld a, $fd
ld [$ffaf], a
call Func_10bea
ld a, $86
ld [$ffa6], a
ld a, $83
ld [$ffa2], a
ld [$ffa8], a
ld a, $ff
ld [$ffaf], a
ld a, [hGameBoyColorFlag]
and a
jr nz, .asm_10cee
ld a, $18
ld hl, $7080
ld de, $8880
ld bc, $0030
call LoadVRAMData
jr .asm_10cfc
.asm_10cee
ld a, $27
ld hl, $4080
ld de, $8880
ld bc, $0030
call LoadVRAMData
.asm_10cfc
call Func_30e8
ld a, $1
ld [$d4aa], a
ld [wSpecialMode], a
ld [$d550], a
xor a
ld [$d54d], a
ld a, [$d461]
ld c, a
ld b, $0
ld hl, wPartyMons
add hl, bc
ld a, [hl]
ld [wCurrentMon], a
ret
Func_10d1d: ; 0x10d1d
ld hl, $d586
ld b, $18
.asm_10d22
ld a, $1
ld [hli], a
xor a
ld [hli], a
dec b
jr nz, .asm_10d22
ld a, [wCurrentMon]
ld c, a
ld b, $0
ld hl, $698b
add hl, bc
ld a, [hl]
add $2
ld [$d555], a
xor a
ld hl, $d566
ld b, $13
.asm_10d40
ld [hli], a
dec b
jr nz, .asm_10d40
ld a, [wCurrentMon]
ld c, a
ld b, $0
sla c
rl b
ld hl, CatchEmTimerData
add hl, bc
ld a, [hli]
ld c, a
ld a, [hl]
ld b, a
ld [$ff8a], a
ld a, Bank(StartTimer)
ld hl, StartTimer
call BankSwitch
ld a, [wCurrentMon]
ld c, a
ld b, $0
sla c
rl b
add c
ld c, a
jr nc, .asm_10d6f
inc b
.asm_10d6f
sla c
rl b
ld hl, $56b4
add hl, bc
push hl
ld bc, $03ff
.asm_10d7b
ld a, [hli]
and a
jr z, .asm_10d80
inc c
.asm_10d80
inc hl
dec b
jr nz, .asm_10d7b
ld a, c
cp $ff
jr nz, .asm_10d8a
xor a
.asm_10d8a
call Func_a21
sla a
ld c, a
pop hl
add hl, bc
ld a, [hli]
dec a
ld [$d552], a
ld a, [hl]
ld [$d553], a
xor a
ld [$d554], a
ld [$d556], a
ld [$d557], a
ld hl, $d55c
ld a, $1
ld b, $3
.asm_10dac
ld [hli], a
dec b
jr nz, .asm_10dac
xor a
ld b, $7
.asm_10db3
ld [hli], a
dec b
jr nz, .asm_10db3
ld de, $d55c
ld a, [$d555]
ld c, a
inc a
ld b, a
.asm_10dc0
push bc
ld a, c
call Func_a21
ld c, a
ld b, $0
ld hl, $d55c
add hl, bc
ld c, [hl]
ld a, [de]
ld [hl], a
ld a, c
ld [de], a
pop bc
inc de
dec b
jr nz, .asm_10dc0
ld [$ff8a], a
ld a, Bank(InitBallSaverForCatchEmMode)
ld hl, InitBallSaverForCatchEmMode
call BankSwitch
call Func_10b3f
call Func_3579
ld a, [wCurrentStage]
bit 0, a
jr z, .asm_10e09
ld a, $28
ld hl, $6300
ld de, $8ae0
ld bc, $0020
call Func_735
ld a, $0
ld hl, $2898
ld de, $9906
ld bc, $0008
call Func_735
.asm_10e09
ret
Func_10e0a: ; 0x10e0a
ld a, [$d552]
cp $ff
jp z, Func_10e8b
ld c, a
ld b, $0
sla c
rl b
sla c
rl b
sla c
rl b
sla c
rl b
ld hl, $5a3f
add hl, bc
ld de, $2b02
ld bc, $2b34
ld a, [hl]
cp $41 ; these might be text-related commands
jr z, .asm_10e4a
cp $49
jr z, .asm_10e4a
cp $55
jr z, .asm_10e4a
cp $45
jr z, .asm_10e4a
cp $4f
jr z, .asm_10e4a
ld de, $2ae9
ld bc, $2b1c
.asm_10e4a
push hl
push bc
push de
call Func_30e8
call Func_30db
ld hl, $d5cc
pop de
call Func_32aa
ld hl, $d5d4
pop de
call Func_32aa
pop hl
ld de, $c520
ld b, $0
.asm_10e67
ld a, [hli]
and a
jr z, .asm_10e70
ld [de], a
inc de
inc b
jr .asm_10e67
.asm_10e70
ld a, $20
ld [de], a
inc de
xor a
ld [de], a
ld a, [$d5db]
add b
ld [$d5db], a
ld a, $14
sub b
srl a
ld b, a
ld a, [$d5d8]
add b
ld [$d5d8], a
ret
Func_10e8b: ; 0x10e8b
ld bc, $34e8
ld [$ff8a], a
ld a, Bank(Func_8588)
ld hl, Func_8588
call BankSwitch
ld bc, $0100
ld de, $0000
push bc
push de
call Func_30e8
call Func_30db
ld hl, $d5d4
ld de, $2b6b
call Func_32cc
pop de
pop bc
ld hl, $d5cc
ld de, $2b4c
call Func_32aa
ret
Func_10ebb: ; 0x10ebb
ld a, [wNumPartyMons]
and a
ret z
call Func_10cb7
call Func_10d1d
ld a, [$d555]
sub $2
ld c, a
sla c
ld hl, $4f3b
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld de, $d52f
ld b, $13
.asm_10eda
ld a, [hli]
ld [de], a
inc de
dec b
jr nz, .asm_10eda
xor a
ld [wLeftAlleyCount], a
call Func_107b0
ld a, $2
ld [$d7ad], a
ld de, $0002
call Func_490
call SetPokemonSeenFlag
ld a, [wCurrentStage]
bit 0, a
jr nz, .asm_10f0b
ld a, $36
ld hl, $7e80
ld de, $8900
ld bc, $00e0
call Func_735
ret
.asm_10f0b
ld a, $36
ld hl, $7e80
ld de, $8200
ld bc, $00e0
call Func_735
ld [$ff8a], a
ld a, Bank(Func_14135)
ld hl, Func_14135
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_10184)
ld hl, Func_10184
call BankSwitch
ld a, [hGameBoyColorFlag]
and a
ld [$ff8a], a
ld a, Bank(Func_102bc)
ld hl, Func_102bc
call nz, BankSwitch
ret
INCBIN "baserom.gbc",$10f3b,$10fe3 - $10f3b
Func_10fe3: ; 0x10fe3
call Func_107a5
call Func_107c2
call Func_107c8
call Func_107e9
ld a, [wCurrentStage]
bit 0, a
jp z, Func_10aff
ld [$ff8a], a
ld a, Bank(Func_14135)
ld hl, Func_14135
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_16425)
ld hl, Func_16425
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_30253)
ld hl, Func_30253
call BankSwitch
ld a, $36
ld hl, $6c60
ld de, $8200
ld bc, $00e0
call LoadVRAMData
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_11036
ld a, $37
ld hl, $4af8
ld de, $0078
ld bc, $0008
call Func_7dc
.asm_11036
ld hl, $4958
ld a, $4
call Func_10aa
ld a, [$d624]
ld [$ff8a], a
ld a, Bank(Func_174d4)
ld hl, Func_174d4
call BankSwitch
ld hl, $497d
ld a, $4
call Func_10aa
ret
Func_11054: ; 0x11054
ld a, [wNumPartyMons]
and a
ret z
call Func_10cb7
call Func_10d1d
ret
Func_11060: ; 0x11060
ret
Func_11061: ; 0x11061
ld a, [wNumPartyMons]
and a
ret z
call Func_10cb7
call Func_10d1d
ld a, $1
ld [$d643], a
ld a, [$d555]
sub $2
ld c, a
sla c
ld hl, $50ed
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld de, $d52f
ld b, $13
.asm_11085
ld a, [hli]
ld [de], a
inc de
dec b
jr nz, .asm_11085
xor a
ld [wLeftAlleyCount], a
ld [$ff8a], a
ld a, Bank(Func_1f2ed)
ld hl, Func_1f2ed
call BankSwitch
ld a, $2
ld [$d7ad], a
ld de, $0002
call Func_490
call SetPokemonSeenFlag
ld a, [wCurrentStage]
bit 0, a
jr nz, .asm_110bd
ld a, $36
ld hl, $7e80
ld de, $8600
ld bc, $00e0
call Func_735
ret
.asm_110bd
ld a, $36
ld hl, $7e80
ld de, $8200
ld bc, $00e0
call Func_735
ld [$ff8a], a
ld a, Bank(Func_1c2cb)
ld hl, Func_1c2cb
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_10184)
ld hl, Func_10184
call BankSwitch
ld a, [hGameBoyColorFlag]
and a
ld [$ff8a], a
ld a, Bank(Func_102bc)
ld hl, Func_102bc
call nz, BankSwitch
ret
INCBIN "baserom.gbc",$110ed,$11195 - $110ed
Func_11195: ; 0x11195
xor a
ld [$d643], a
call Func_107a5
call Func_107c2
ld [$ff8a], a
ld a, Bank(Func_1f2ff)
ld hl, Func_1f2ff
call BankSwitch
ld a, [wCurrentStage]
bit 0, a
jp z, Func_1120e
ld [$ff8a], a
ld a, Bank(Func_1c2cb)
ld hl, Func_1c2cb
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_1e8f6)
ld hl, Func_1e8f6
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_30253)
ld hl, Func_30253
call BankSwitch
ld a, $36
ld hl, $6c60
ld de, $8200
ld bc, $00e0
call LoadVRAMData
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_111f0
ld a, $37
ld hl, $4bf8
ld de, $0078
ld bc, $0008
call Func_7dc
.asm_111f0
ld hl, $4a63
ld a, $4
call Func_10aa
ld a, [$d624]
ld [$ff8a], a
ld a, Bank(Func_174d4)
ld hl, Func_174d4
call BankSwitch
ld hl, $4a88
ld a, $4
call Func_10aa
ret
Func_1120e: ; 0x1120e
ld a, [wCurrentStage]
sub $4
res 0, a
ld c, a
ld b, $0
srl c
sla a
sla a
sla a
sub c
ld c, a
ld hl, $523b
add hl, bc
ld a, [hli]
ld c, a
ld a, [hli]
ld b, a
ld a, [hli]
push af
push bc
ld a, [hli]
ld e, a
ld a, [hli]
ld d, a
ld a, [hli]
ld c, a
ld a, [hli]
ld b, a
pop hl
pop af
call LoadVRAMData
ret
INCBIN "baserom.gbc",$1123b,$1126c - $1123b
WildMonOffsetsPointers: ; 0x1126c
dw RedStageWildMonDataOffsets
dw RedStageWildMonDataOffsets
dw RedStageWildMonDataOffsets
dw RedStageWildMonDataOffsets
dw BlueStageWildMonDataOffsets
dw BlueStageWildMonDataOffsets
RedStageWildMonDataOffsets: ; 0x11278
dw (RedStagePalletTownWildMons - RedStageWildMons) ; PALLET_TOWN
dw $0000 ; VIRIDIAN_CITY (unused in Red Stage)
dw (RedStageViridianForestWildMons - RedStageWildMons) ; VIRIDIAN_FOREST
dw (RedStagePewterCityWildMons - RedStageWildMons) ; PEWTER_CITY
dw $0000 ; MT_MOON (unused in Red Stage)
dw (RedStageCeruleanCityWildMons - RedStageWildMons) ; CERULEAN_CITY
dw (RedStageVermilionSeasideWildMons - RedStageWildMons) ; VERMILION_SEASIDE
dw $0000 ; VERMILION_STREETS (unused in Red Stage)
dw (RedStageRockMountainWildMons - RedStageWildMons) ; ROCK_MOUNTAIN
dw (RedStageLavenderTownWildMons - RedStageWildMons) ; LAVENDER_TOWN
dw $0000 ; CELADON_CITY (unused in Red Stage)
dw (RedStageCyclingRoadWildMons - RedStageWildMons) ; CYCLING_ROAD
dw $0000 ; FUCHSIA_CITY (unused in Red Stage)
dw (RedStageSafariZoneWildMons - RedStageWildMons) ; SAFARI_ZONE
dw $0000 ; SAFFRON_CITY (unused in Red Stage)
dw (RedStageSeafoamIslandsWildMons - RedStageWildMons) ; SEAFOAM_ISLANDS
dw (RedStageCinnabarIslandWildMons - RedStageWildMons) ; CINNABAR_ISLAND
dw (RedStageIndigoPlateauWildMons - RedStageWildMons) ; INDIGO_PLATEAU
BlueStageWildMonDataOffsets: ; 0x1129c
dw $0000 ; PALLET_TOWN (unused in Blue Stage)
dw (BlueStageViridianCityWildMons - BlueStageWildMons) ; VIRIDIAN_CITY
dw (BlueStageViridianForestWildMons - BlueStageWildMons) ; VIRIDIAN_FOREST
dw $0000 ; PEWTER_CITY (unused in Blue Stage)
dw (BlueStageMtMoonWildMons - BlueStageWildMons) ; MT_MOON
dw (BlueStageCeruleanCityWildMons - BlueStageWildMons) ; CERULEAN_CITY
dw $0000 ; VERMILION_SEASIDE (unused in Blue Stage)
dw (BlueStageVermilionStreetsWildMons - BlueStageWildMons) ; VERMILION_STREETS
dw (BlueStageRockMountainWildMons - BlueStageWildMons) ; ROCK_MOUNTAIN
dw $0000 ; LAVENDER_TOWN (unused in Blue Stage)
dw (BlueStageCeladonCityWildMons - BlueStageWildMons) ; CELADON_CITY
dw $0000 ; CYCLING_ROAD (unused in Blue Stage)
dw (BlueStageFuchsiaCityWildMons - BlueStageWildMons) ; FUCHSIA_CITY
dw (BlueStageSafariZoneWildMons - BlueStageWildMons) ; SAFARI_ZONE
dw (BlueStageSaffronCityWildMons - BlueStageWildMons) ; SAFFRON_CITY
dw $0000 ; SEAFOAM_ISLANDS (unused in Blue Stage)
dw (BlueStageCinnabarIslandWildMons - BlueStageWildMons) ; CINNABAR_ISLAND
dw (BlueStageIndigoPlateauWildMons - BlueStageWildMons) ; INDIGO_PLATEAU
WildMonPointers: ; 0x112c0
dw RedStageWildMons
dw RedStageWildMons
dw RedStageWildMons
dw RedStageWildMons
dw BlueStageWildMons
dw BlueStageWildMons
INCLUDE "data/red_wild_mons.asm"
INCLUDE "data/blue_wild_mons.asm"
INCBIN "baserom.gbc",$115ce,$1161d - $115ce
INCLUDE "data/evolution_lines.asm"
INCBIN "baserom.gbc",$116b4,$11a3e - $116b4
INCLUDE "data/mon_names.asm"
INCBIN "baserom.gbc",$123ae,$12a22 - $123ae
INCLUDE "data/catchem_timer_values.asm"
INCBIN "baserom.gbc",$12b50,$13685 - $12b50
Data_13685: ; 0x13685
; Each 3-byte entry is related to an evolution line. Don't know what this is for, yet.
db $12, $12, $10
db $10, $10, $10
db $12, $12, $0E
db $14, $14, $12
db $14, $14, $10
db $0A, $0A, $0E
db $11, $13, $10
db $0B, $0B, $10
db $12, $12, $0E
db $12, $14, $0E
db $10, $12, $10
db $11, $12, $0E
db $11, $12, $0E
db $12, $13, $10
db $11, $11, $10
db $12, $12, $10
db $08, $08, $10
db $10, $10, $10
db $10, $10, $10
db $11, $11, $0E
db $10, $10, $0E
db $14, $14, $0E
db $30, $30, $10
db $12, $12, $10
db $12, $12, $10
db $10, $10, $10
db $10, $10, $10
db $12, $14, $10
db $10, $12, $10
db $0C, $0C, $12
db $12, $14, $0C
db $12, $14, $0E
db $30, $30, $10
db $14, $14, $10
db $12, $12, $0E
db $12, $12, $0E
db $14, $14, $0E
db $12, $12, $10
db $14, $14, $0E
db $10, $10, $0E
db $12, $12, $10
db $14, $14, $10
db $14, $12, $10
db $02, $02, $10
db $12, $12, $10
db $12, $12, $10
db $14, $10, $10
db $14, $10, $10
db $14, $12, $10
db $11, $11, $10
db $14, $14, $10
db $12, $12, $10
db $10, $10, $10
db $12, $12, $10
db $0F, $0F, $0E
db $12, $12, $0E
db $23, $23, $10
db $13, $13, $10
db $13, $13, $10
db $12, $12, $10
db $12, $14, $10
db $14, $14, $0E
db $12, $12, $0E
db $12, $14, $10
db $18, $18, $0C
db $16, $16, $0C
db $14, $14, $10
db $12, $12, $10
db $10, $10, $0E
db $12, $12, $0E
db $12, $12, $0E
db $0C, $0C, $12
db $26, $36, $12
db $13, $13, $10
db $13, $13, $10
db $13, $13, $10
db $12, $12, $0E
db $14, $14, $0E
db $14, $14, $0E
SECTION "bank5", ROMX, BANK[$5]
Func_14000: ; 0x14000
call Func_14091
call Func_159f4
call Func_15450
call Func_16859
call Func_14ece
call Func_14234
call Func_16425
call Func_142fc
call Func_1404a
ret
Func_1401c: ; 0x1401c
call Func_14091
call Func_14377
call Func_14135
call Func_asm_1522d
call Func_14282
call Func_1414b
call Func_14234
call Func_14746
call Func_14707
call Func_140f9
call Func_16878
call Func_140e2
call Func_16425
call Func_142fc
call Func_1404a
ret
Func_1404a: ; 0x1404a
ld a, [$d57d]
and a
ret z
ld a, [hGameBoyColorFlag]
and a
ret nz
ld a, [$d580]
and a
ret z
ld a, $f
ld [$d581], a
call Func_1762f
ld hl, $d582
ld a, $ff
ld [hli], a
ld [hli], a
ld [hli], a
ld [hl], a
ld hl, $d582
ld a, [wTimerMinutes]
and $f
call Func_1764f
ld a, [wTimerSeconds]
swap a
and $f
call Func_1764f
ld a, [wTimerSeconds]
and $f
call Func_1764f
ld a, e
srl a
srl a
ld d, $90
call Func_1764f
ret
Func_14091: ; 0x14091
ld a, $ff
ld [$d4d7], a
ld [$d4db], a
ld a, [$d4b4]
ld [$d4c5], a
ld a, [$d4b6]
ld [$d4c6], a
ld a, [wBallRotation]
ld [$d4c7], a
ld a, [$d503]
and a
ret z
xor a
ld [$d503], a
ld a, [$d502]
res 1, a
ld [$d502], a
and $1
ld c, a
ld a, [$d4af]
and $fe
or c
ld [$d4af], a
ld de, $0007
call PlaySoundEffect
ld a, [wCurrentStage]
bit 0, a
ret nz
ld [$ff8a], a
ld a, Bank(Func_e578)
ld hl, Func_e578
call BankSwitch
call Func_159f4
ret
Func_140e2: ; 0x140e2
ld a, $ff
ld [$d60e], a
ld [$d60f], a
ld a, [$d60c]
call Func_16f28
ld a, [$d60d]
add $14
call Func_16f28
ret
Func_140f9: ; 0x140f9
ld a, [$d4ef]
and a
jr z, .asm_1410c
xor a
ld a, $66
ld [$c7e3], a
ld a, $67
ld [$c803], a
ld a, $2
.asm_1410c
call Func_149d9
ld a, [wLeftMapMoveCounter]
call Func_149f5
ld a, [$d4f1]
and a
jr z, .asm_14127
ld a, $6a
ld [$c7f0], a
ld a, $6b
ld [$c810], a
ld a, $2
.asm_14127
add $3
call Func_149d9
ld a, [wRightMapMoveCounter]
add $4
call Func_149f5
ret
Func_14135: ; 0x14135
ld bc, $0000
.asm_14138
push bc
ld hl, $d52f
add hl, bc
ld a, [hl]
res 7, a
call Func_169cd
pop bc
inc c
ld a, c
cp $5
jr nz, .asm_14138
ret
Func_1414b: ; 0x1414b
ld a, [wSpecialMode]
and a
ret z
ld a, [$d550]
cp $2
ret z
ld a, [$d5c6]
and a
jr nz, .asm_14165
ld a, [$d5f3]
and a
jr nz, .asm_14165
jp Func_14210
.asm_14165
ld [$ff8a], a
ld a, Bank(Func_141f2)
ld hl, Func_141f2
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_10362)
ld hl, Func_10362
call BankSwitch
ld a, [hGameBoyColorFlag]
and a
ld [$ff8a], a
ld a, Bank(Func_10301)
ld hl, Func_10301
call nz, BankSwitch
ld a, [$d5f3]
and a
ret z
ld a, $2a
ld hl, $47e0
ld de, $87e0
ld bc, $0020
call Func_666
ld a, $2a
ld hl, $4800
ld de, $8900
ld bc, $0180
call Func_666
ld a, [wBallType]
cp GREAT_BALL
jr nc, .notPokeball
ld a, Bank(PinballPokeballShakeGfx)
ld hl, PinballPokeballShakeGfx
ld de, $8380
ld bc, $0040
call Func_666
ret
.notPokeball
cp ULTRA_BALL
jr nc, .notGreatball
ld a, Bank(PinballGreatballShakeGfx)
ld hl, PinballGreatballShakeGfx
ld de, $8380
ld bc, $0040
call Func_666
ret
.notGreatball
cp MASTER_BALL
jr nc, .notUltraball
ld a, Bank(PinballUltraballShakeGfx)
ld hl, PinballUltraballShakeGfx
ld de, $8380
ld bc, $0040
call Func_666
ret
.notUltraball
ld a, Bank(PinballMasterballShakeGfx)
ld hl, PinballMasterballShakeGfx
ld de, $8380
ld bc, $0040
call Func_666
ret
Func_141f2: ; 0x141f2
ld a, $80
ld hl, $9887
call Func_14209
ld hl, $98a7
call Func_14209
ld hl, $98c7
call Func_14209
ld hl, $98e7
; fall through
Func_14209: ; 0x14209
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ret
Func_14210: ; 0x14210
ld hl, $d586
ld b, $18
.asm_14215
ld a, [hli]
xor $1
ld [hli], a
dec b
jr nz, .asm_14215
ld [$ff8a], a
ld a, Bank(Func_10184)
ld hl, Func_10184
call BankSwitch
ld a, [hGameBoyColorFlag]
and a
ld [$ff8a], a
ld a, Bank(Func_102bc)
ld hl, Func_102bc
call nz, BankSwitch
ret
Func_14234: ; 0x14234
ld a, [wSpecialMode]
and a
ret z
ld a, [$d550]
cp $1
ret nz
ld a, [$d554]
cp $3
ret z
ld a, [wCurrentStage]
bit 0, a
jr nz, .asm_1425c
ld a, $36
ld hl, $7e80
ld de, $8900
ld bc, $00e0
call Func_666
jr .asm_1426a
.asm_1425c
ld a, $36
ld hl, $7e80
ld de, $8200
ld bc, $00e0
call Func_666
.asm_1426a
ld a, [$d551]
and a
ret z
ld a, [hGameBoyColorFlag]
and a
ret z
ld a, $37
ld hl, $5188
ld de, $0070
ld bc, $0010
call Func_6fd
ret
Func_14282: ; 0x14282
ld a, [wSpecialMode]
and a
jr z, .asm_1429e
ld a, [$d550]
and a
jr nz, .asm_14296
ld a, [wNumMonHits]
and a
call nz, Func_142b3
ret
.asm_14296
cp $1
jr nz, .asm_1429e
call Func_142c3
ret
.asm_1429e
ld a, [$d624]
call Func_174d4
ld a, $36
ld hl, $4f60
ld de, $8ae0
ld bc, $0020
call Func_666
ret
Func_142b3: ; 0x142b3
push af
ld [$ff8a], a
ld a, Bank(Func_10611)
ld hl, Func_10611
call BankSwitch
pop af
dec a
jr nz, Func_142b3
ret
Func_142c3: ; 0x142c3
ld de, $0000
ld a, [$d554]
and a
ret z
ld b, a
.asm_142cc
ld a, [$d553]
call Func_142d7
inc de
dec b
jr nz, .asm_142cc
ret
Func_142d7: ; 0x142d7
push bc
push de
dec a
ld c, a
ld b, $0
swap c
sla c
ld hl, $4e80
add hl, bc
swap e
sla e
push hl
ld hl, $8ae0
add hl, de
ld d, h
ld e, l
pop hl
ld bc, $0020
ld a, $36
call Func_666
pop de
pop bc
ret
Func_142fc: ; 0x142fc
ld a, [$d4c8]
and a
jr nz, .asm_1430e
ld [$ff8a], a
ld a, Bank(LoadBallGfx)
ld hl, LoadBallGfx
call BankSwitch
jr .asm_14328
.asm_1430e
cp $1
jr nz, .asm_1431e
ld [$ff8a], a
ld a, Bank(LoadMiniBallGfx)
ld hl, LoadMiniBallGfx
call BankSwitch
jr .asm_14328
.asm_1431e
ld [$ff8a], a
ld a, Bank(Func_dd62)
ld hl, Func_dd62
call BankSwitch
.asm_14328
ld a, [hGameBoyColorFlag]
and a
ret z
ld a, [wBallType]
cp GREAT_BALL
jr nc, .notPokeball
ld a, $37
ld hl, $5168
ld de, $0040
ld bc, $0008
call Func_6fd
ret
.notPokeball
cp ULTRA_BALL
jr nc, .notGreatball
ld a, $37
ld hl, $5170
ld de, $0040
ld bc, $0008
call Func_6fd
ret
.notGreatball
cp MASTER_BALL
jr nc, .notUltraball
ld a, $37
ld hl, $5178
ld de, $0040
ld bc, $0008
call Func_6fd
ret
.notUltraball
ld a, $37
ld hl, $5180
ld de, $0040
ld bc, $0008
call Func_6fd
ret
Func_14377: ; 0x14377
ld a, [wSpecialMode]
and a
jr nz, .asm_143b1
ld a, [$d609]
and a
jr z, .asm_14393
ld a, [$d498]
add $15
ld [$ff8a], a
ld a, Bank(Func_30256)
ld hl, Func_30256
call BankSwitch
ret
.asm_14393
ld a, [$d608]
and a
jr z, .asm_143a6
ld a, $1a
ld [$ff8a], a
ld a, Bank(Func_30256)
ld hl, Func_30256
call BankSwitch
ret
.asm_143a6
ld [$ff8a], a
ld a, Bank(Func_30253)
ld hl, Func_30253
call BankSwitch
ret
.asm_143b1
ld a, [$d550]
cp $2
ret nz
ld a, [$d54d]
cp $3
jr nz, .asm_143c9
ld [$ff8a], a
ld a, Bank(Func_30253)
ld hl, Func_30253
call BankSwitch
ret
.asm_143c9
ld a, [$d604]
and a
ld a, $14
jr nz, .asm_143d6
ld a, [$d55a]
add $12
.asm_143d6
ld [$ff8a], a
ld a, Bank(Func_30256)
ld hl, Func_30256
call BankSwitch
ret
Func_143e1: ; 0x143e1
; not collisions.
call Func_14474 ; voltorbs
call Func_14498
call Func_144b6
call Func_144c0
call Func_144da
call Func_14439
call Func_144ac
jp Func_1441e
Func_143f9: ; 0x143f9
ld a, [wBallYPos + 1]
cp $56
jr nc, .asm_14412
call Func_1444d
call Func_144cd
call Func_14467
call Func_1445a
call Func_14443
jp Func_1441e
.asm_14412
call Func_14481
call Func_144e4
call Func_144a2
jp Func_1448e
Func_1441e: ; 0x1441e
xor a
ld [$d578], a
ld a, [$d551]
and a
ret z
ld a, [wCurrentStage]
ld hl, $45d2 ; todo
ld c, a
ld b, $0
sla c
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
jp Func_27fd
INCBIN "baserom.gbc",$14439,$14439 - $14439
Func_14439: ; 0x14439
ld de, $45b5
ld bc, $d5fe
scf
jp Func_2775
Func_14443: ; 0x14443
ld de, $45bb
ld bc, $d601
scf
jp Func_2775
Func_1444d: ; 0x1444d
ld de, $45af
ld hl, $459d
ld bc, $d5c7
and a
jp Func_2775
Func_1445a: ; 0x1445a
ld de, $45c9
ld hl, $45c1
ld bc, $d60a
and a
jp Func_2775
Func_14467: ; 0x14467
ld de, $44f4
ld hl, $44ee
ld bc, $d4ed
and a
jp Func_2775
Func_14474: ; 0x14474
ld de, $4515 ; todo
ld hl, $44fd ; todo
ld bc, $d4cb
and a
jp Func_2775
Func_14481: ; 0x14481
ld de, $452d
ld hl, $4521
ld bc, $d4d8
and a
jp Func_2775
Func_1448e: ; 0x1448e
ld de, $4536
ld bc, $d4dc
scf
jp Func_2775
Func_14498: ; 0x14498
ld de, $453c ; todo
ld bc, $d507
scf
jp Func_2775
Func_144a2: ; 0x144a2
ld de, $4542
ld bc, $d50d
scf
jp Func_2775
Func_144ac: ; 0x144ac
ld de, $4551
ld bc, $d5f7
scf
jp Func_2775
Func_144b6: ; 0x144b6
ld de, $455d ; todo
ld bc, $d51f
scf
jp Func_2775
Func_144c0: ; 0x144c0
ld de, $457d ; todo
ld hl, $4578 ; todo
ld bc, $d500
and a
jp Func_2775
Func_144cd: ; 0x144cd
ld de, $4588
ld hl, $4583
ld bc, $d500
and a
jp Func_2775
INCBIN "baserom.gbc",$144da,$144da - $144da
Func_144da: ; 0x144da
ld de, $458e
ld bc, $d4fb
scf
jp Func_2775
Func_144e4: ; 0x144e4
ld de, $4594
ld bc, $d515
scf
jp Func_2775
INCBIN "baserom.gbc",$144ee,$1460e - $144ee
Func_1460e: ; 0x1460e
; not collisions
call Func_14d85
call Func_14dea
call Func_1535d
call HandleBallTypeUpgradeCounterRedField
call Func_15270
call Func_1581f
call Func_1660c
call Func_16781
call Func_15e93
call Func_160f0
call Func_161e0
call Func_164e3
call Func_146a9
call Func_174ea
call Func_148cf
ld [$ff8a], a
ld a, Bank(Func_30188)
ld hl, Func_30188
call BankSwitch
ld a, $0
ld [$ff8a], a
ld a, Bank(Func_10000)
ld hl, Func_10000
call BankSwitch
ret
Func_14652: ; 0x14652
call Func_14795
call Func_15f86
call Func_147aa
call Func_14880
call Func_14e10
call Func_154a9
call HandleBallTypeUpgradeCounterRedField
call Func_151cb
call Func_1652d
call Func_1660c
call Func_167ff
call Func_169a6
call Func_16d9d
call Func_16279
call Func_161af
call Func_164e3
call Func_14733
call Func_146a2
call Func_174d0
ld [$ff8a], a
ld a, Bank(Func_30188)
ld hl, Func_30188
call BankSwitch
ld a, $0
ld [$ff8a], a
ld a, Bank(Func_10000)
ld hl, Func_10000
call BankSwitch
ret
Func_146a2: ; 0x146a2
call Func_146a9
call nz, Func_14707
ret
Func_146a9: ; 0x146a9
ld a, [wBallSaverTimerFrames]
ld hl, wBallSaverTimerSeconds
or [hl]
ret z
ld a, [wBallXPos + 1]
cp $9a
jr nc, .asm_146e8
ld a, [wBallSaverTimerFrames]
dec a
ld [wBallSaverTimerFrames], a
bit 7, a
jr z, .asm_146e8
ld a, $3b
ld [wBallSaverTimerFrames], a
ld a, [hl]
dec a
bit 7, a
jr nz, .asm_146cf
ld [hl], a
.asm_146cf
inc a
ld c, $0
cp $2
jr c, .asm_146e4
ld c, $4
cp $6
jr c, .asm_146e4
ld c, $10
cp $b
jr c, .asm_146e4
ld c, $ff
.asm_146e4
ld a, c
ld [$d4a2], a
.asm_146e8
ld a, [$d4a2]
ld c, $0
and a
jr z, .asm_146fe
ld c, $1
cp $ff
jr z, .asm_146fe
ld hl, $ffb3
and [hl]
jr z, .asm_146fe
ld c, $0
.asm_146fe
ld a, [wBallSaverIconOn]
cp c
ld a, c
ld [wBallSaverIconOn], a
ret
Func_14707: ; 0x14707
ld a, [wBallSaverIconOn]
and a
jr nz, .asm_1471c
ld a, $5
ld hl, $472b
ld de, $99a8
ld bc, $0004
call Func_735
ret
.asm_1471c
ld a, $5
ld hl, $472f
ld de, $99a8
ld bc, $0004
call Func_735
ret
INCBIN "baserom.gbc",$1472b,$14733 - $1472b
Func_14733: ; 0x14733
ld c, $0
ld a, [$d49b]
and a
jr z, .asm_1473d
ld c, $1
.asm_1473d
ld a, [$d4a9]
cp c
ld a, c
ld [$d4a9], a
ret z
; fall through
Func_14746: ; 0x14746
ld c, $0
ld a, [$d49b]
and a
jr z, .asm_14750
ld c, $2
.asm_14750
ld b, $0
ld hl, $475f
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld a, $5
call Func_10aa
ret
INCBIN "baserom.gbc",$1475f,$14795 - $1475f
Func_14795: ; 0x14795
ld a, [$d5c7]
and a
ret z
xor a
ld [$d5c7], a
ld a, $1
ld [$d5bf], a
ld de, $0006
call PlaySoundEffect
ret
Func_147aa: ; 0x147aa
ld a, [$d4ed]
and a
jp z, .asm_14834
xor a
ld [$d4ed], a
ld a, [$d4ee]
sub $1
sla a
ld c, a
ld b, $0
ld hl, wLeftMapMoveCounter
add hl, bc
ld a, [hl]
cp $3
jr z, .asm_14834
inc a
ld [hld], a
ld [hl], $50
ld hl, $d4f7
add hl, bc
ld a, $e0
ld [hli], a
ld a, $1
ld [hl], a
ld a, c
and a
jr z, .asm_14807
ld a, $6a
ld [$c7f0], a
ld a, $6b
ld [$c810], a
ld a, $5
call Func_149d9
ld a, [wRightMapMoveCounter]
add $4
call Func_149f5
ld a, $8
ld [$ff8a], a
ld a, Bank(Func_10000)
ld hl, Func_10000
call BankSwitch
ld a, [wRightMapMoveCounter]
cp $3
call z, Func_14920
jr .asm_14830
.asm_14807
ld a, $66
ld [$c7e3], a
ld a, $67
ld [$c803], a
ld a, $2
call Func_149d9
ld a, [wLeftMapMoveCounter]
call Func_149f5
ld a, $7
ld [$ff8a], a
ld a, Bank(Func_10000)
ld hl, Func_10000
call BankSwitch
ld a, [wLeftMapMoveCounter]
cp $3
call z, Func_14947
.asm_14830
call Func_1496d
ret
.asm_14834
ld a, [$d4ef]
and a
jr z, .asm_14857
dec a
ld [$d4ef], a
jr nz, .asm_14857
ld a, [wLeftMapMoveCounter]
sub $3
jr nz, .asm_1484d
ld [wLeftMapMoveCounter], a
call Func_149f5
.asm_1484d
ld a, $64
ld [$c7e3], a
ld a, $65
ld [$c803], a
.asm_14857
ld a, [$d4f1]
and a
jr z, .asm_1487c
dec a
ld [$d4f1], a
jr nz, .asm_1487c
ld a, [wRightMapMoveCounter]
sub $3
jr nz, .asm_14872
ld [wRightMapMoveCounter], a
add $4
call Func_149f5
.asm_14872
ld a, $68
ld [$c7f0], a
ld a, $69
ld [$c810], a
.asm_1487c
call Func_14990
ret
Func_14880: ; 0x14880
ld hl, $d4f7
dec [hl]
ld a, [hli]
cp $ff
jr nz, .asm_148a6
dec [hl]
ld a, [hld]
cp $ff
jr nz, .asm_148a6
ld a, $e0
ld [hli], a
ld a, $1
ld [hl], a
ld a, [wLeftMapMoveCounter]
and a
jr z, .asm_148a6
cp $3
jr z, .asm_148a6
dec a
ld [wLeftMapMoveCounter], a
call Func_149f5
.asm_148a6
ld hl, $d4f9
dec [hl]
ld a, [hli]
cp $ff
jr nz, .asm_148ce
dec [hl]
ld a, [hld]
cp $ff
jr nz, .asm_148ce
ld a, $e0
ld [hli], a
ld a, $1
ld [hl], a
ld a, [wRightMapMoveCounter]
and a
jr z, .asm_148ce
cp $3
jr z, .asm_148ce
dec a
ld [wRightMapMoveCounter], a
add $4
call Func_149f5
.asm_148ce
ret
Func_148cf: ; 0x148cf
ld b, $0
ld hl, $d4f8
ld a, [hld]
or [hl]
jr z, .asm_148f8
dec [hl]
ld a, [hli]
cp $ff
jr nz, .asm_148f8
dec [hl]
ld a, [hld]
cp $ff
jr nz, .asm_148f8
ld a, $e0
ld [hli], a
ld a, $1
ld [hl], a
ld a, [wLeftMapMoveCounter]
and a
jr z, .asm_148f8
cp $3
jr z, .asm_148f8
dec a
ld [wLeftMapMoveCounter], a
.asm_148f8
ld hl, $d4fa
ld a, [hld]
or [hl]
jr z, .asm_1491f
dec [hl]
ld a, [hli]
cp $ff
jr nz, .asm_1491f
dec [hl]
ld a, [hld]
cp $ff
jr nz, .asm_1491f
ld a, $e0
ld [hli], a
ld a, $1
ld [hl], a
ld a, [wRightMapMoveCounter]
and a
jr z, .asm_1491f
cp $3
jr z, .asm_1491f
dec a
ld [wRightMapMoveCounter], a
.asm_1491f
ret
Func_14920: ; 0x14920
ld hl, $d62b
call Func_e4a
jr nc, .asm_14937
ld c, $a
call Func_e55
ld [$ff8a], a
ld a, Bank(Func_30164)
ld hl, Func_30164
call z, BankSwitch
.asm_14937
ld a, $1
ld [$d55a], a
ld [$ff8a], a
ld a, Bank(StartMapMoveMode)
ld hl, StartMapMoveMode
call BankSwitch
ret
Func_14947: ; 0x14947
ld hl, $d62b
call Func_e4a
jr nc, .asm_1495e
ld c, $a
call Func_e55
ld [$ff8a], a
ld a, Bank(Func_30164)
ld hl, Func_30164
call z, BankSwitch
.asm_1495e
xor a
ld [$d55a], a
ld [$ff8a], a
ld a, Bank(StartMapMoveMode)
ld hl, StartMapMoveMode
call BankSwitch
ret
Func_1496d: ; 0x1496d
ld a, $55
ld [$d803], a
ld a, $4
ld [$d804], a
ld a, $2
ld [$d7eb], a
ld bc, $34be
ld [$ff8a], a
ld a, Bank(Func_8576)
ld hl, Func_8576
call BankSwitch
ld de, $000f
call PlaySoundEffect
ret
Func_14990: ; 0x14990
ld a, [$d4ef]
and a
jr nz, .asm_149b6
ld a, [wLeftMapMoveDiglettAnimationCounter]
and a
jr z, .asm_149a2
dec a
ld [wLeftMapMoveDiglettAnimationCounter], a
jr .asm_149b6
.asm_149a2
call Func_1130
ret nz
ld a, $14
ld [wLeftMapMoveDiglettAnimationCounter], a
ld a, [wLeftMapMoveDiglettFrame]
xor $1
ld [wLeftMapMoveDiglettFrame], a
call Func_149d9
.asm_149b6
ld a, [$d4f1]
and a
ret nz
ld a, [wRightMapMoveDiglettAnimationCounter]
and a
jr z, .asm_149c6
dec a
ld [wRightMapMoveDiglettAnimationCounter], a
ret
.asm_149c6
call Func_1130
ret nz
ld a, $14
ld [wRightMapMoveDiglettAnimationCounter], a
ld a, [wRightMapMoveDiglettFrame]
xor $1
ld [wRightMapMoveDiglettFrame], a
add $3
; fall through
Func_149d9: ; 0x149d9
sla a
ld c, a
ld b, $0
ld hl, $4a11 ; todo
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_149e9
ld hl, $4a83 ; todo
.asm_149e9
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
or h
ret z
ld a, $5
call Func_10aa
ret
Func_149f5: ; 0x149f5
sla a
ld c, a
ld b, $0
ld hl, $4af5 ; todo
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_14a05
ld hl, $4c8d ; todo
.asm_14a05
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
or h
ret z
ld a, $5
call Func_10aa
ret
INCBIN "baserom.gbc",$14a11,$14d85 - $14a11
Func_14d85: ; 0x14d85
ld a, [$d4cb]
and a
jr z, .asm_14db9
xor a
ld [$d4cb], a
call Func_14dc9
ld a, $10
ld [$d4d6], a
ld a, [$d4cc]
sub $3
ld [$d4d7], a
ld a, $4
ld [$ff8a], a
ld a, Bank(Func_10000)
ld hl, Func_10000
call BankSwitch
ld bc, $34be
ld [$ff8a], a
ld a, Bank(Func_8576)
ld hl, Func_8576
call BankSwitch
ret
.asm_14db9
ld a, [$d4d6]
and a
ret z
dec a
ld [$d4d6], a
ret nz
ld a, $ff
ld [$d4d7], a
ret
Func_14dc9: ; 0x14dc9
ld a, $ff
ld [$d803], a
ld a, $3
ld [$d804], a
ld hl, $0200
ld a, l
ld [$d7bc], a
ld a, h
ld [$d7bd], a
ld a, $80
ld [wFlipperCollision], a
ld de, $000e
call PlaySoundEffect
ret
Func_14dea: ; 0x14dea
ld a, [$d507]
and a
jr z, Func_14e10
xor a
ld [$d507], a
ld a, [wBallYVelocity]
ld c, a
ld a, [wBallYVelocity + 1]
ld b, a
ld a, c
ld [$d50b], a
ld a, b
ld [$d50c], a
ld a, $c
ld [$ff8a], a
ld a, Bank(Func_10000)
ld hl, Func_10000
call BankSwitch
; fall through
Func_14e10: ; 0x14e10
ld hl, $d50b
ld a, [hli]
or [hl]
ret z
ld a, [$d50b]
ld c, a
ld a, [$d50c]
ld b, a
bit 7, b
jr nz, .asm_14e2e
ld a, c
sub $7
ld c, a
ld a, b
sbc $0
ld b, a
jr nc, .asm_14e3b
jr .asm_14e38
.asm_14e2e
ld a, c
add $7
ld c, a
ld a, b
adc $0
ld b, a
jr nc, .asm_14e3b
.asm_14e38
ld bc, $0000
.asm_14e3b
ld a, c
ld [$d50b], a
ld a, b
ld [$d50c], a
ld hl, $d50b
ld a, [$d509]
add [hl]
ld [$d509], a
inc hl
ld a, [$d50a]
adc [hl]
bit 7, a
ld c, $0
jr z, .asm_14e5e
add $18
ld c, $1
jr .asm_14e66
.asm_14e5e
cp $18
jr c, .asm_14e66
sub $18
ld c, $1
.asm_14e66
ld [$d50a], a
ld a, c
and a
ret z
ld bc, $34ac
ld [$ff8a], a
ld a, Bank(Func_8576)
ld hl, Func_8576
call BankSwitch
ld hl, $d62d
call Func_e4a
ld a, [$d517]
cp $f
jr nz, .asm_14e8a
call Func_14ea7
ret
.asm_14e8a
inc a
ld [$d517], a
call Func_14ea7
ld a, [$d517]
cp $f
jr nz, .asm_14e9d
ld a, $64
ld [$d51e], a
.asm_14e9d
ld a, [wCurrentStage]
bit 0, a
ret nz
call Func_14ece
ret
Func_14ea7: ; 0x14ea7
ld a, [$d51e]
and a
ret nz
ld a, [$d517]
ld c, a
ld b, $0
ld hl, $4ebe ; todo
add hl, bc
ld a, [hl]
ld e, a
ld d, $0
call PlaySoundEffect
ret
INCBIN "baserom.gbc",$14ebe,$14ece - $14ebe
Func_14ece: ; 0x14ece
ld a, [$d517]
ld c, a
sla c
ld b, $0
ld hl, $4eeb ; todo
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_14ee1
ld hl, $509b
.asm_14ee1
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld a, $5
call Func_10aa
ret
INCBIN "baserom.gbc",$14eeb,$151cb - $14eeb
Func_151cb: ; 0x151cb
ld a, [$d50d]
and a
jr z, .asm_15229
xor a
ld [$d50d], a
ld a, [$d513]
and a
jr nz, .asm_15229
ld a, [$d50e]
sub $a
ld c, a
ld b, $0
ld hl, $d50f
add hl, bc
ld a, [hl]
ld [hl], $1
and a
ret nz
ld bc, $34b2
ld [$ff8a], a
ld a, Bank(Func_8576)
ld hl, Func_8576
call BankSwitch
ld hl, $d50f
ld a, [hli]
and [hl]
inc hl
and [hl]
inc hl
and [hl]
jr z, Func_asm_1522d
ld a, $1
ld [$d513], a
ld a, $80
ld [$d514], a
ld bc, $34b8
ld [$ff8a], a
ld a, Bank(Func_8576)
ld hl, Func_8576
call BankSwitch
ld de, $0009
call PlaySoundEffect
ld hl, $d62c
call Func_e4a
jr Func_asm_1522d
.asm_15229
call Func_15270
ret z
; fall through
Func_asm_1522d: ; 0x1522d
ld hl, $d512
ld b, $4
.asm_15232
ld a, [hld]
push hl
call Func_1523c
pop hl
dec b
jr nz, .asm_15232
ret
Func_1523c: ; 0x1523c
and a
jr z, .asm_1524e
ld a, [hGameBoyColorFlag]
and a
jr nz, .asm_15249
ld hl, $52dd ; todo
jr .asm_1525b
.asm_15249
ld hl, $531d ; todo
jr .asm_1525b
.asm_1524e
ld a, [hGameBoyColorFlag]
and a
jr nz, .asm_15258
ld hl, $52e5
jr .asm_1525b
.asm_15258
ld hl, $5325
.asm_1525b
push bc
dec b
sla b
ld e, b
ld d, $0
add hl, de
ld c, [hl]
inc hl
ld b, [hl]
ld a, $5
ld de, LoadTileLists
call Func_10c5
pop bc
ret
Func_15270: ; 0x15270
ld a, [$d513]
and a
jr z, .asm_152a6
ld a, [$d514]
dec a
ld [$d514], a
jr nz, .asm_1528d
ld [$d513], a
ld a, $1
ld [$d608], a
ld a, $3
ld [$d607], a
xor a
.asm_1528d
and $7
ret nz
ld a, [$d514]
srl a
srl a
srl a
and $1
ld hl, $d50f
ld [hli], a
ld [hli], a
ld [hli], a
ld [hl], a
ld a, $1
and a
ret
.asm_152a6
ld hl, wKeyConfigLeftFlipper
call IsKeyPressed
jr z, .asm_152c2
ld hl, $d50f
ld a, [hli]
ld c, a
ld a, [hli]
ld b, a
ld a, [hli]
ld e, a
ld a, [hl]
ld d, a
ld a, c
ld [hld], a
ld a, d
ld [hld], a
ld a, e
ld [hld], a
ld a, b
ld [hl], a
ret
.asm_152c2
ld hl, wKeyConfigRightFlipper
call IsKeyPressed
ret z
ld hl, $d50f
ld a, [hli]
ld c, a
ld a, [hli]
ld b, a
ld a, [hli]
ld e, a
ld a, [hl]
ld d, a
ld a, e
ld [hld], a
ld a, b
ld [hld], a
ld a, c
ld [hld], a
ld a, d
ld [hl], a
ret
INCBIN "baserom.gbc",$152dd,$1535d - $152dd
Func_1535d: ; 0x1535d
ld a, [$d5f7]
and a
jp z, .asm_1544c
xor a
ld [$d5f7], a
ld a, [$d4af]
bit 0, a
jp z, .asm_1544c
ld a, [$d5fc]
and a
jp nz, .asm_1544c
xor a
ld [wRightAlleyTrigger], a
ld [wLeftAlleyTrigger], a
ld [wSecondaryLeftAlleyTrigger], a
call Func_159c9
ld a, $b
ld [$ff8a], a
ld a, Bank(Func_10000)
ld hl, Func_10000
call BankSwitch
ld a, [$d5f8]
sub $e
ld c, a
ld b, $0
ld hl, $d5f9
add hl, bc
ld a, [hl]
ld [hl], $1
and a
ret nz
ld bc, $34b2
ld [$ff8a], a
ld a, Bank(Func_8576)
ld hl, Func_8576
call BankSwitch
ld hl, $d5f9
ld a, [hli]
and [hl]
inc hl
and [hl]
jr nz, .asm_153c0
ld de, $0009
call PlaySoundEffect
jp Func_15450
.asm_153c0
ld a, $1
ld [$d5fc], a
ld a, $80
ld [$d5fd], a
; load approximately 1 minute of frames into wBallTypeCounter
ld a, $10
ld [wBallTypeCounter], a
ld a, $e
ld [wBallTypeCounter + 1], a
ld bc, $34b8
ld [$ff8a], a
ld a, Bank(Func_8576)
ld hl, Func_8576
call BankSwitch
ld a, [wBallType]
cp MASTER_BALL
jr z, .masterBall
ld de, $063a
call PlaySoundEffect
call Func_30e8
call Func_30db
ld de, $2907
ld hl, $d5cc
call Func_32aa
ld a, [wBallType]
ld c, a
ld b, $0
ld hl, BallTypeProgressionRedField
add hl, bc
ld a, [hl]
ld [wBallType], a
add $30
ld [$c512], a
jr .asm_15447
.masterBall
ld de, $0f4d
call PlaySoundEffect
ld bc, $34e8
ld [$ff8a], a
ld a, Bank(Func_8588)
ld hl, Func_8588
call BankSwitch
ld bc, $0100
ld de, $0000
push bc
push de
call Func_30e8
call Func_30db
ld hl, $d5d4
ld de, $2948
call Func_32cc
pop de
pop bc
ld hl, $d5cc
ld de, $2922
call Func_32aa
.asm_15447
call Func_155a7
jr Func_15450
.asm_1544c
call Func_154a9
ret z
Func_15450
ld a, [$d4af]
bit 0, a
ret z
ld hl, $d5fb
ld b, $3
.asm_1545b
ld a, [hld]
push hl
call Func_15465
pop hl
dec b
jr nz, .asm_1545b
ret
Func_15465: ; 0x15465
and a
jr z, .asm_15477
ld a, [hGameBoyColorFlag]
and a
jr nz, .asm_15472
ld hl, $5511 ; todo
jr .asm_15484
.asm_15472
ld hl, $5543 ; todo
jr .asm_15484
.asm_15477
ld a, [hGameBoyColorFlag]
and a
jr nz, .asm_15481
ld hl, $5517 ; todo
jr .asm_15484
.asm_15481
ld hl, $5549 ; todo
.asm_15484
push bc
dec b
sla b
ld e, b
ld d, $0
add hl, de
ld c, [hl]
inc hl
ld b, [hl]
ld a, $5
ld de, LoadTileLists
call Func_10c5
pop bc
ret
Func_15499: ; 0x15499
ld a, [hGameBoyColorFlag]
and a
ret nz
ld b, $3
.asm_1549f
push hl
xor a
call Func_15465
pop hl
dec b
jr nz, .asm_1549f
ret
Func_154a9: ; 0x154a9
ld a, [$d5fc]
and a
jr z, .asm_154d6
ld a, [$d5fd]
dec a
ld [$d5fd], a
jr nz, .asm_154bb
ld [$d5fc], a
.asm_154bb
and $7
jr nz, .asm_154d4
ld a, [$d5fd]
srl a
srl a
srl a
and $1
ld hl, $d5f9
ld [hli], a
ld [hli], a
ld [hl], a
ld a, $1
and a
ret
.asm_154d4
xor a
ret
.asm_154d6
ld hl, wKeyConfigLeftFlipper
call IsKeyPressed
jr z, .asm_154ee
ld hl, $d5f9
ld a, [hli]
ld c, a
ld a, [hli]
ld b, a
ld a, [hl]
ld e, a
ld a, c
ld [hld], a
ld a, e
ld [hld], a
ld a, b
ld [hl], a
ret
.asm_154ee
ld hl, wKeyConfigRightFlipper
call IsKeyPressed
ret z
ld hl, $d5f9
ld a, [hli]
ld c, a
ld a, [hli]
ld b, a
ld a, [hl]
ld e, a
ld a, b
ld [hld], a
ld a, c
ld [hld], a
ld a, e
ld [hl], a
ret
BallTypeProgressionRedField: ; 0x15505
; Determines the next upgrade for the Ball.
db GREAT_BALL ; POKE_BALL -> GREAT_BALL
db GREAT_BALL ; unused
db ULTRA_BALL ; GREAT_BALL -> ULTRA_BALL
db MASTER_BALL ; ULTRA_BALL -> MASTER_BALL
db MASTER_BALL ; unused
db MASTER_BALL ; MASTER_BALL -> MASTER_BALL
BallTypeDegradationRedField: ; 0x1550b
; Determines the previous upgrade for the Ball.
db POKE_BALL ; POKE_BALL -> POKE_BALL
db POKE_BALL ; unused
db POKE_BALL ; GREAT_BALL -> POKE_BALL
db GREAT_BALL ; ULTRA_BALL -> GREAT_BALL
db ULTRA_BALL ; unused
db ULTRA_BALL ; MASTER_BALL -> GREAT_BALL
INCBIN "baserom.gbc",$15511,$15575 - $15511
HandleBallTypeUpgradeCounterRedField: ; 0x15575
ld a, [$d5f3]
and a
ret nz
ld hl, wBallTypeCounter
ld a, [hli]
ld c, a
ld b, [hl]
or b
ret z
dec bc
ld a, b
ld [hld], a
ld [hl], c
or c
ret nz
; counter is now 0! Degrade the ball upgrade.
ld a, [wBallType]
ld c, a
ld b, $0
ld hl, BallTypeDegradationRedField
add hl, bc
ld a, [hl]
ld [wBallType], a
and a
jr z, .pokeball
; load approximately 1 minute of frames into wBallTypeCounter
ld a, $10
ld [wBallTypeCounter], a
ld a, $e
ld [wBallTypeCounter + 1], a
.pokeball
call Func_155a7
ret
Func_155a7: ; 0x155a7
ld a, [wBallType]
ld c, a
sla c
ld b, $0
ld hl, $55d7 ; todo
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld a, $5
call Func_10aa
; fall through
Func_155bb: ; 0x155bb
ld a, [hGameBoyColorFlag]
and a
ret z
; gameboy color
ld a, [wBallType]
sla a
ld c, a
ld b, $0
ld hl, $57f7 ; todo
add hl, bc
ld c, [hl]
inc hl
ld b, [hl]
ld a, $5
ld de, $1266
call Func_10c5
ret
INCBIN "baserom.gbc",$155d7,$1581f - $155d7
Func_1581f: ; 0x1581f
ld a, [$d51f]
and a
ret z
xor a
ld [$d51f], a
ld bc, $34a6
ld [$ff8a], a
ld a, Bank(Func_8576)
ld hl, Func_8576
call BankSwitch
ld a, [$d520]
sub $11
ld c, a
ld b, $0
ld hl, $d521
add hl, bc
ld [hl], $1
ld a, [$d521]
and a
call nz, Func_1587c
ld a, [$d522]
and a
call nz, Func_158c0
ld a, [$d523]
and a
call nz, Func_15904
ld a, [$d524]
and a
call nz, HandleLeftAlleyTriggerRedField
ld a, [$d525]
and a
call nz, Func_15931
ld a, [$d526]
and a
call nz, Func_15944
ld a, [$d527]
and a
call nz, HandleRightAlleyTriggerRedField
ld a, [$d528]
and a
call nz, Func_15990
ret
Func_1587c: ; 0x1587c
xor a
ld [$d521], a
ld a, [wLeftAlleyTrigger]
and a
ret z
xor a
ld [wLeftAlleyTrigger], a
ld a, $1
ld [$ff8a], a
ld a, Bank(Func_10000)
ld hl, Func_10000
call BankSwitch
ret c
ld a, [wLeftAlleyCount]
cp $3
ret z
inc a
ld [wLeftAlleyCount], a
set 7, a
ld [$d52f], a
cp $83
ret nz
ld a, [$d4af]
and $1
or $6
ld [$d4af], a
ld [$ff8a], a
ld a, Bank(Func_e578)
ld hl, Func_e578
call BankSwitch
call Func_159f4
ret
Func_158c0: ; 0x158c0
xor a
ld [$d522], a
ld a, [wLeftAlleyTrigger]
and a
ret z
xor a
ld [wLeftAlleyTrigger], a
ld a, $1
ld [$ff8a], a
ld a, Bank(Func_10000)
ld hl, Func_10000
call BankSwitch
ret c
ld a, [wLeftAlleyCount]
cp $3
ret z
inc a
ld [wLeftAlleyCount], a
set 7, a
ld [$d52f], a
cp $83
ret nz
ld a, [$d4af]
and $1
or $6
ld [$d4af], a
ld [$ff8a], a
ld a, Bank(Func_e578)
ld hl, Func_e578
call BankSwitch
call Func_159f4
ret
Func_15904: ; 0x15904
xor a
ld [$d523], a
ld a, [wSecondaryLeftAlleyTrigger]
and a
ret z
xor a
ld [wSecondaryLeftAlleyTrigger], a
ld a, $3
ld [$ff8a], a
ld a, Bank(Func_10000)
ld hl, Func_10000
call BankSwitch
ret
HandleLeftAlleyTriggerRedField: ; 0x1591e
; Ball passed over the left alley trigger point in the Red Field.
xor a
ld [$d524], a
ld [wRightAlleyTrigger], a
ld [wSecondaryLeftAlleyTrigger], a
ld a, $1
ld [wLeftAlleyTrigger], a
call Func_159c9
ret
Func_15931: ; 0x15931
xor a
ld [$d525], a
ld [wRightAlleyTrigger], a
ld [wLeftAlleyTrigger], a
ld a, $1
ld [wSecondaryLeftAlleyTrigger], a
call Func_159c9
ret
Func_15944: ; 0x15944
xor a
ld [$d526], a
ld a, [wRightAlleyTrigger]
and a
ret z
xor a
ld [wRightAlleyTrigger], a
ld a, $2
ld [$ff8a], a
ld a, Bank(Func_10000)
ld hl, Func_10000
call BankSwitch
ret c
ld a, [wRightAlleyCount]
cp $3
ret z
inc a
ld [wRightAlleyCount], a
cp $3
jr z, .asm_1596e
set 7, a
.asm_1596e
ld [$d530], a
ld a, [wRightAlleyCount]
cp $2
ret c
ld a, $80
ld [$d532], a
ret
HandleRightAlleyTriggerRedField: ; 0x1597d
; Ball passed over the right alley trigger point in the Red Field.
xor a
ld [$d527], a
ld [wLeftAlleyTrigger], a
ld [wSecondaryLeftAlleyTrigger], a
ld a, $1
ld [wRightAlleyTrigger], a
call Func_159c9
ret
Func_15990: ; 0x15990
xor a
ld [$d528], a
ld a, [wRightAlleyTrigger]
and a
ret z
xor a
ld [wRightAlleyTrigger], a
ld a, $2
ld [$ff8a], a
ld a, Bank(Func_10000)
ld hl, Func_10000
call BankSwitch
ret c
ld a, [wRightAlleyCount]
cp $3
ret z
inc a
ld [wRightAlleyCount], a
cp $3
jr z, .asm_159ba
set 7, a
.asm_159ba
ld [$d530], a
ld a, [wRightAlleyCount]
cp $2
ret c
ld a, $80
ld [$d532], a
ret
Func_159c9: ; 0x159c9
ld a, [$d7ad]
bit 7, a
ret nz
ld c, a
ld a, [$d4af]
and $1
or c
ld [$d4af], a
ld a, $ff
ld [$d7ad], a
ld [$ff8a], a
ld a, Bank(Func_e578)
ld hl, Func_e578
call BankSwitch
call Func_159f4
ld a, $1
ld [$d580], a
call Func_1404a
ret
Func_159f4: ; 0x159f4
ld a, [$ff9e]
bit 7, a
jr z, .asm_15a13
ld a, [$d7f2]
and $fe
ld c, a
ld a, [$d4af]
and $fe
cp c
jr z, .asm_15a13
add c
cp $2
jr z, .asm_15a13
ld de, $0000
call PlaySoundEffect
.asm_15a13
ld a, [$d7f2]
swap a
ld c, a
ld a, [$d4af]
sla a
or c
ld c, a
ld b, $0
ld hl, $5a3f ; todo
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_15a2d
ld hl, $5d05
.asm_15a2d
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
or h
ret z
ld a, $5
call Func_10aa
ld a, [$d4af]
ld [$d7f2], a
ret
INCBIN "baserom.gbc",$15a3f,$15e93 - $15a3f
Func_15e93: ; 0x15e93
ld a, [$d4fb]
and a
jr z, .asm_15eda
xor a
ld [$d4fb], a
ld bc, $34d0
ld [$ff8a], a
ld a, Bank(Func_8576)
ld hl, Func_8576
call BankSwitch
ld de, $0005
call PlaySoundEffect
ld hl, $5f69 ; todo
ld de, $d4fd
call Func_28a0
xor a
ld [wBallXVelocity], a
ld [wBallXVelocity + 1], a
ld [wBallYVelocity], a
ld [wBallYVelocity + 1], a
ld [wBallXPos], a
ld [wBallYPos], a
ld a, $7c
ld [wBallXPos + 1], a
ld a, $78
ld [wBallYPos + 1], a
xor a
ld [$d549], a
.asm_15eda
ld hl, $5f69 ; todo
ld de, $d4fd
call Func_28a9
push af
ld a, [$d4fd]
and a
jr nz, .asm_15ef8
ld a, $19
ld [$d4fd], a
xor a
ld [$d4fe], a
ld a, $6
ld [$d4ff], a
.asm_15ef8
pop af
ret nc
ld a, [$d4ff]
cp $1
jr nz, .asm_15f35
xor a
ld [$d548], a
ld a, [wRightAlleyCount]
cp $2
jr c, .noCatchEmMode
ld a, $8
jr nz, .asm_15f11
xor a
.asm_15f11
ld [wRareMonsFlag], a
ld [$ff8a], a
ld a, Bank(StartCatchEmMode)
ld hl, StartCatchEmMode
call BankSwitch
.noCatchEmMode
ld hl, $d62a
call Func_e4a
ret nc
ld c, $19
call Func_e55
ld [$ff8a], a
ld a, Bank(Func_30164)
ld hl, Func_30164
call z, BankSwitch
ret
.asm_15f35
ld a, [$d4ff]
cp $4
jr nz, .asm_15f42
ld a, $1
ld [$d548], a
ret
.asm_15f42
ld a, [$d4ff]
cp $5
ret nz
ld a, $1
ld [$d549], a
xor a
ld [wBallXVelocity + 1], a
ld a, $2
ld [wBallYVelocity + 1], a
ld de, $0006
call PlaySoundEffect
ld a, $5
ld [$ff8a], a
ld a, Bank(Func_10000)
ld hl, Func_10000
call BankSwitch
ret
INCBIN "baserom.gbc",$15f69,$15f86 - $15f69
Func_15f86: ; 0x15f86
ld a, [$d4d8]
and a
jr z, .asm_15f99
call Func_5fb8
call Func_15fa6
xor a
ld [$d4d8], a
call Func_15fda
.asm_15f99
ld a, [$d4da]
and a
ret z
dec a
ld [$d4da], a
call z, Func_5fb8
ret
Func_15fa6: ; 0x15fa6
ld a, $10
ld [$d4da], a
ld a, [$d4d9]
sub $6
ld [$d4db], a
sla a
inc a
jr asm_15fc0
Func_5fb8: ; 0x5fb8
ld a, [$d4db]
cp $ff
ret z
sla a
asm_15fc0
sla a
ld c, a
ld b, $0
ld hl, $6010 ; todo
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_15fd0
ld hl, $6080
.asm_15fd0
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld a, $5
call Func_10aa
ret
Func_15fda: ; 0x15fda
ld a, $ff
ld [$d803], a
ld a, $3
ld [$d804], a
ld hl, $0200
ld a, l
ld [$d7bc], a
ld a, h
ld [$d7bd], a
ld a, $80
ld [wFlipperCollision], a
ld a, [$d4d9]
sub $6
ld c, a
ld b, $0
ld hl, $600e
add hl, bc
ld a, [$d7ea]
add [hl]
ld [$d7ea], a
ld de, $000b
call PlaySoundEffect
ret
INCBIN "baserom.gbc",$1600e,$160f0 - $1600e
Func_160f0: ; 0x160f0
ld a, [$d5fe]
and a
jr z, .asm_16137
xor a
ld [$d5fe], a
ld bc, $34d0
ld [$ff8a], a
ld a, Bank(Func_8576)
ld hl, Func_8576
call BankSwitch
ld de, $0021
call PlaySoundEffect
xor a
ld hl, wBallXVelocity
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [$d549], a
ld [wBallXPos], a
ld [wBallYPos], a
ld a, $11
ld [wBallXPos + 1], a
ld a, $23
ld [wBallYPos + 1], a
ld a, $10
ld [$d600], a
ld a, $5
ld [$d803], a
ld a, $8
ld [$d804], a
.asm_16137
ld a, [$d600]
and a
ret z
dec a
ld [$d600], a
cp $f
jr nz, .asm_1614f
ld [$ff8a], a
ld a, Bank(LoadMiniBallGfx)
ld hl, LoadMiniBallGfx
call BankSwitch
ret
.asm_1614f
cp $c
jr nz, .asm_1615e
ld [$ff8a], a
ld a, Bank(Func_dd62)
ld hl, Func_dd62
call BankSwitch
ret
.asm_1615e
cp $9
jr nz, .asm_1616d
xor a
ld [$d548], a
ld [wBallSpin], a
ld [wBallRotation], a
ret
.asm_1616d
cp $6
jr nz, .asm_1618e
ld [$ff8a], a
ld a, Bank(Func_10ab3)
ld hl, Func_10ab3
call BankSwitch
ld a, $1
ld [$d548], a
ld [$d549], a
ld a, $5
ld [$d803], a
ld a, $8
ld [$d804], a
ret
.asm_1618e
cp $3
jr nz, .asm_1619d
ld [$ff8a], a
ld a, Bank(LoadMiniBallGfx)
ld hl, LoadMiniBallGfx
call BankSwitch
ret
.asm_1619d
and a
ret nz
ld [$ff8a], a
ld a, Bank(LoadBallGfx)
ld hl, LoadBallGfx
call BankSwitch
ld a, $2
ld [wBallYVelocity + 1], a
ret
Func_161af: ; 0x161af
ld a, [$d604]
and a
ret z
ld a, [wBallYPos + 1]
sub $fe
cp $30
ret nc
ld c, $0
ld b, a
ld h, b
ld l, c
srl b
rr c
srl b
rr c
srl h
rr l
add hl, bc
ld a, [wBallXPos + 1]
sub $38
cp $30
ret nc
ld c, a
ld b, $0
sla c
sla c
add hl, bc
jr asm_1620f
Func_161e0: ; 0x161e0
ld a, [$d604]
and a
ret z
ld a, [wBallYPos + 1]
sub $86
cp $30
ret nc
ld c, $0
ld b, a
ld h, b
ld l, c
srl b
rr c
srl b
rr c
srl h
rr l
add hl, bc
ld a, [wBallXPos + 1]
sub $38
cp $30
ret nc
ld c, a
ld b, $0
sla c
sla c
add hl, bc
asm_1620f: ; 0x1620f
ld bc, $4000
add hl, bc
ld de, wBallXVelocity
ld a, $3c
call Func_68f
ld c, a
ld a, [de]
add c
ld [de], a
inc de
inc hl
ld a, $3c
call Func_68f
ld b, a
ld a, [de]
adc b
ld [de], a
inc de
inc hl
push bc
ld a, $3c
call Func_68f
ld c, a
ld a, [de]
add c
ld [de], a
inc de
inc hl
ld a, $3c
call Func_68f
ld b, a
ld a, [de]
adc b
ld [de], a
inc de
inc hl
bit 7, b
jr z, .asm_1624e
ld a, c
cpl
ld c, a
ld a, b
cpl
ld b, a
inc bc
.asm_1624e
pop hl
bit 7, h
jr z, .asm_1625a
ld a, l
cpl
ld l, a
ld a, h
cpl
ld h, a
inc hl
.asm_1625a
add hl, bc
sla l
rl h
ld a, h
cp $2
ret c
ld a, [$d804]
and a
ret nz
ld a, $5
ld [$d803], a
ld a, $8
ld [$d804], a
ld de, $0004
call PlaySoundEffect
ret
Func_16279: ; 0x16279
ld a, [$d601]
and a
jr z, .asm_162ae
xor a
ld [$d601], a
ld a, [$d604]
and a
ret z
ld a, [$d603]
and a
jr nz, .asm_162ae
xor a
ld hl, wBallXVelocity
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [$d549], a
ld [wBallXPos], a
ld [wBallYPos], a
ld a, $50
ld [wBallXPos + 1], a
ld a, $16
ld [wBallYPos + 1], a
ld a, $13
ld [$d603], a
.asm_162ae
ld a, [$d603]
and a
ret z
dec a
ld [$d603], a
ld a, $18
ld [$d606], a
ld a, [$d603]
cp $12
jr nz, .asm_162d4
ld de, $0021
call PlaySoundEffect
ld [$ff8a], a
ld a, Bank(LoadMiniBallGfx)
ld hl, LoadMiniBallGfx
call BankSwitch
ret
.asm_162d4
cp $f
jr nz, .asm_162e3
ld [$ff8a], a
ld a, Bank(Func_dd62)
ld hl, Func_dd62
call BankSwitch
ret
.asm_162e3
cp $c
jr nz, .asm_162f2
xor a
ld [$d548], a
ld [wBallSpin], a
ld [wBallRotation], a
ret
.asm_162f2
cp $9
jr nz, .asm_162fa
call Func_16352
ret
.asm_162fa
cp $6
jr nz, .asm_16317
xor a
ld [$d604], a
ld a, $5
ld [$d803], a
ld a, $8
ld [$d804], a
ld [$ff8a], a
ld a, Bank(LoadMiniBallGfx)
ld hl, LoadMiniBallGfx
call BankSwitch
ret
.asm_16317
cp $3
jr nz, .asm_16330
ld [$ff8a], a
ld a, Bank(LoadBallGfx)
ld hl, LoadBallGfx
call BankSwitch
ld a, $2
ld [wBallYVelocity + 1], a
ld a, $80
ld [wBallXVelocity], a
ret
.asm_16330
and a
ret nz
call Func_16425
ld a, [$d622]
cp $1
ret nz
call GenRandom
and $8
ld [wRareMonsFlag], a
ld [$ff8a], a
ld a, Bank(StartCatchEmMode)
ld hl, StartCatchEmMode
call BankSwitch
xor a
ld [$d622], a
ret
Func_16352: ; 0x16352
xor a
ld [$d533], a
ld a, $d
ld [$ff8a], a
ld a, Bank(Func_10000)
ld hl, Func_10000
call BankSwitch
jr nc, .asm_1636d
ld a, $1
ld [$d548], a
ld [$d549], a
ret
.asm_1636d
ld a, [$d624]
cp $3
jr nz, .asm_163b3
ld a, [$d607]
and a
jr nz, .asm_163b3
.asm_1637a
ld a, [$d623]
and a
jr nz, .asm_16389
xor a
ld [$d625], a
ld a, $40
ld [$d626], a
.asm_16389
xor a
ld [$d623], a
ld a, $1
ld [$d495], a
ld [$d4ae], a
ld a, [$d498]
ld c, a
ld b, $0
ld hl, $6420
add hl, bc
ld a, [hl]
ld [$d497], a
call Func_163f2
xor a
ld [$d609], a
ld [$d622], a
ld a, $1e
ld [$d607], a
ret
.asm_163b3
ld [$ff8a], a
ld a, Bank(Func_ed8e)
ld hl, Func_ed8e
call BankSwitch
xor a
ld [$d608], a
ld a, [$d61d]
cp $d
jr nc, .asm_1637a
ld a, $1
ld [$d548], a
ld [$d549], a
ld a, [$d622]
cp $2
ret nz
ld [$ff8a], a
ld a, Bank(Func_10ab3)
ld hl, Func_10ab3
call BankSwitch
ld a, [$d7ad]
ld c, a
ld a, [$d4af]
and $1
or c
ld [$d4af], a
xor a
ld [$d622], a
ret
Func_163f2: ; 0x163f2
call Func_30e8
call Func_30db
ld hl, $d5dc
ld a, [$d497]
ld de, $2e83
cp $d
jr z, .asm_1640f
ld de, $2e9e
cp $7
jr z, .asm_1640f
ld de, $2eb8
.asm_1640f
call Func_32aa
ld de, $0000
call Func_490
rst $10
ld de, $3c23
call PlaySoundEffect
ret
INCBIN "baserom.gbc",$16420,$16425 - $16420
Func_16425: ; 0x16425
ld a, [wCurrentStage]
and $1
sla a
ld c, a
ld a, [$d604]
add c
sla a
ld c, a
ld b, $0
ld hl, $644d ; todo
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_16441
ld hl, $64a1 ; todo
.asm_16441
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
or h
ret z
ld a, $5
call Func_10aa
ret
INCBIN "baserom.gbc",$1644d,$164e3 - $1644d
Func_164e3: ; 0x164e3
ld a, [$d607]
and a
ret z
dec a
ld [$d607], a
ret nz
ld a, [wSpecialMode]
and a
ret nz
ld a, [$d609]
and a
jr z, .asm_164ff
ld a, [$d498]
add $15
jr .asm_16506
.asm_164ff
ld a, [$d608]
and a
ret z
ld a, $1a
.asm_16506
ld hl, wCurrentStage
bit 0, [hl]
ld [$ff8a], a
ld a, Bank(Func_30256)
ld hl, Func_30256
call nz, BankSwitch
ld a, [$d604]
and a
ret nz
ld a, $1
ld [$d604], a
ld a, $80
ld [$d533], a
ld a, [wCurrentStage]
bit 0, a
call nz, Func_16425
ret
Func_1652d: ; 0x1652d
ld a, [$d4dc]
and a
ret z
xor a
ld [$d4dc], a
ld a, [$d4de]
and a
jr z, .asm_16566
xor a
ld [wRightAlleyTrigger], a
ld [wLeftAlleyTrigger], a
ld [wSecondaryLeftAlleyTrigger], a
ld hl, wBallXVelocity
ld [hli], a
ld [hl], a
ld [wBallSpin], a
ld [wBallRotation], a
ld a, $80
ld [wBallYVelocity], a
ld a, $fa
ld [wBallYVelocity + 1], a
ld a, $1
ld [$d549], a
ld de, $000a
call PlaySoundEffect
.asm_16566
ld a, $ff
ld [$d4ec], a
ld a, [$d4de]
and a
ret nz
ld a, [$d4e0]
and a
jr nz, .asm_16582
call Func_1658f
ld a, $1
ld [$d4e0], a
ld [$d4de], a
ret
.asm_16582
ld hl, wKeyConfigBallStart
call IsKeyPressed
ret z
ld a, $1
ld [$d4de], a
ret
Func_1658f: ; 0x1658f
ld a, [hGameBoyColorFlag]
and a
ld [$ff8a], a
ld a, Bank(Func_f269)
ld hl, Func_f269
call nz, BankSwitch
.showNextMap
ld a, [wInitialMapSelectionIndex]
inc a
cp $7 ; number of maps to choose from at the start of play
jr c, .gotMapId
xor a ; wrap around to 0
.gotMapId
ld [wInitialMapSelectionIndex], a
ld c, a
ld b, $0
ld hl, RedStageInitialMaps
add hl, bc
ld a, [hl]
ld [wCurrentMap], a
push af
ld de, $0048
call PlaySoundEffect
pop af
add $29 ; map billboard pictures start at the $29th entry in BillboardPicturePointers
ld [$ff8a], a
ld a, Bank(LoadBillboardPicture)
ld hl, LoadBillboardPicture
call BankSwitch
ld b, $20 ; number of frames to delay before the next map is shown
.waitOnCurrentMap
push bc
ld [$ff8a], a
ld a, Bank(Func_eeee)
ld hl, Func_eeee
call BankSwitch
ld hl, wKeyConfigBallStart
call IsKeyPressed
jr nz, .ballStartKeyPressed
pop bc
dec b
jr nz, .waitOnCurrentMap
jr .showNextMap
.ballStartKeyPressed
pop bc
ld [$ff8a], a
ld a, Bank(Func_30253)
ld hl, Func_30253
call BankSwitch
ld bc, $2cd1
ld [$ff8a], a
ld a, Bank(Func_3118f)
ld hl, Func_3118f
call BankSwitch
ld a, [wCurrentMap]
ld [$d4e3], a
xor a
ld [$d4e2], a
ret
RedStageInitialMaps: ; 0x16605
db PALLET_TOWN
db VIRIDIAN_FOREST
db PEWTER_CITY
db CERULEAN_CITY
db VERMILION_SEASIDE
db ROCK_MOUNTAIN
db LAVENDER_TOWN
Func_1660c: ; 0x1660c
ld a, [$d515]
and a
jr z, .asm_1667b
xor a
ld [$d515], a
ld a, [$d51c]
and a
jr nz, .asm_1667b
ld a, [$d51d]
and a
jr nz, .asm_16634
ld a, [$d516]
sub $1c
ld hl, $d518
cp [hl]
jr nz, .asm_1667b
ld a, [$d517]
cp $f
jr nz, .asm_16667
.asm_16634
ld hl, $673c ; todo
ld de, $d519
call Func_28a0
ld a, [$d51d]
and a
jr nz, .asm_16647
xor a
ld [$d517], a
.asm_16647
ld a, $1
ld [$d51c], a
xor a
ld [wBallXVelocity], a
ld [wBallXVelocity + 1], a
ld [wBallYVelocity], a
ld [wBallYVelocity + 1], a
ld [wBallSpin], a
ld [wBallRotation], a
ld [$d549], a
call Func_30e8
jr .asm_1667b
.asm_16667
ld hl, $6761 ; todo
ld de, $d519
call Func_28a0
ld a, $2
ld [$d51c], a
ld de, $003b
call PlaySoundEffect
.asm_1667b
ld a, [$d51c]
and a
call z, Func_16766
call Func_1669e
ld a, [$d517]
cp $f
ret nz
ld a, [$d51e]
and a
ret z
dec a
ld [$d51e], a
cp $5a
ret nz
ld de, $0f22
call PlaySoundEffect
ret
Func_1669e: ; 0x1669e
ld a, [$d51c]
cp $1
jr nz, .asm_16719
ld hl, $673c ; todo
ld de, $d519
call Func_28a9
ret nc
ld a, [$d51b]
cp $1
jr nz, .asm_166f7
xor a
ld [$d85d], a
call Func_310a
rst $10
ld a, $1
ld [$ff8a], a
ld a, Bank(Func_50000)
ld hl, Func_50000
call BankSwitch
ld a, $1
ld [$d85d], a
ld a, $ff
ld [$d803], a
ld a, $60
ld [$d804], a
ld hl, $d62e
call Func_e4a
jr nc, .asm_166f0
ld c, $a
call Func_e55
ld [$ff8a], a
ld a, Bank(Func_30164)
ld hl, Func_30164
call z, BankSwitch
.asm_166f0
ld de, $1610
call PlaySoundEffect
ret
.asm_166f7
ld a, [$d51b]
cp $11
ret nz
ld a, $fc
ld [wBallYVelocity + 1], a
ld a, $1
ld [$d549], a
ld bc, $34ca
ld [$ff8a], a
ld a, Bank(Func_8576)
ld hl, Func_8576
call BankSwitch
xor a
ld [$d51c], a
ret
.asm_16719
cp $2
jr nz, .asm_16732
ld hl, $6761 ; todo
ld de, $d519
call Func_28a9
ret nc
ld a, [$d51b]
cp $1
ret nz
xor a
ld [$d51c], a
ret
.asm_16732
ld a, [$ffb3]
swap a
and $1
ld [$d51a], a
ret
INCBIN "baserom.gbc",$1673c,$16766 - $1673c
Func_16766: ; 0x16766
ld hl, wKeyConfigLeftFlipper
call IsKeyPressed2
jr z, .asm_16774
ld hl, $d518
ld [hl], $0
ret
.asm_16774
ld hl, wKeyConfigRightFlipper
call IsKeyPressed2
ret z
ld hl, $d518
ld [hl], $1
ret
Func_16781: ; 0x16781
ld a, [$d500]
and a
jr z, .asm_167bd
xor a
ld [$d500], a
ld a, [$d503]
and a
jr nz, .asm_167c2
ld bc, $34ca
ld [$ff8a], a
ld a, Bank(Func_8576)
ld hl, Func_8576
call BankSwitch
ld a, [$d502]
xor $1
set 1, a
ld [$d502], a
ld a, $14
ld [$d503], a
call Func_16859
ld a, $6
ld [$ff8a], a
ld a, Bank(Func_10000)
ld hl, Func_10000
call BankSwitch
ret
.asm_167bd
ld a, [$d503]
and a
ret z
.asm_167c2
dec a
ld [$d503], a
ret nz
ld a, [$d502]
res 1, a
ld [$d502], a
call Func_16859
ld a, [$d502]
and $1
ld c, a
ld a, [$d4af]
and $fe
or c
ld [$d4af], a
ld [$ff8a], a
ld a, Bank(Func_e578)
ld hl, Func_e578
call BankSwitch
call Func_159f4
ld de, $0007
call PlaySoundEffect
ld a, [$d4af]
bit 0, a
jp nz, Func_15450
jp Func_15499
Func_167ff: ; 0x167ff
ld a, [$d500]
and a
jr z, .asm_16839
xor a
ld [$d500], a
ld a, [$d503]
and a
jr nz, .asm_1683e
ld bc, $34ca
ld [$ff8a], a
ld a, Bank(Func_8576)
ld hl, Func_8576
call BankSwitch
ld a, [$d502]
xor $1
ld [$d502], a
ld a, $14
ld [$d503], a
call Func_16878
ld a, $6
ld [$ff8a], a
ld a, Bank(Func_10000)
ld hl, Func_10000
call BankSwitch
ret
.asm_16839
ld a, [$d503]
and a
ret z
.asm_1683e
dec a
ld [$d503], a
ret nz
ld a, [$d502]
and $1
ld c, a
ld a, [$d4af]
and $fe
or c
ld [$d4af], a
ld de, $0007
call PlaySoundEffect
ret
Func_16859: ; 0x16859
ld a, [$d502]
sla a
ld c, a
ld b, $0
ld hl, $6899 ; todo
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_1686c
ld hl, $6910 ; todo
.asm_1686c
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
or h
ret z
ld a, $5
call Func_10aa
ret
Func_16878: ; 0x16878
ld a, [$d502]
and $1
sla a
ld c, a
ld b, $0
ld hl, $695a ; todo
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_1688d
ld hl, $6980 ; todo
.asm_1688d
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
or h
ret z
ld a, $5
call Func_10aa
ret
INCBIN "baserom.gbc",$16899,$169a6 - $16899
Func_169a6: ; 0x169a6
ld a, [$ffb3]
and $1f
ret nz
ld bc, $0000
.asm_169ae
push bc
ld hl, $d52f
add hl, bc
bit 7, [hl]
jr z, .asm_169c5
ld a, [hl]
res 7, a
ld hl, $ffb3
bit 5, [hl]
jr z, .asm_169c2
inc a
.asm_169c2
call Func_169cd
.asm_169c5
pop bc
inc c
ld a, c
cp $5
jr nz, .asm_169ae
ret
Func_169cd: ; 0x169cd
push af
sla c
ld hl, $69ed
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_169db
ld hl, $6bef
.asm_169db
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
pop af
sla a
ld c, a
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld a, $5
call Func_10aa
ret
INCBIN "baserom.gbc",$169ed,$16d9d - $169ed
Func_16d9d: ; 016d9d
ld a, [$d60a]
and a
jp z, Func_16e51
xor a
ld [$d60a], a
ld de, $000d
call PlaySoundEffect
ld a, [$d60b]
sub $21
jr nz, .asm_16ddc
ld a, $9
ld [$ff8a], a
ld a, Bank(Func_10000)
ld hl, Func_10000
call BankSwitch
ld a, [$d610]
cp $3
jr nz, .asm_16e35
ld a, $1
ld [$d610], a
ld a, $3
ld [$d611], a
ld a, [$d60c]
set 7, a
ld [$d60c], a
jr .asm_16e35
.asm_16ddc
ld a, $a
ld [$ff8a], a
ld a, Bank(Func_10000)
ld hl, Func_10000
call BankSwitch
ld a, [$d611]
cp $3
jr nz, .asm_16e35
ld a, $1
ld [$d610], a
ld a, $1
ld [$d611], a
ld a, $80
ld [$d612], a
ld a, [$d60d]
set 7, a
ld [$d60d], a
ld a, [$d482]
inc a
cp $64
jr c, .asm_16e10
ld a, $63
.asm_16e10
ld [$d482], a
jr nc, .asm_16e24
ld c, $19
call Func_e55
ld [$ff8a], a
ld a, Bank(Func_30164)
ld hl, Func_30164
call z, BankSwitch
.asm_16e24
ld a, [$d60c]
ld [$d614], a
ld a, [$d60d]
ld [$d615], a
ld a, $1
ld [$d613], a
.asm_16e35
ld bc, $34ac
ld [$ff8a], a
ld a, Bank(Func_8576)
ld hl, Func_8576
call BankSwitch
ld a, [$d60c]
call Func_16f28
ld a, [$d60d]
add $14
call Func_16f28
ret
Func_16e51: ; 0x16e51
call Func_16ef5
ld a, [$d612]
and a
jr z, .asm_16e8f
dec a
ld [$d612], a
cp $70
jr nz, .asm_16e6e
ld a, $2
ld [$d610], a
ld a, $2
ld [$d611], a
jr .asm_16e8f
.asm_16e6e
and a
jr nz, .asm_16e8f
ld a, $3
ld [$d610], a
xor a
ld [$d611], a
ld a, [$d482]
call Func_16f95
ld a, [$d60c]
call Func_16f28
ld a, [$d60d]
add $14
call Func_16f28
ret
.asm_16e8f
ld a, [$d610]
cp $2
jr c, .asm_16ec1
cp $3
ld a, [$ffb3]
jr c, .asm_16ea0
srl a
srl a
.asm_16ea0
ld b, a
and $3
jr nz, .asm_16ec1
bit 3, b
jr nz, .asm_16eb6
ld a, [$d60c]
res 7, a
ld [$d60c], a
call Func_16f28
jr .asm_16ec1
.asm_16eb6
ld a, [$d60c]
set 7, a
ld [$d60c], a
call Func_16f28
.asm_16ec1
ld a, [$d611]
cp $2
ret c
cp $3
ld a, [$ffb3]
jr c, .asm_16ed1
srl a
srl a
.asm_16ed1
ld b, a
and $3
ret nz
bit 3, b
jr nz, .asm_16ee7
ld a, [$d60d]
res 7, a
ld [$d60d], a
add $14
call Func_16f28
ret
.asm_16ee7
ld a, [$d60d]
set 7, a
ld [$d60d], a
add $14
call Func_16f28
ret
Func_16ef5: ; 0x16ef5
ld a, [$d5ca]
and a
ret nz
ld a, [$d613]
and a
ret z
xor a
ld [$d613], a
call Func_30e8
call Func_30db
ld hl, $d5cc
ld de, $2958
call Func_32aa
ld hl, $c512
ld a, [$d614]
and $7f
jr z, .asm_16f1f
add $30
ld [hli], a
.asm_16f1f
ld a, [$d615]
res 7, a
add $30
ld [hl], a
ret
Func_16f28: ; 0x16f28
push af
ld a, [hGameBoyColorFlag]
and a
jr nz, .asm_16f33
pop af
call Func_16f38
ret
.asm_16f33
pop af
call Func_16f7b
ret
Func_16f38: ; 0x16f38
push af
res 7, a
ld hl, $d60e
cp $14
jr c, .asm_16f47
ld hl, $d60f
sub $a
.asm_16f47
cp [hl]
jr z, .asm_16f5c
ld [hl], a
ld c, a
ld b, $0
sla c
ld hl, $6fc8
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld a, $5
call Func_10aa
.asm_16f5c
pop af
ld bc, $0000
bit 7, a
jr z, .asm_16f68
res 7, a
set 1, c
.asm_16f68
cp $14
jr c, .asm_16f6e
set 2, c
.asm_16f6e
ld hl, $71e4
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld a, $5
call Func_10aa
ret
Func_16f7b: ; 0x16f7b
bit 7, a
jr z, .asm_16f83
res 7, a
add $a
.asm_16f83
ld c, a
ld b, $0
sla c
ld hl, $7228
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld a, $5
call Func_10aa
ret
Func_16f95: ; 0x16f95
ld a, [$d482]
inc a
cp $64
jr c, .asm_16f9f
ld a, $63
.asm_16f9f
ld b, a
xor a
ld hl, $6fc1 ; todo
ld c, $7
.asm_16fa6
bit 0, b
jr z, .asm_16fac
add [hl]
daa
.asm_16fac
srl b
inc hl
dec c
jr nz, .asm_16fa6
push af
swap a
and $f
ld [$d60c], a
pop af
and $f
ld [$d60d], a
ret
INCBIN "baserom.gbc",$16fc1,$174d0 - $16fc1
Func_174d0: ; 0x174d0
call Func_174ea
ret nc
; fall through
Func_174d4: ; 0x174d4
sla a
ld c, a
ld b, $0
ld hl, $7528 ; todo
add hl, bc
ld a, [hli]
ld c, a
ld a, [hli]
ld b, a
ld a, $5
ld de, LoadTileLists
call Func_10c5
ret
Func_174ea: ; 0x174ea
ld a, [$d624]
ld hl, $d625
cp [hl]
ret z
ld a, [$d626]
dec a
ld [$d626], a
jr nz, .asm_17514
ld a, [$d625]
ld [$d624], a
cp $3
jr c, .asm_1750f
ld a, $1
ld [$d609], a
ld a, $3
ld [$d607], a
.asm_1750f
ld a, [$d624]
scf
ret
.asm_17514
and $7
ret nz
ld a, [$d626]
bit 3, a
jr nz, .asm_17523
ld a, [$d624]
scf
ret
.asm_17523
ld a, [$d625]
scf
ret
INCBIN "baserom.gbc",$17528,$1755c - $17528
Func_1755c: ; 0x1755c
ld bc, $7f00
call Func_175a4
call Func_17cc4
call Func_17d34
call Func_17d59
call Func_17d7a
call Func_17d92
call Func_17de1
call Func_17e81
call Func_17efb
call Func_17f64
ret
Func_1757e: ; 0x1757e
ld bc, $7f00
call Func_175a4
call Func_17c67
call Func_17c96
call Func_17e08
ld [$ff8a], a
ld a, Bank(Func_e4a1)
ld hl, Func_e4a1
call BankSwitch
call Func_17e81
call Func_17f0f
call Func_17f75
call Func_17fca
ret
Func_175a4: ; 0x175a4
ld a, [$d57d]
and a
ret z
ld a, [hGameBoyColorFlag]
and a
jr nz, DrawTimer
ld a, [$d580]
and a
ret z
ld a, [$d581]
and a
jr z, .asm_175be
dec a
ld [$d581], a
ret
.asm_175be
call Func_1762f
ld hl, $d582
ld a, [wTimerMinutes]
and $f
call Func_1764f
ld a, [wTimerSeconds]
swap a
and $f
call Func_1764f
ld a, [wTimerSeconds]
and $f
call Func_1764f
ld d, $0
ld hl, $7615
add hl, de
ld a, [hli]
call Func_17627
ld a, [hli]
call Func_17627
ld a, [hli]
call Func_17627
ld a, [hli]
call Func_17627
ret
DrawTimer: ; 0x175f5
; Loads the OAM data for the timer in the top-right corner of the screen.
ld a, [wTimerMinutes]
and $f
call DrawTimerDigit
ld a, $a ; colon
call DrawTimerDigit
ld a, [wTimerSeconds]
swap a
and $f
call DrawTimerDigit ; tens digit of the minutes
ld a, [wTimerSeconds]
and $f
call DrawTimerDigit ; ones digit of the minutes
ret
INCBIN "baserom.gbc",$17615,$17625 - $17615
DrawTimerDigit: ; 0x17625
add $b1 ; the timer digits' OAM ids start at $b1
; fall through
Func_17627: ; 0x17627
call LoadOAMData
ld a, b
add $8
ld b, a
ret
Func_1762f: ; 0x1762f
ld de, $600c
ld a, [wCurrentStage]
cp $6
ret nc
ld de, $0000
bit 0, a
ret z
ld de, $3004
ld a, [wSpecialMode]
and a
ret z
ld a, [$d550]
and a
ret nz
ld de, $3008
ret
Func_1764f: ; 0x1764f
push bc
push de
cp [hl]
jr z, .asm_1765d
push af
push hl
add d
call Func_17665
pop hl
pop af
ld [hl], a
.asm_1765d
inc hl
pop de
ld a, d
add $10
ld d, a
pop bc
ret
Func_17665: ; 0x17665
ld c, a
ld b, $0
sla c
rl b
ld hl, $7679 ; todo
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld a, $5
call Func_10aa
ret
INCBIN "baserom.gbc",$17679,$17c67 - $17679
Func_17c67: ; 0x17c67
ld a, [$d5f3]
and a
ret z
ld a, $50
ld hl, hBoardXShift
sub [hl]
ld b, a
ld a, $38
ld hl, hBoardYShift
sub [hl]
ld c, a
ld a, [$d5f5]
ld e, a
ld d, $0
ld hl, $7c89
add hl, de
ld a, [hl]
call LoadOAMData
ret
INCBIN "baserom.gbc",$17c89,$17c96 - $17c89
Func_17c96: ; 0x17c96
ld a, [$d5bb]
and a
ret z
ld a, $50
ld hl, hBoardXShift
sub [hl]
ld b, a
ld a, $3e
ld hl, hBoardYShift
sub [hl]
ld c, a
ld a, [$d5bd]
ld e, a
ld d, $0
ld hl, $7cb8
add hl, de
ld a, [hl]
call LoadOAMData
ret
INCBIN "baserom.gbc",$17cb8,$17cc4 - $17cb8
Func_17cc4: ; 0x17cc4
ld de, $d4cd
ld hl, $7d15
call Func_17cdc
ld de, $d4d0
ld hl, $7d1b
call Func_17cdc
ld de, $d4d3
ld hl, $7d21
; fall through
Func_17cdc: ; 0x17cdc
push hl
ld hl, $7d27
call Func_28a9
ld h, d
ld l, e
ld a, [hl]
and a
jr nz, .asm_17cf6
call GenRandom
and $7
add $1e
ld [hli], a
ld a, $1
ld [hli], a
xor a
ld [hl], a
.asm_17cf6
pop hl
inc de
ld a, [hBoardXShift]
ld b, a
ld a, [hli]
sub b
ld b, a
ld a, [hBoardYShift]
ld c, a
ld a, [hli]
sub c
ld c, a
ld a, [$d4d7]
sub [hl]
inc hl
jr z, .asm_17d0c
ld a, [de]
.asm_17d0c
ld e, a
ld d, $0
add hl, de
ld a, [hl]
call LoadOAMData
ret
INCBIN "baserom.gbc",$17d15,$17d34 - $17d15
Func_17d34: ; 0x17d34
ld a, $0
ld hl, hBoardXShift
sub [hl]
ld b, a
ld a, $10
ld hl, hBoardYShift
sub [hl]
ld c, a
ld a, [$d4af]
ld e, a
ld d, $0
ld hl, $7d51
add hl, de
ld a, [hl]
call LoadOAMData
ret
INCBIN "baserom.gbc",$17d51,$17d59 - $17d51
Func_17d59: ; 0x17d59
ld a, $74
ld hl, hBoardXShift
sub [hl]
ld b, a
ld a, $52
ld hl, hBoardYShift
sub [hl]
ld c, a
ld a, [$d4fe]
ld e, a
ld d, $0
ld hl, $7d76
add hl, de
ld a, [hl]
call LoadOAMData
ret
INCBIN "baserom.gbc",$17d76,$17d7a - $17d76
Func_17d7a: ; 0x17d7a
ld a, [hGameBoyColorFlag]
and a
ret z
ld a, $67
ld hl, hBoardXShift
sub [hl]
ld b, a
ld a, $54
ld hl, hBoardYShift
sub [hl]
ld c, a
ld a, $cc
call LoadOAMData
ret
Func_17d92: ; 0x17d92
ld a, [hGameBoyColorFlag]
and a
ret z
ld hl, $7dd0
ld de, $d504
call Func_28a9
ld a, [$d504]
and a
jr nz, .asm_17db1
ld a, $13
ld [$d504], a
xor a
ld [$d505], a
ld [$d506], a
.asm_17db1
ld a, $2b
ld hl, hBoardXShift
sub [hl]
ld b, a
ld a, $69
ld hl, hBoardYShift
sub [hl]
ld c, a
ld a, [$d505]
ld e, a
ld d, $0
ld hl, $7dce
add hl, de
ld a, [hl]
call LoadOAMData
ret
INCBIN "baserom.gbc",$17dce,$17de1 - $17dce
Func_17de1: ; 0x17de1
ld a, $88
ld hl, hBoardXShift
sub [hl]
ld b, a
ld a, $5a
ld hl, hBoardYShift
sub [hl]
ld c, a
ld a, [$d50a]
srl a
srl a
ld e, a
ld d, $0
ld hl, $7e02
add hl, de
ld a, [hl]
call LoadOAMData
ret
INCBIN "baserom.gbc",$17e02,$17e08 - $17e02
Func_17e08: ; 0x17e08
ld a, [hBoardXShift]
ld d, a
ld a, [hBoardYShift]
ld e, a
ld a, [$d51d]
and a
ld a, [$d518]
jr z, .asm_17e33
ld a, [$d51c]
and a
jr nz, .asm_17e29
ld a, [$ffb3]
srl a
srl a
srl a
and $1
jr .asm_17e33
.asm_17e29
ld a, [$d4b4]
cp $50
ld a, $1
jr nc, .asm_17e33
xor a
.asm_17e33
sla a
ld c, a
ld b, $0
ld hl, $7e4b
add hl, bc
ld a, [hli]
sub d
ld b, a
ld a, [hli]
sub e
ld c, a
ld a, [$d51a]
add $e
call LoadOAMData
ret
INCBIN "baserom.gbc",$17e4b,$17e81 - $17e4b
Func_17e81: ; 0x17e81
ld a, [$d548]
and a
ret z
ld hl, wBallSpin
ld a, [wBallRotation]
add [hl]
ld [wBallRotation], a
ld a, [wBallXPos + 1]
inc a
ld hl, hBoardXShift
sub [hl]
ld b, a
ld a, [wBallYPos + 1]
inc a
sub $10
ld hl, hBoardYShift
sub [hl]
ld c, a
ld a, [wBallRotation]
srl a
srl a
srl a ; divide wBallRotation by 8 because
srl a ; there are 8 frames of the ball spinning
and $7
add $0
call LoadOAMData
ld a, [hGameBoyColorFlag]
and a
ret nz
ld a, [hGameBoyColorFlag]
and a
ret nz
ld a, [$fffb]
and a
ret nz
ld a, [$d4c5]
inc a
ld hl, hBoardXShift
sub [hl]
ld b, a
ld a, [$d4c6]
inc a
sub $10
ld hl, hBoardYShift
sub [hl]
ld c, a
ld a, [$d4c7]
srl a
srl a
srl a
srl a
and $7
add $0
call LoadOAMData
ld a, [wBallXPos + 1]
ld [$d4c5], a
ld a, [wBallYPos + 1]
ld [$d4c6], a
ld a, [wBallRotation]
ld [$d4c7], a
ret
Func_17efb: ; 0x17efb
ld a, [$d551]
and a
ret nz
ld a, [$ffb3]
bit 4, a
ret z
ld de, $d534
ld hl, $7f3a
ld b, $6
jr asm_17f21
Func_17f0f: ; 0x17f0f
ld a, [$d551]
and a
ret nz
ld a, [$ffb3]
bit 4, a
ret z
ld de, $d53a
ld hl, $7f4c
ld b, $8
asm_17f21: ; 0x17f21
push bc
ld a, [hBoardXShift]
ld b, a
ld a, [hli]
sub b
ld b, a
ld a, [hBoardYShift]
ld c, a
ld a, [hli]
sub c
ld c, a
ld a, [de]
and a
ld a, [hli]
call nz, LoadOAMData
pop bc
inc de
dec b
jr nz, asm_17f21
ret
INCBIN "baserom.gbc",$17f3a,$17f64 - $17f3a
Func_17f64: ; 0x17f64
ld a, [$d551]
and a
ret z
ld de, $d566
ld hl, $7fa6
ld b, $c
ld c, $39
jr asm_17f84
Func_17f75: ; 0x17f75
ld a, [$d551]
and a
ret z
ld de, $d572
ld hl, $7fbe
ld b, $6
ld c, $40
asm_17f84: ; 0x17f84
push bc
ld a, [de]
add c
cp c
push af
ld a, [hBoardXShift]
ld b, a
ld a, [hli]
sub b
ld b, a
ld a, [hBoardYShift]
ld c, a
ld a, [hli]
sub c
ld c, a
ld a, [$ffb3]
and $e
jr nz, .asm_17f9c
dec c
.asm_17f9c
pop af
call nz, LoadOAMData
pop bc
inc de
dec b
jr nz, asm_17f84
ret
INCBIN "baserom.gbc",$17fa6,$17fca - $17fa6
Func_17fca: ; 0x17fca
ld a, [$d604]
and a
ret z
ld a, [$d606]
inc a
ld [$d606], a
ld a, $40
ld hl, hBoardXShift
sub [hl]
ld b, a
ld a, $1
ld hl, hBoardYShift
sub [hl]
ld c, a
ld a, [$d606]
srl a
srl a
srl a
and $3
add $4f
cp $52
call nz, LoadOAMData
ret
INCBIN "baserom.gbc",$17ff7,$18000 - $17ff7
SECTION "bank6", ROMX, BANK[$6]
Func_18000: ; 0x18000
ld hl, wc000
ld bc, $0a00
call ClearData
ld a, $1
ld [$ff4f], a
ld hl, $9c00
ld bc, $0400
call ClearData
xor a
ld [$ff4f], a
ld hl, $d4cb
ld bc, $032e
call ClearData
xor a
ld hl, $d46f
ld [hld], a
ld [hld], a
ld [hld], a
ld [hld], a
ld [hld], a
ld [hl], a
ld [wNumPartyMons], a
ld [$d49b], a
ld [$d4c9], a
ld a, $1
ld [$d49d], a
ld a, $3
ld [$d49e], a
ld [$ff8a], a
ld a, Bank(Func_dbba)
ld hl, Func_dbba
call BankSwitch
ret
Func_1804a: ; 0x1804a
ld a, $0
ld [wBallXPos], a
ld a, $b0
ld [wBallXPos + 1], a
ld a, $0
ld [wBallYPos], a
ld a, $98
ld [wBallYPos + 1], a
ret
Func_1805f: ; 0x1805f
ret
Func_18060: ; 0x18060
ret
Func_18061: ; 0x18061
ret
Func_18062: ; 0x18062
ld [$ff8a], a
ld a, Bank(Func_1448e)
ld hl, Func_1448e
call BankSwitch
ret
Func_1806d: ; 0x1806d
ret
Func_1806e: ; 0x1806e
ld [$ff8a], a
ld a, Bank(Func_1652d)
ld hl, Func_1652d
call BankSwitch
ret
Func_18079: ; 0x18079
ld [$ff8a], a
ld a, Bank(Func_17e81)
ld hl, Func_17e81
call BankSwitch
ret
Func_18084: ; 0x18084
ld [$ff8a], a
ld a, Bank(Func_e4a1)
ld hl, Func_e4a1
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_17e81)
ld hl, Func_17e81
call BankSwitch
ret
InitGengarBonusStage: ; 0x18099
ld a, [$d7c1]
and a
jr z, .asm_180ac
xor a
ld [$d674], a
ld a, $8
ld [$d690], a
ld [$d6a1], a
ret
.asm_180ac
ld a, $1
ld [$d7ac], a
ld a, [wBallType]
ld [wBallTypeBackup], a
xor a
ld [$d4c8], a
ld [wBallType], a
ld [$d49a], a
ld hl, $4121 ; todo
ld de, $d659
call Func_18112
call Func_18112
call Func_18112
ld hl, $413c ; todo
ld de, $d67e
call Func_18112
call Func_18112
ld hl, $414e ; todo
ld de, $d698
call Func_18112
xor a
ld [$d67b], a
ld [$d695], a
ld hl, $d6a2
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [$d656], a
ld bc, $0130 ; 1 minute 30 seconds
ld [$ff8a], a
ld a, Bank(StartTimer)
ld hl, StartTimer
call BankSwitch
ld a, $f
call SetSongBank
ld de, $0005
call Func_490
ret
Func_18112: ; 0x18112
ld b, $3
.asm_18114
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
inc de
dec b
jr nz, .asm_18114
ret
INCBIN "baserom.gbc",$18121,$18157 - $18121
StartBallGengarBonusStage: ; 0x18157
ld a, $0
ld [wBallXPos], a
ld a, $a6
ld [wBallXPos + 1], a
ld a, $0
ld [wBallYPos], a
ld a, $56
ld [wBallYPos + 1], a
xor a
ld [$d7ab], a
ld [$d4af], a
ld [$d653], a
xor a
ld [$d674], a
ld a, $8
ld [$d690], a
ld [$d6a1], a
ld a, [$d4c9]
and a
ret z
xor a
ld [$d4c9], a
ret
Func_1818b: ; 0x1818b
ld [$ff8a], a
ld a, Bank(Func_142fc)
ld hl, Func_142fc
call BankSwitch
call Func_2862
call Func_18d72
ld a, [$d7c1]
ld [$ff8a], a
ld a, Bank(Func_1404a)
ld hl, Func_1404a
call BankSwitch
and a
ret z
call Func_183db
call Func_18d91
ret
Func_181b1: ; 0x181b1
call Func_181be
call Func_18259
call Func_182e4
call Func_18350
ret
Func_181be: ; 0x181be
ld a, [$d659]
and a
ret z
ld a, [$d65f]
ld b, a
ld a, [$d661]
add $10
ld c, a
ld a, [$d65b]
call Func_1820d
ld a, $1
jr c, .asm_181fe
ld a, [$d668]
ld b, a
ld a, [$d66a]
add $10
ld c, a
ld a, [$d664]
call Func_1820d
ld a, $2
jr c, .asm_181fe
ld a, [$d671]
ld b, a
ld a, [$d673]
add $10
ld c, a
ld a, [$d66d]
call Func_1820d
ld a, $3
ret nc
.asm_181fe
ld [$d4eb], a
ld [$d657], a
add $4
ld [$d4ea], a
ld [$d658], a
ret
Func_1820d: ; 0x1820d
cp $4
jr z, .asm_18257
ld a, [wBallXPos + 1]
sub b
cp $20
jr nc, .asm_18257
ld b, a
ld a, [wBallYPos + 1]
sub c
cp $20
jr nc, .asm_18257
ld c, a
ld e, c
ld d, $0
sla e
rl d
sla e
rl d
sla e
rl d
sla e
rl d
sla e
rl d
ld l, b
ld h, $0
add hl, de
ld de, $5100
add hl, de
ld a, $3a
call Func_68f
bit 7, a
jr nz, .asm_18257
sla a
ld [$d7ea], a
ld a, $1
ld [$d7e9], a
scf
ret
.asm_18257
and a
ret
Func_18259: ; 0x18259
ld a, [$d67e]
and a
ret z
ld a, [$d684]
add $fe
ld b, a
ld a, [$d686]
add $c
ld c, a
ld a, [$d680]
call Func_18298
ld a, $1
jr c, .asm_18289
ld a, [$d68d]
add $fe
ld b, a
ld a, [$d68f]
add $c
ld c, a
ld a, [$d689]
call Func_18298
ld a, $2
ret nc
.asm_18289
ld [$d4eb], a
ld [$d67c], a
add $7
ld [$d4ea], a
ld [$d67d], a
ret
Func_18298: ; 0x18298
cp $5
jr z, .asm_182e2
ld a, [wBallXPos + 1]
sub b
cp $20
jr nc, .asm_182e2
ld b, a
ld a, [wBallYPos + 1]
sub c
cp $28
jr nc, .asm_182e2
ld c, a
ld e, c
ld d, $0
sla e
rl d
sla e
rl d
sla e
rl d
sla e
rl d
sla e
rl d
ld l, b
ld h, $0
add hl, de
ld de, $4c00
add hl, de
ld a, $3a
call Func_68f
bit 7, a
jr nz, .asm_182e2
sla a
ld [$d7ea], a
ld a, $1
ld [$d7e9], a
scf
ret
.asm_182e2
and a
ret
Func_182e4: ; 0x182e4
ld a, [$d698]
and a
ret z
ld a, [$d69e]
ld b, a
ld a, [$d6a0]
add $c
ld c, a
call Func_18308
ld a, $1
ret nc
ld [$d4eb], a
ld [$d696], a
add $9
ld [$d4ea], a
ld [$d697], a
ret
Func_18308: ; 0x18308
ld a, [wBallXPos + 1]
sub b
cp $30
jr nc, .asm_1834e
ld b, a
ld a, [wBallYPos + 1]
sub c
cp $40
jr nc, .asm_1834e
ld c, a
ld a, c
sla a
add c
ld e, a
ld d, $0
sla e
rl d
sla e
rl d
sla e
rl d
sla e
rl d
ld l, b
ld h, $0
add hl, de
ld de, $4000
add hl, de
ld a, $3a
call Func_68f
bit 7, a
jr nz, .asm_1834e
sla a
ld [$d7ea], a
ld a, $1
ld [$d7e9], a
scf
ret
.asm_1834e
and a
ret
Func_18350: ; 0x18350
ld de, $4368 ; todo
ld hl, $435d ; todo
ld bc, $d654
and a
jp Func_2775
INCBIN "baserom.gbc",$1835d,$18377 - $1835d
Func_18377: ; 0x18377
call Func_18464
call Func_1860b
call Func_187b1
call Func_18d34
call Func_183b7
ld [$ff8a], a
ld a, Bank(Func_107f8)
ld hl, Func_107f8
call BankSwitch
ld a, [$d57e]
and a
ret z
xor a
ld [$d57e], a
ld a, $1
ld [$d7be], a
call Func_2862
ld [$ff8a], a
ld a, Bank(Func_86d2)
ld hl, Func_86d2
call BankSwitch
ld a, [$d6a2]
cp $5
ret nc
ld a, $1
ld [$d6a8], a
ret
Func_183b7: ; 0x183b7
ld a, [$d653]
and a
ret nz
ld a, [$d4b4]
cp $8a
ret nc
ld a, $1
ld [$d4af], a
ld [$d653], a
ld [$ff8a], a
ld a, Bank(Func_e578)
ld hl, Func_e578
call BankSwitch
call Func_183db
call Func_18d91
ret
Func_183db: ; 0x183db
ld a, [$d4af]
sla a
ld c, a
ld b, $0
ld hl, $43f8
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_183ee
ld hl, $442e
.asm_183ee
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld a, $6
call Func_10aa
ret
INCBIN "baserom.gbc",$183f8,$18464 - $183f8
Func_18464: ; 0x18464
ld a, [$d659]
and a
ret z
ld a, [$d657]
and a
jr z, .asm_184d5
xor a
ld [$d657], a
ld a, [$d7be]
and a
jr nz, .asm_184d5
ld a, [$d658]
sub $5
ld c, a
sla a
sla a
sla a
add c
ld c, a
ld b, $0
ld hl, $d65d
add hl, bc
ld d, h
ld e, l
ld a, [de]
and a
jr nz, .asm_184d5
push de
dec de
dec de
dec de
ld hl, $45e6
call Func_28a0
pop de
ld a, $1
ld [de], a
ld a, [$d67b]
inc a
ld [$d67b], a
ld bc, $34d6
ld [$ff8a], a
ld a, Bank(Func_8588)
ld hl, Func_8588
call BankSwitch
ld a, $33
ld [$d803], a
ld a, $8
ld [$d804], a
ld hl, $0100
ld a, l
ld [$d7bc], a
ld a, h
ld [$d7bd], a
ld a, $80
ld [wFlipperCollision], a
ld de, $002c
call PlaySoundEffect
.asm_184d5
ld bc, $0830
ld de, $d65d
ld hl, $d675
call Func_1850c
ld bc, $5078
ld de, $d666
ld hl, $d677
call Func_1850c
ld bc, $3050
ld de, $d66f
ld hl, $d679
call Func_1850c
ld de, $d65d
call Func_18562
ld de, $d666
call Func_18562
ld de, $d66f
call Func_18562
ret
Func_1850c: ; 0x1850c
ld a, [de]
and a
ret nz
inc de
push hl
ld a, [hli]
push af
push bc
ld a, [hl]
inc a
and $1f
ld [hl], a
ld c, a
ld b, $0
ld hl, $4542
add hl, bc
pop bc
pop af
and a
jr nz, .asm_18534
ld a, [de]
add [hl]
ld [de], a
inc de
ld a, [de]
adc $0
ld [de], a
pop hl
cp c
ret c
ld a, $1
ld [hl], a
ret
.asm_18534
ld a, [de]
sub [hl]
ld [de], a
inc de
ld a, [de]
sbc $0
ld [de], a
pop hl
cp b
ret nc
xor a
ld [hl], a
ret
INCBIN "baserom.gbc",$18542,$18562 - $18542
Func_18562: ; 0x18562
ld a, [de]
sla a
ld c, a
ld b, $0
ld hl, $45d9
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
push de
dec de
dec de
dec de
call Func_28a9
pop de
ret nc
ld a, [de]
dec de
and a
jr nz, .asm_1858a
ld a, [de]
cp $4
ret nz
ld hl, $45dd
dec de
dec de
call Func_28a0
ret
.asm_1858a
cp $1
ret nz
ld a, [de]
cp $12
ret nz
ld a, [$d67b]
cp $a
jr nz, .asm_185b1
ld a, $1
ld [$d67e], a
ld [$d687], a
xor a
ld [$d659], a
ld [$d662], a
ld [$d66b], a
ld de, $0006
call Func_490
ret
.asm_185b1
ld c, a
ld a, [$d65d]
and a
jr nz, .asm_185b9
inc c
.asm_185b9
ld a, [$d666]
and a
jr nz, .asm_185c0
inc c
.asm_185c0
ld a, [$d66f]
and a
jr nz, .asm_185c7
inc c
.asm_185c7
ld a, c
cp $a
ret nc
ld hl, $45dd
push de
dec de
dec de
call Func_28a0
pop de
inc de
xor a
ld [de], a
ret
INCBIN "baserom.gbc",$185d9,$1860b - $185d9
Func_1860b: ; 0x1860b
ld a, [$d67e]
and a
ret z
ld a, [$d67c]
and a
jr z, .asm_1867c
xor a
ld [$d67c], a
ld a, [$d7be]
and a
jr nz, .asm_1867c
ld a, [$d67d]
sub $8
ld c, a
sla a
sla a
sla a
add c
ld c, a
ld b, $0
ld hl, $d682
add hl, bc
ld d, h
ld e, l
ld a, [de]
and a
jr nz, .asm_1867c
push de
dec de
dec de
dec de
ld hl, $478a
call Func_28a0
pop de
ld a, $1
ld [de], a
ld a, [$d695]
inc a
ld [$d695], a
ld bc, $34e2
ld [$ff8a], a
ld a, Bank(Func_8588)
ld hl, Func_8588
call BankSwitch
ld a, $33
ld [$d803], a
ld a, $8
ld [$d804], a
ld hl, $0100
ld a, l
ld [$d7bc], a
ld a, h
ld [$d7bd], a
ld a, $80
ld [wFlipperCollision], a
ld de, $002d
call PlaySoundEffect
.asm_1867c
ld bc, $5078
ld de, $d682
ld hl, $d691
call Func_186a1
ld bc, $1038
ld de, $d68b
ld hl, $d693
call Func_186a1
ld de, $d682
call Func_186f7
ld de, $d68b
call Func_186f7
ret
Func_186a1: ; 0x186a1
ld a, [de]
and a
ret nz
inc de
push hl
ld a, [hli]
push af
push bc
ld a, [hl]
inc a
and $1f
ld [hl], a
ld c, a
ld b, $0
ld hl, $46d7
add hl, bc
pop bc
pop af
and a
jr nz, .asm_186c9
ld a, [de]
add [hl]
ld [de], a
inc de
ld a, [de]
adc $0
ld [de], a
pop hl
cp c
ret c
ld a, $1
ld [hl], a
ret
.asm_186c9
ld a, [de]
sub [hl]
ld [de], a
inc de
ld a, [de]
sbc $0
ld [de], a
pop hl
cp b
ret nc
xor a
ld [hl], a
ret
INCBIN "baserom.gbc",$186d7,$186f7 - $186d7
Func_186f7: ; 0x186f7
ld a, [de]
sla a
ld c, a
ld b, $0
ld hl, $477d
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
push de
dec de
dec de
dec de
call Func_28a9
pop de
ret nc
ld a, [de]
dec de
and a
jr nz, .asm_1871f
ld a, [de]
cp $4
ret nz
ld hl, $4781
dec de
dec de
call Func_28a0
ret
.asm_1871f
cp $1
ret nz
ld a, [de]
cp $12
jr nz, .asm_18761
ld a, [$d695]
cp $a
jr nz, .asm_18740
ld a, $1
ld [$d656], a
call Func_18d72
call Func_18d91
ld de, $0000
call Func_490
ret
.asm_18740
ld c, a
ld a, [$d682]
and a
jr nz, .asm_18748
inc c
.asm_18748
ld a, [$d68b]
and a
jr nz, .asm_1874f
inc c
.asm_1874f
ld a, c
cp $a
ret nc
ld hl, $4781
push de
dec de
dec de
call Func_28a0
pop de
inc de
xor a
ld [de], a
ret
.asm_18761
cp $13
ret nz
ld a, [$d695]
cp $a
ret nz
ld a, $1
ld [$d698], a
xor a
ld [$d67e], a
ld [$d687], a
ld de, $005e
call Func_4ef
ret
INCBIN "baserom.gbc",$1877d,$187b1 - $1877d
Func_187b1: ; 0x187b1
ld a, [$d698]
and a
ret z
ld a, [$d696]
and a
jp z, .asm_1885d
xor a
ld [$d696], a
ld a, [$d7be]
and a
jp nz, .asm_1885d
ld a, [$d697]
sub $a
ld c, a
sla a
sla a
sla a
add c
ld c, a
ld b, $0
ld hl, $d69c
add hl, bc
ld d, h
ld e, l
ld a, [de]
and a
jp nz, .asm_1885d
push de
dec de
dec de
dec de
ld a, [$d6a2]
inc a
ld [$d6a2], a
cp $5
jr nc, .asm_18804
ld hl, $4b2b
call Func_28a0
pop de
ld a, $2
ld [de], a
ld de, $0037
call PlaySoundEffect
jr .asm_18826
.asm_18804
ld hl, $4b32
call Func_28a0
pop de
ld a, $3
ld [de], a
ld a, $1
ld [$d7be], a
call Func_2862
ld [$ff8a], a
ld a, Bank(Func_86d2)
ld hl, Func_86d2
call BankSwitch
ld de, $0000
call Func_490
.asm_18826
ld bc, $34ee
ld [$ff8a], a
ld a, Bank(Func_8588)
ld hl, Func_8588
call BankSwitch
ld a, $33
ld [$d803], a
ld a, $8
ld [$d804], a
ld hl, $0200
ld a, l
ld [$d7bc], a
ld a, h
ld [$d7bd], a
ld a, $80
ld [wFlipperCollision], a
ld a, [$d69f]
add $0
ld [$d69f], a
ld a, [$d6a0]
adc $ff
ld [$d6a0], a
.asm_1885d
ld a, [$d69c]
cp $2
jr nc, .asm_18869
call Func_18876
jr .asm_1886c
.asm_18869
call Func_188e1
.asm_1886c
ld de, $d69c
call Func_189af
call Func_1894c
ret
Func_18876: ; 0x18876
ld a, [$d6a3]
cp $1
jr z, .asm_1889b
cp $2
jr z, .asm_1889b
ld a, [$d69a]
cp $1
jr z, .asm_1888c
cp $2
jr nz, .asm_1889b
.asm_1888c
ld a, $1
ld [$d6a4], a
ld a, $11
ld [$d803], a
ld a, $8
ld [$d804], a
.asm_1889b
ld a, [$d69a]
ld hl, $d6a3
cp [hl]
ret z
ld a, [$d69c]
and a
jr nz, .asm_188da
ld a, [$d6a0]
add $80
cp $a0
jr nc, .asm_188da
ld a, [$d69a]
and a
jr z, .asm_188ca
ld a, [$d69f]
add $0
ld [$d69f], a
ld a, [$d6a0]
adc $3
ld [$d6a0], a
jr .asm_188da
.asm_188ca
ld a, [$d69f]
add $0
ld [$d69f], a
ld a, [$d6a0]
adc $1
ld [$d6a0], a
.asm_188da
ld a, [$d69a]
ld [$d6a3], a
ret
Func_188e1: ; 0x188e1
ld a, [$d6a3]
cp $1
jr z, .asm_18901
cp $2
jr z, .asm_18901
ld a, [$d69a]
cp $1
jr z, .asm_188f7
cp $2
jr nz, .asm_18901
.asm_188f7
ld a, $1
ld [$d803], a
ld a, $8
ld [$d804], a
.asm_18901
ld a, [$d69a]
cp $6
ret z
ld a, [$d69a]
ld hl, $d6a3
cp [hl]
ret z
ld a, [$d69c]
cp $3
jr nz, .asm_1891d
ld a, [$d69b]
cp $9
jr c, .asm_18945
.asm_1891d
ld a, [$d69a]
and a
jr z, .asm_18935
ld a, [$d69f]
add $0
ld [$d69f], a
ld a, [$d6a0]
adc $fd
ld [$d6a0], a
jr .asm_18945
.asm_18935
ld a, [$d69f]
add $0
ld [$d69f], a
ld a, [$d6a0]
adc $ff
ld [$d6a0], a
.asm_18945
ld a, [$d69a]
ld [$d6a3], a
ret
Func_1894c: ; 0x1894c
ld a, [$d6a6]
and a
jr nz, .asm_1898f
ld a, [$d6a4]
and a
jr z, .asm_1898f
ld a, [$d6a5]
cp $3
jr z, .asm_18980
inc a
ld [$d6a5], a
ld a, [$d548]
ld hl, $d549
and [hl]
jr z, .asm_18973
ld a, [$d4b6]
inc a
ld [$d4b6], a
.asm_18973
ld a, [$d7a0]
dec a
ld [$d7a0], a
ld a, $1
ld [wUpperTiltPushing], a
ret
.asm_18980
ld de, $002b
call PlaySoundEffect
ld a, $1
ld [$d6a6], a
xor a
ld [$d6a4], a
.asm_1898f
xor a
ld [wUpperTiltPushing], a
ld a, [$d6a5]
and a
jr z, .asm_189a5
dec a
ld [$d6a5], a
ld a, [$d7a0]
inc a
ld [$d7a0], a
ret
.asm_189a5
ld a, [$d6a4]
and a
ret nz
xor a
ld [$d6a6], a
ret
Func_189af: ; 0x189af
ld a, [de]
sla a
ld c, a
ld b, $0
ld hl, $4a57
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
push de
dec de
dec de
dec de
call Func_28a9
pop de
ret nc
ld a, [de]
dec de
and a
jr nz, .asm_189d7
ld a, [de]
cp $4
ret nz
ld hl, $4a61
dec de
dec de
call Func_28a0
ret
.asm_189d7
cp $1
jr nz, .asm_189ed
ld a, [de]
cp $60
ret nz
ld hl, $4a61
push de
dec de
dec de
call Func_28a0
pop de
inc de
xor a
ld [de], a
ret
.asm_189ed
cp $2
jr nz, .asm_18a04
ld a, [de]
cp $3
ret nz
ld hl, $4a6a
push de
dec de
dec de
call Func_28a0
pop de
inc de
ld a, $1
ld [de], a
ret
.asm_18a04
cp $3
jr nz, .asm_18a3c
ld a, [de]
cp $1
jr nz, .asm_18a14
ld de, $002e
call PlaySoundEffect
ret
.asm_18a14
cp $fe
ret nz
ld a, $1
ld [$d6a8], a
ld a, $1
ld [$d498], a
ld a, $1
ld [$d49a], a
call Func_30e8
call Func_30db
ld hl, $d5dc
ld de, $2f7b
call Func_32aa
ld de, $4b2a
call PlaySoundEffect
ret
.asm_18a3c
cp $4
ret nz
ld a, [de]
cp $2
ret nz
ld hl, $4a61
push de
dec de
dec de
call Func_28a0
pop de
inc de
xor a
ld [de], a
ld de, $0007
call Func_490
ret
INCBIN "baserom.gbc",$18a57,$18d34 - $18a57
Func_18d34: ; 0x18d34
ld a, [$d654]
and a
jr z, .asm_18d71
xor a
ld [$d654], a
ld a, [$d7be]
and a
jr nz, .asm_18d71
ld bc, $34b2
ld [$ff8a], a
ld a, Bank(Func_8588)
ld hl, Func_8588
call BankSwitch
ld a, $ff
ld [$d803], a
ld a, $3
ld [$d804], a
ld hl, $0100
ld a, l
ld [$d7bc], a
ld a, h
ld [$d7bd], a
ld a, $80
ld [wFlipperCollision], a
ld de, $002f
call Func_4d8
.asm_18d71
ret
Func_18d72: ; 0x18d72
ld a, [$d656]
sla a
ld c, a
ld b, $0
ld hl, $4ddb
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_18d85
ld hl, $4ed1
.asm_18d85
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
or h
ret z
ld a, $6
call Func_10aa
ret
Func_18d91: ; 0x18d91
ld a, [$d656]
and a
ld hl, $4dc9
jr z, .asm_18d9d
ld hl, $4dd2
.asm_18d9d
ld de, $c7c7
call Func_18db2
ld de, $c7ae
call Func_18db2
ld de, $c823
call Func_18db2
ld de, $c84d
; fall through
Func_18db2: ; 0x18db2
push hl
ld b, $3
.asm_18db5
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
ld a, e
add $1e
ld e, a
jr nc, .asm_18dc4
inc d
.asm_18dc4
dec b
jr nz, .asm_18db5
pop hl
ret
INCBIN "baserom.gbc",$18dc9,$18faf - $18dc9
Func_18faf: ; 0x18faf
ld bc, $7f00
ld [$ff8a], a
ld a, Bank(Func_175a4)
ld hl, Func_175a4
call BankSwitch
call Func_19020
call Func_190b9
call Func_19185
ld [$ff8a], a
ld a, Bank(Func_e4a1)
ld hl, Func_e4a1
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_17e81)
ld hl, Func_17e81
call BankSwitch
ret
INCBIN "baserom.gbc",$18fda,$19020 - $18fda
Func_19020: ; 0x19020
ld de, $d659
call Func_19033
ld de, $d662
call Func_19033
ld de, $d66b
call Func_19033
ret
Func_19033: ; 0x19033
ld a, [de]
and a
ret z
.asm_19036
call Func_19070
jr nc, .asm_19042
ld a, [$ff40]
bit 7, a
jr z, .asm_19036
ret
.asm_19042
inc de
inc de
inc de
inc de
inc de
inc de
ld a, [de]
ld hl, hBoardXShift
sub [hl]
ld b, a
inc de
inc de
ld a, [de]
ld hl, hBoardYShift
sub [hl]
ld c, a
dec de
dec de
dec de
dec de
dec de
dec de
ld a, [de]
ld e, a
ld d, $0
ld hl, $506b
add hl, de
ld a, [hl]
cp $ff
call nz, Func_1f0b
ret
INCBIN "baserom.gbc",$1906b,$19070 - $1906b
Func_19070: ; 0x19070
ld a, [$d674]
and a
ret z
push de
dec a
ld [$d674], a
sla a
sla a
ld c, a
ld b, $0
ld hl, $50a9
add hl, bc
ld a, [hli]
ld e, a
ld a, [hli]
ld d, a
ld a, [hli]
ld h, [hl]
ld l, a
ld a, $22
ld bc, $0060
call Func_735
ld a, $8
ld [$d690], a
ld [$d6a1], a
xor a
ld [$d67e], a
ld [$d687], a
ld [$d698], a
pop de
scf
ret
INCBIN "baserom.gbc",$190a9,$190b9 - $190a9
Func_190b9: ; 0x190b9
ld de, $d67e
call Func_190c6
ld de, $d687
call Func_190c6
ret
Func_190c6: ; 0x190c6
ld a, [de]
and a
ret z
.asm_190c9
call Func_19104
jr nc, .asm_190d5
ld a, [$ff40]
bit 7, a
jr z, .asm_190c9
ret
.asm_190d5
inc de
inc de
inc de
inc de
inc de
inc de
ld a, [de]
ld hl, hBoardXShift
sub [hl]
ld b, a
inc de
inc de
ld a, [de]
ld hl, hBoardYShift
sub [hl]
ld c, a
dec de
dec de
dec de
dec de
dec de
dec de
ld a, [de]
ld e, a
ld d, $0
ld hl, $50fe
add hl, de
ld a, [hl]
cp $ff
call nz, Func_1f0b
ret
INCBIN "baserom.gbc",$190fe,$19104 - $190fe
Func_19104: ; 0x19104
ld a, [$d690]
and a
ret z
push de
dec a
ld [$d690], a
sla a
sla a
sla a
ld c, a
ld b, $0
ld hl, $5145
add hl, bc
ld a, [hli]
ld c, a
ld a, [hli]
ld b, a
ld a, [hli]
ld e, a
ld a, [hli]
ld d, a
ld a, [hli]
ld h, [hl]
ld l, a
ld a, $21
call Func_735
ld a, $4
ld [$d674], a
ld a, $8
ld [$d6a1], a
xor a
ld [$d659], a
ld [$d662], a
ld [$d66b], a
ld [$d698], a
pop de
scf
ret
INCBIN "baserom.gbc",$19145,$19185 - $19145
Func_19185: ; 0x19185
ld de, $d698
call Func_1918c
ret
Func_1918c: ; 0x1918c
ld a, [de]
and a
ret z
.asm_1918f
call Func_191cb
jr nc, .asm_1919b
ld a, [$ff40]
bit 7, a
jr z, .asm_1918f
ret
.asm_1919b
inc de
inc de
inc de
inc de
inc de
inc de
ld a, [de]
ld hl, hBoardXShift
sub [hl]
ld b, a
inc de
inc de
ld a, [de]
ld hl, hBoardYShift
sub [hl]
ld c, a
dec de
dec de
dec de
dec de
dec de
dec de
ld a, [de]
ld e, a
ld d, $0
ld hl, $51c4
add hl, de
ld a, [hl]
cp $ff
call nz, Func_1f0b
ret
INCBIN "baserom.gbc",$191c4,$191cb - $191c4
Func_191cb: ; 0x191cb
ld a, [$d6a1]
and a
ret z
push de
dec a
ld [$d6a1], a
sla a
sla a
sla a
ld c, a
ld b, $0
ld hl, $520f
add hl, bc
ld a, [hli]
ld c, a
ld a, [hli]
ld b, a
ld a, [hli]
ld e, a
ld a, [hli]
ld d, a
ld a, [hli]
ld h, [hl]
ld l, a
ld a, $26
call Func_735
ld a, $4
ld [$d674], a
ld a, $8
ld [$d690], a
xor a
ld [$d659], a
ld [$d662], a
ld [$d66b], a
ld [$d67e], a
ld [$d687], a
pop de
scf
ret
INCBIN "baserom.gbc",$1920f,$1924f - $1920f
InitMewtwoBonusStage: ; 0x1924f
ld a, [$d7c1]
and a
ret nz
xor a
ld [$d4af], a
ld a, $1
ld [$d7ac], a
ld a, [wBallType]
ld [wBallTypeBackup], a
xor a
ld [$d4c8], a
ld [wBallType], a
ld [$d49a], a
ld hl, $52ab ; todo
ld de, $d6b6
ld b, $c
.asm_19275
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
inc de
dec b
jr nz, .asm_19275
ld hl, $52db ; todo
ld de, $d6ac
ld b, $8
.asm_1928c
ld a, [hli]
ld [de], a
inc de
dec b
jr nz, .asm_1928c
ld bc, $0200 ; 2 minutes 0 seconds
ld [$ff8a], a
ld a, Bank(StartTimer)
ld hl, StartTimer
call BankSwitch
ld a, $12
call SetSongBank
ld de, $0001
call Func_490
ret
INCBIN "baserom.gbc",$192ab,$192e3 - $192ab
StartBallMewtwoBonusStage: ; 0x192e3
ld a, $0
ld [wBallXPos], a
ld a, $a6
ld [wBallXPos + 1], a
ld a, $0
ld [wBallYPos], a
ld a, $56
ld [wBallYPos + 1], a
ld a, $80
ld [wBallXVelocity], a
xor a
ld [$d7ab], a
ld [$d4af], a
ld [$d6a9], a
ld a, [$d4c9]
and a
ret z
xor a
ld [$d4c9], a
ret
Func_19310: ; 0x19310
ld [$ff8a], a
ld a, Bank(Func_142fc)
ld hl, Func_142fc
call BankSwitch
call Func_2862
ld [$ff8a], a
ld a, Bank(Func_1404a)
ld hl, Func_1404a
call BankSwitch
ld a, [$d7c1]
and a
ret z
call Func_194ac
ret
Func_19330: ; 0x19330
call Func_19414
call Func_19337
ret
Func_19337: ; 0x19337
ld hl, $d6bb
ld bc, $0601
.asm_1933d
push bc
push hl
ld a, [hli]
add $f8
ld b, a
ld a, [hld]
add $8
ld c, a
dec hl
dec hl
dec hl
ld a, [hl]
dec hl
dec hl
bit 0, [hl]
call nz, Func_1936f
pop hl
pop bc
ld a, c
jr c, .asm_19360
ld de, $0008
add hl, de
inc c
dec b
jr nz, .asm_1933d
ret
.asm_19360
ld [$d4eb], a
ld [$d6b4], a
add $0
ld [$d4ea], a
ld [$d6b5], a
ret
Func_1936f: ; 0x1936f
cp $b
jp z, Func_19412
ld a, [wBallXPos + 1]
sub b
cp $20
jp nc, Func_19412
ld b, a
ld a, [wBallYPos + 1]
sub c
cp $20
jp nc, Func_19412
ld c, a
ld e, a
ld d, $0
sla e
rl d
sla e
rl d
sla e
rl d
sla e
rl d
sla e
rl d
ld l, b
ld h, $0
add hl, de
sla l
rl h
sla l
rl h
ld de, $4000
add hl, de
ld de, wBallXVelocity
ld a, $39
call Func_68f
ld c, a
ld a, [de]
add c
ld [de], a
inc de
inc hl
ld a, $39
call Func_68f
ld b, a
ld a, [de]
adc b
ld [de], a
inc de
inc hl
push bc
ld a, $39
call Func_68f
ld c, a
ld a, [de]
add c
ld [de], a
inc de
inc hl
ld a, $39
call Func_68f
ld b, a
ld a, [de]
adc b
ld [de], a
inc de
inc hl
bit 7, b
jr z, .asm_193ea
ld a, c
cpl
ld c, a
ld a, b
cpl
ld b, a
inc bc
.asm_193ea
pop hl
bit 7, h
jr z, .asm_193f6
ld a, l
cpl
ld l, a
ld a, h
cpl
ld h, a
inc hl
.asm_193f6
add hl, bc
sla l
rl h
ld a, h
cp $2
jr c, .asm_19410
ld a, [$d804]
and a
jr nz, .asm_19410
ld a, $5
ld [$d803], a
ld a, $8
ld [$d804], a
.asm_19410
scf
ret
Func_19412: ; 0x19312
and a
ret
Func_19414: ; 0x19414
ld a, [$d4ea]
inc a
jr nz, .asm_1944f
ld a, [$d6aa]
bit 7, a
jr nz, .asm_1944f
ld a, [$d7e9]
and a
ret z
ld a, [$d7f5]
sub $10
ret c
cp $c
ret nc
ld a, $1
ld [$d4eb], a
add $6
ld [$d4ea], a
ld b, a
ld hl, $d6aa
ld [hl], $0
ld a, [$d4ec]
cp b
jr z, .asm_1944f
ld a, [$d4eb]
ld [hli], a
ld a, [$d4ea]
ld [hl], a
scf
ret
.asm_1944f
and a
ret
Func_19451: ; 0x19451
call Func_19531
call Func_19701
call Func_1948b
ld [$ff8a], a
ld a, Bank(Func_107f8)
ld hl, Func_107f8
call BankSwitch
ld a, [$d57e]
and a
ret z
xor a
ld [$d57e], a
ld a, $1
ld [$d7be], a
call Func_2862
ld [$ff8a], a
ld a, Bank(Func_86d2)
ld hl, Func_86d2
call BankSwitch
ld a, [$d6b1]
cp $8
ret nc
ld a, $1
ld [$d6b3], a
ret
Func_1948b: ; 0x1948b
ld a, [$d6a9]
and a
ret nz
ld a, [$d4b4]
cp $8a
ret nc
ld a, $1
ld [$d4af], a
ld [$d6a9], a
ld [$ff8a], a
ld a, Bank(Func_e578)
ld hl, Func_e578
call BankSwitch
call Func_194ac
ret
Func_194ac: ; 0x194ac
ld a, [$d4af]
sla a
ld c, a
ld b, $0
ld hl, $54c9
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_194bf
ld hl, $54fd
.asm_194bf
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld a, $6
call Func_10aa
ret
INCBIN "baserom.gbc",$194c9,$19531 - $194c9
Func_19531: ; 0x19531
ld a, [$d6aa]
and a
jr z, .asm_195a2
xor a
ld [$d6aa], a
ld a, [$d7be]
and a
jr nz, .asm_195a2
ld a, [$d6af]
cp $2
jr nc, .asm_195a2
ld bc, $34ee
ld [$ff8a], a
ld a, Bank(Func_8588)
ld hl, Func_8588
call BankSwitch
ld a, [$d6b0]
inc a
cp $3
jr nz, .asm_19565
ld a, [$d6b1]
inc a
ld [$d6b1], a
xor a
.asm_19565
ld [$d6b0], a
call Func_1988e
ld a, [$d6b1]
cp $8
jr z, .asm_19582
ld a, $2
ld de, $d6ae
call Func_19679
ld de, $0039
call PlaySoundEffect
jr .asm_195a2
.asm_19582
ld a, $3
ld de, $d6ae
call Func_19679
ld a, $1
ld [$d7be], a
call Func_2862
ld [$ff8a], a
ld a, Bank(Func_86d2)
ld hl, Func_86d2
call BankSwitch
ld de, $0000
call Func_490
.asm_195a2
call Func_195ac
ld de, $d6af
call Func_195f5
ret
Func_195ac: ; 0x195ac
ld a, [$d6af]
and a
ret nz
ld hl, $d6bd
ld de, $0008
ld b, $6
.asm_195b9
ld a, [hl]
cp $2b
jr nz, .asm_195ce
dec hl
dec hl
dec hl
ld a, [hl]
cp $2
ret nz
ld a, $1
ld de, $d6ae
call Func_19679
ret
.asm_195ce
add hl, de
dec b
jr nz, .asm_195b9
ret
Func_195d3: ; 0x195d3
ld hl, $d6bd
ld de, $0008
ld b, $6
.asm_195db
ld a, [hl]
cp $18
jr nz, .asm_195f0
dec hl
dec hl
dec hl
ld a, [hl]
cp $2
ret nz
ld d, h
ld e, l
dec de
ld a, $1
call Func_19876
ret
.asm_195f0
add hl, de
dec b
jr nz, .asm_195db
ret
Func_195f5: ; 0x195f5
ld a, [de]
sla a
ld c, a
ld b, $0
ld hl, $5691
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
push de
dec de
dec de
dec de
call Func_28a9
pop de
ret nc
ld a, [de]
rst $18 ; calls JumpToFuncInTable
CallTable_1960d: ; 0x1960d
dw Func_19615
dw Func_1961e
dw Func_1962f
dw Func_19638
Func_19615: ; 0x19615
dec de
ld a, [de]
cp $4
ret nz
xor a
jp Func_19679
Func_1961e: ; 0x1961e
dec de
ld a, [de]
cp $c
jr nz, .asm_19628
call Func_195d3
ret
.asm_19628
cp $d
ret nz
xor a
jp Func_19679
Func_1962f: ; 0x1962f
dec de
ld a, [de]
cp $1
ret nz
xor a
jp Func_19679
Func_19638: ; 0x19638
dec de
ld a, [de]
cp $1
jr nz, .asm_19645
ld de, $0040
call PlaySoundEffect
ret
.asm_19645
cp $20
ret nz
ld a, $1
ld [$d6b3], a
ld a, [$d499]
ld [$d498], a
ld a, [wNumMewtwoBonusCompletions]
cp $2 ; only counts up to 2. Gets reset to 0 when Mew is encountered in Catch 'Em Mode.
jr z, .asm_1965e
inc a
ld [wNumMewtwoBonusCompletions], a
.asm_1965e
ld a, $1
ld [$d49a], a
call Func_30e8
call Func_30db
ld hl, $d5dc
.asm_1966b
ld de, $2f97
call Func_32aa
ld de, $4b2a
call PlaySoundEffect
ret
Func_19679: ; 0x19679
push af
sla a
ld c, a
ld b, $0
ld hl, $5691
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
push de
dec de
dec de
call Func_28a0
pop de
inc de
pop af
ld [de], a
ret
INCBIN "baserom.gbc",$19691,$19701 - $19691
Func_19701: ; 0x19701
ld a, [$d6b4]
and a
jr z, .asm_19742
xor a
ld [$d6b4], a
ld a, [$d7be]
and a
jr nz, .asm_19742
ld a, [$d6b5]
sub $1
sla a
sla a
sla a
ld c, a
ld b, $0
ld hl, $d6ba
add hl, bc
ld d, h
ld e, l
ld a, [de]
and a
jr nz, .asm_19742
dec de
ld a, $2
call Func_19876
ld bc, $34d6
ld [$ff8a], a
ld a, Bank(Func_8588)
ld hl, Func_8588
call BankSwitch
ld de, $0038
call PlaySoundEffect
.asm_19742
ld de, $d6bd
call Func_1978b
ld de, $d6c5
call Func_1978b
ld de, $d6cd
call Func_1978b
ld de, $d6d5
call Func_1978b
ld de, $d6dd
call Func_1978b
ld de, $d6e5
call Func_1978b
ld de, $d6b6
call Func_19833
ld de, $d6be
call Func_19833
ld de, $d6c6
call Func_19833
ld de, $d6ce
call Func_19833
ld de, $d6d6
call Func_19833
ld de, $d6de
call Func_19833
ret
Func_1978b: ; 0x1978b
ld a, [de]
ld c, a
ld b, $0
sla c
inc a
cp $48
jr c, .asm_19797
xor a
.asm_19797
ld [de], a
ld hl, $57a4
add hl, bc
dec de
ld a, [hld]
ld [de], a
dec de
ld a, [hl]
ld [de], a
ret
INCBIN "baserom.gbc",$197a3,$19833 - $197a3
Func_19833: ; 0x19833
ld a, [de]
and a
ret z
inc de
inc de
inc de
inc de
ld a, [de]
sla a
ld c, a
ld b, $0
ld hl, $5916
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
push de
dec de
dec de
dec de
call Func_28a9
pop de
ret nc
ld a, [de]
rst $18 ; calls JumpToFuncInTable
CallTable_19852: ; 0x19852
dw Func_1985a
dw Func_19863
dw Func_1986c
dw Func_1986d
Func_1985a: ; 0x1985a
dec de
ld a, [de]
cp $6
ret nz
xor a
jp Func_19876
Func_19863: ; 0x19863
dec de
ld a, [de]
cp $7
ret nz
xor a
jp Func_19876
Func_1986c: ; 0x1986c
ret
Func_1986d: ; 0x1986d
dec de
ld a, [de]
cp $1
ret nz
xor a
jp Func_19876
Func_19876: ; 0x19876
push af
sla a
ld c, a
ld b, $0
ld hl, $5916
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
push de
dec de
dec de
call Func_28a0
pop de
inc de
pop af
ld [de], a
ret
Func_1988e: ; 0x1988e
ld a, [$d6b1]
sla a
sla a
sla a
ld c, a
ld b, $0
ld hl, $58ce
add hl, bc
ld de, $d6bd
ld b, $6
.asm_198a3
ld a, [hli]
push bc
push de
push hl
bit 7, a
jr nz, .asm_198b7
ld [de], a
dec de
dec de
dec de
dec de
ld a, $3
call Func_19876
jr .asm_198c0
.asm_198b7
dec de
dec de
dec de
dec de
dec de
dec de
dec de
xor a
ld [de], a
.asm_198c0
pop hl
pop de
pop bc
ld a, e
add $8
ld e, a
jr nc, .asm_198ca
inc d
.asm_198ca
dec b
jr nz, .asm_198a3
ret
INCBIN "baserom.gbc",$198ce,$1994e - $198ce
Func_1994e: ; 0x1994e
ld bc, $7f65
ld [$ff8a], a
ld a, Bank(Func_175a4)
ld hl, Func_175a4
call BankSwitch
call Func_1999d
ld [$ff8a], a
ld a, Bank(Func_e4a1)
ld hl, Func_e4a1
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_17e81)
ld hl, Func_17e81
call BankSwitch
call Func_19976
ret
Func_19976: ; 0x19976
ld a, $40
ld hl, hBoardXShift
sub [hl]
ld b, a
ld a, $0
ld hl, hBoardYShift
sub [hl]
ld c, a
ld a, [$d6ad]
ld e, a
ld d, $0
ld hl, $5995
add hl, de
ld a, [hl]
cp $ff
call nz, Func_1f0b
ret
INCBIN "baserom.gbc",$19995,$1999d - $19995
Func_1999d: ; 0x1999d
ld de, $d6b6
call Func_199be
ld de, $d6be
call Func_199be
ld de, $d6c6
call Func_199be
ld de, $d6ce
call Func_199be
ld de, $d6d6
call Func_199be
ld de, $d6de
; fall through
Func_199be: ; 0x199be
ld a, [de]
and a
ret z
inc de
inc de
inc de
inc de
inc de
ld a, [de]
ld hl, hBoardXShift
sub [hl]
ld b, a
inc de
ld a, [de]
ld hl, hBoardYShift
sub [hl]
ld c, a
dec de
dec de
dec de
dec de
ld a, [de]
ld e, a
ld d, $0
ld hl, $59e6
add hl, de
ld a, [hl]
cp $ff
call nz, Func_1f0b
ret
INCBIN "baserom.gbc",$199e6,$199f2 - $199e6
InitDiglettBonusStage: ; 0x199f2
ld a, [$d7c1]
and a
ret nz
xor a
ld [$d4af], a
ld a, $1
ld [$d7ac], a
ld a, [wBallType]
ld [wBallTypeBackup], a
xor a
ld [$d4c8], a
ld [wBallType], a
ld [$d49a], a
; initialize all digletts to hiding
ld a, $1 ; hiding diglett state
ld hl, wDiglettStates
ld b, NUM_DIGLETTS
.initDiglettsLoop
ld [hli], a
dec b
jr nz, .initDiglettsLoop
ld a, $1
ld [wDugtrioAnimationFrameCounter], a
ld a, $c
ld [wDugtrioAnimationFrame], a
xor a
ld [wDugtrioAnimationFrame2], a
ld [wDugrioState], a
ld a, $11
call SetSongBank
ld de, $0001
call Func_490
ret
StartBallDiglettBonusStage: ; 0x19a38
ld a, $0
ld [wBallXPos], a
ld a, $a6
ld [wBallXPos + 1], a
ld a, $0
ld [wBallYPos], a
ld a, $56
ld [wBallYPos + 1], a
ld a, $40
ld [wBallXVelocity], a
xor a
ld [$d7ab], a
ld [$d4af], a
ld [$d73a], a
ld hl, wDiglettStates
ld b, NUM_DIGLETTS
.asm_19a60
ld a, [hl]
and a
jr z, .asm_19a67
ld a, $1 ; hiding diglett state
ld [hl], a
.asm_19a67
inc hl
dec b
jr nz, .asm_19a60
xor a
ld [wCurrentDiglett], a
ld [wDiglettsInitializedFlag], a
ld [$d765], a
ret
Func_19a76: ; 0x19a76
ld [$ff8a], a
ld a, Bank(Func_142fc)
ld hl, Func_142fc
call BankSwitch
call Func_2862
ld a, [$d7c1]
and a
ret z
call Func_19bbd
call Func_19a96
ld a, [wDugrioState]
and a
call nz, Func_1ac2c
ret
Func_19a96: ; 0x19a96
ld hl, wDiglettStates
ld bc, NUM_DIGLETTS << 8
.asm_19a9c
ld a, [hli]
and a
jr z, .asm_19aae
push bc
push hl
push af
call Func_19da8
pop af
cp $6
call c, Func_19dcd
pop hl
pop bc
.asm_19aae
inc c
dec b
jr nz, .asm_19a9c
ret
Func_19ab3: ; 0x19ab3
call Func_19aba
call Func_19b4b
ret
Func_19aba: ; 0x19aba
ld a, [$d4ea]
inc a
jr nz, .asm_19b16
ld a, [$d73b]
bit 7, a
jr nz, .asm_19b16
ld a, [$d7e9]
and a
ret z
ld a, [$d7f5]
sub $19
ret c
cp $33
ret nc
ld c, a
ld b, $0
ld hl, $5b18 ; todo
add hl, bc
ld a, [hl]
cp $a
jr nc, .asm_19aed
ld a, [wBallXPos + 1]
cp $48
ld a, $11
jr nc, .asm_19af7
xor a
jr .asm_19af7
.asm_19aed
ld a, [wBallXPos + 1]
cp $68
ld a, $11
jr nc, .asm_19af7
xor a
.asm_19af7
add [hl]
ld [$d4eb], a
add $0
ld [$d4ea], a
ld b, a
ld hl, $d73b
ld [hl], $0
ld a, [$d4ec]
cp b
jr z, .asm_19b16
ld a, [$d4eb]
ld [hli], a
ld a, [$d4ea]
ld [hl], a
scf
ret
.asm_19b16
and a
ret
INCBIN "baserom.gbc",$19b18,$19b4b - $19b18
Func_19b4b: ; 0x19b4b
ld a, [$d4ea]
inc a
jr nz, .asm_19b86
ld a, [$d75f]
bit 7, a
jr nz, .asm_19b86
ld a, [$d7e9]
and a
ret z
ld a, [$d7f5]
sub $14
ret c
cp $5
ret nc
ld a, $1
ld [$d4eb], a
add $1f
ld [$d4ea], a
ld b, a
ld hl, $d75f
ld [hl], $0
ld a, [$d4ec]
cp b
jr z, .asm_19b86
ld a, [$d4eb]
ld [hli], a
ld a, [$d4ea]
ld [hl], a
scf
ret
.asm_19b86
and a
ret
Func_19b88: ; 0x19b88
call Func_19c52
call Func_1aad4
call Func_19b92
ret
Func_19b92: ; 0x19b92
ld a, [$d73a]
and a
ret nz
ld a, [$d4b4]
cp $8a
ret nc
ld a, $1
ld [$d4af], a
ld [$d73a], a
xor a
ld [$c853], a
ld [$c873], a
ld [$c893], a
ld a, $5
ld [$c872], a
ld a, $7
ld [$c892], a
call Func_19bbd
ret
Func_19bbd: ; 0x19bbd
ld a, [$d4af]
sla a
ld c, a
ld b, $0
ld hl, $5bda
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_19bd0
ld hl, $5c16
.asm_19bd0
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld a, $6
call Func_10aa
ret
INCBIN "baserom.gbc",$19bda,$19c52 - $19bda
Func_19c52: ; 0x19c52
ld a, [$d73b]
and a
jr z, .asm_19cc8
xor a
ld [$d73b], a
ld bc, $34d6
ld [$ff8a], a
ld a, Bank(Func_8588)
ld hl, Func_8588
call BankSwitch
ld de, $0035
call PlaySoundEffect
ld hl, $0100
ld a, l
ld [$d7bc], a
ld a, h
ld [$d7bd], a
ld a, $80
ld [wFlipperCollision], a
ld a, [$d73c]
sub $1
ld c, a
ld b, $0
ld hl, wDiglettStates
add hl, bc
ld a, [hl]
cp $6
jr nc, .asm_19cc8
ld a, $8
ld [hl], a
call Func_19da8
call Func_19df0
ld hl, wDiglettStates
ld bc, NUM_DIGLETTS << 8
xor a
.asm_19ca0
ld a, [hli]
and a
jr z, .asm_19ca8
cp $6
jr c, .asm_19ca9
.asm_19ca8
inc c
.asm_19ca9
dec b
jr nz, .asm_19ca0
ld a, c
cp NUM_DIGLETTS
jr nz, .asm_19cc8
ld hl, $6c75
ld de, wDugtrioAnimationFrameCounter
call Func_28a0
ld a, $1
ld [wDugrioState], a
call Func_1ac2c
ld de, $0002
call Func_490
.asm_19cc8
call Func_19cdd
ld a, [$d765]
and a
ret nz
ld a, $1
ld [$d765], a
ld a, [wDugrioState]
and a
call nz, Func_1ac2c
ret
Func_19cdd: ; 0x19cdd
ld a, [wDiglettsInitializedFlag]
and a
jr nz, .alreadyInitializedDigletts
ld a, [wDiglettInitDelayCounter]
add DIGLETT_INITIALIZE_DELAY
ld [wDiglettInitDelayCounter], a
ret nc
ld hl, DiglettInitializeOrder
ld a, [wCurrentDiglett]
ld c, a
ld b, $0
add hl, bc
ld b, $1
.asm_19cf8
push bc
ld a, [hli]
bit 7, a
jr z, .asm_19d02
ld a, [hli]
ld h, [hl]
ld l, a
ld a, [hli]
.asm_19d02
push hl
ld c, a
ld b, $0
ld hl, wDiglettStates
add hl, bc
ld a, [hl]
and a
jr z, .asm_19d29
dec a
jr nz, .asm_19d21
; pick a random starting state for the diglett that isn't the "hiding" state
call GenRandom
and $3
add $2
ld [hl], a
call Func_19da8
call Func_19dcd
jr .asm_19d29
.asm_19d21
and $3
add $2
ld [hl], a
call Func_19da8
.asm_19d29
pop hl
pop bc
dec b
jr nz, .asm_19cf8
ld hl, wDiglettsInitializedFlag
ld a, [wCurrentDiglett]
add $1
cp NUM_DIGLETTS
jr c, .notDoneInitializingDigletts
set 0, [hl]
sub NUM_DIGLETTS
.notDoneInitializingDigletts
ld [wCurrentDiglett], a
ret
.alreadyInitializedDigletts
ld hl, DiglettUpdateOrder
ld a, [wCurrentDiglett]
ld c, a
ld b, $0
add hl, bc
ld b, $4 ; update 4 digletts
.updateDiglettLoop
push bc
ld a, [hli]
bit 7, a
jr z, .asm_19d58
ld a, [hli]
ld h, [hl]
ld l, a
ld a, [hli]
.asm_19d58
push hl
ld c, a
ld b, $0
ld hl, wDiglettStates
add hl, bc
ld a, [hl]
and a
jr z, .asm_19d8f
dec a
jr nz, .asm_19d77
call GenRandom
and $3
add $2
ld [hl], a
call Func_19da8
call Func_19dcd
jr .asm_19d8f
.asm_19d77
cp $5
jr c, .incrementDiglettState
ld [hl], a
jr nz, .asm_19d8f
xor a
ld [hl], a
ld a, $1
call Func_19da8
jr .asm_19d8f
.incrementDiglettState
and $3
add $2
ld [hl], a
call Func_19da8
.asm_19d8f
pop hl
pop bc
dec b
jr nz, .updateDiglettLoop
ld hl, wDiglettsInitializedFlag
ld a, [wCurrentDiglett]
add $4
cp NUM_DIGLETTS
jr c, .asm_19da4
set 0, [hl]
sub NUM_DIGLETTS
.asm_19da4
ld [wCurrentDiglett], a
ret
Func_19da8: ; 0x19da8
; input: a = diglett state
; c = diglett index
cp $6
jr c, .asm_19dae
ld a, $6 ; "getting hit" state
.asm_19dae
push bc
ld b, a
sla c
ld a, c
sla c
add c
add b ; a = (index * 6) + state
dec a
ld c, a
ld b, $0 ; bc = (index * 6) + state - 1
sla c
rl b ; bc = 2 * ((index * 6) + state - 1)
ld hl, DiglettTileDataPointers
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld a, Bank(DiglettTileDataPointers)
call Func_10aa
pop bc
ret
Func_19dcd: ; 0x19dcd
sla c
ld a, c
sla c
add c
ld c, a
ld b, $0
ld hl, $5e13
add hl, bc
ld a, [hli]
ld e, a
ld a, [hli]
ld d, a
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
ld a, e
add $1f
ld e, a
jr nc, .asm_19dea
inc d
.asm_19dea
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
ret
Func_19df0: ; 0x19df0
sla c
ld a, c
sla c
add c
ld c, a
ld b, $0
ld hl, $5e13
add hl, bc
ld a, [hli]
ld e, a
ld a, [hli]
ld d, a
ld a, $2
ld [de], a
inc de
ld [de], a
ld a, e
add $1f
ld e, a
jr nc, .asm_19e0d
inc d
.asm_19e0d
ld a, $2
ld [de], a
inc de
ld [de], a
ret
INCBIN "baserom.gbc",$19e13,$19ed1 - $19e13
INCLUDE "data/diglett_stage/diglett_stage_animation_data.asm"
Func_1aad4: ; 0x1aad4
ld a, [$d75f]
and a
jr z, .asm_1ab2c
xor a
ld [$d75f], a
ld a, [wDugrioState]
bit 0, a
jr z, .asm_1ab2c
cp $7
jr z, .asm_1ab2c
inc a
ld [wDugrioState], a
sla a
ld c, a
ld b, $0
ld hl, $6c62
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld de, wDugtrioAnimationFrameCounter
call Func_28a0
ld bc, $34ee
ld [$ff8a], a
ld a, Bank(Func_8588)
ld hl, Func_8588
call BankSwitch
ld de, $0036
call PlaySoundEffect
ld a, $33
ld [$d803], a
ld a, $8
ld [$d804], a
ld hl, $0200
ld a, l
ld [$d7bc], a
ld a, h
ld [$d7bd], a
ld a, $80
ld [wFlipperCollision], a
.asm_1ab2c
call Func_1ab30
ret
Func_1ab30: ; 0x1ab30
ld a, [wDugrioState]
sla a
ld c, a
ld b, $0
ld hl, $6c62
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld de, wDugtrioAnimationFrameCounter
call Func_28a9
ret nc
ld a, [wDugrioState]
and a
ret z
cp $1
jr nz, .asm_1ab64
ld a, [wDugtrioAnimationFrame2]
cp $3
ret nz
ld hl, $6c75
ld de, wDugtrioAnimationFrameCounter
call Func_28a0
ld a, $1
ld [wDugrioState], a
ret
.asm_1ab64
cp $2
jr nz, .asm_1ab7d
ld a, [wDugtrioAnimationFrame2]
cp $1
ret nz
ld hl, $6c7f
ld de, wDugtrioAnimationFrameCounter
call Func_28a0
ld a, $3
ld [wDugrioState], a
ret
.asm_1ab7d
cp $3
jr nz, .asm_1ab96
ld a, [wDugtrioAnimationFrame2]
cp $3
ret nz
ld hl, $6c7f
ld de, wDugtrioAnimationFrameCounter
call Func_28a0
ld a, $3
ld [wDugrioState], a
ret
.asm_1ab96
cp $4
jr nz, .asm_1abaf
ld a, [wDugtrioAnimationFrame2]
cp $1
ret nz
ld hl, $6c89
ld de, wDugtrioAnimationFrameCounter
call Func_28a0
ld a, $5
ld [wDugrioState], a
ret
.asm_1abaf
cp $5
jr nz, .asm_1abc8
ld a, [wDugtrioAnimationFrame2]
cp $3
ret nz
ld hl, $6c89
ld de, wDugtrioAnimationFrameCounter
call Func_28a0
ld a, $5
ld [wDugrioState], a
ret
.asm_1abc8
cp $6
jr nz, .asm_1abe1
ld a, [wDugtrioAnimationFrame2]
cp $1
ret nz
ld hl, $6c93
ld de, wDugtrioAnimationFrameCounter
call Func_28a0
ld a, $7
ld [wDugrioState], a
ret
.asm_1abe1
cp $7
ret nz
ld a, [wDugtrioAnimationFrame2]
cp $1
jr nz, .asm_1abf2
ld de, $0000
call Func_490
ret
.asm_1abf2
cp $2
ret nz
ld hl, $6c72
ld de, wDugtrioAnimationFrameCounter
call Func_28a0
xor a
ld [wDugrioState], a
ld [$d498], a
ld a, $1
ld [$d49a], a
call Func_30e8
call Func_30db
ld hl, $d5dc
ld de, $2fb3
call Func_32aa
ld de, $4b2a
call PlaySoundEffect
ld a, $1
ld [$d7be], a
call Func_2862
ld hl, $6c56
jr asm_1ac2f
Func_1ac2c: ; 0x1ac2c
ld hl, $6c4a
asm_1ac2f:
ld de, $c768
ld b, $3
.asm_1ac34
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
ld a, e
add $1d
ld e, a
jr nc, .asm_1ac46
inc d
.asm_1ac46
dec b
jr nz, .asm_1ac34
ret
INCBIN "baserom.gbc",$1ac4a,$1ac98 - $1ac4a
Func_1ac98: ; 0x1ac98
ld [$ff8a], a
ld a, Bank(Func_e4a1)
ld hl, Func_e4a1
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_17e81)
ld hl, Func_17e81
call BankSwitch
call Func_1acb0
ret
Func_1acb0: ; 0x1acb0
ld a, $40
ld hl, hBoardXShift
sub [hl]
ld b, a
ld a, $0
ld hl, hBoardYShift
sub [hl]
ld c, a
ld a, [wDugtrioAnimationFrame]
ld e, a
ld d, $0
ld hl, $6ccf
add hl, de
ld a, [hl]
bit 7, a
call z, Func_1f0b
ret
INCBIN "baserom.gbc",$1accf,$1c000 - $1accf
SECTION "bank7", ROMX, BANK[$7]
InitBlueField: ; 0x1c000
ld a, [$d7c1]
and a
ret nz
xor a
ld hl, $d46f
ld [hld], a
ld [hld], a
ld [hld], a
ld [hld], a
ld [hld], a
ld [hl], a
ld [wNumPartyMons], a
ld [$d49b], a
ld [$d4c9], a
ld [wBallType], a
ld [$d4c8], a
ld hl, $d624
ld [hli], a
ld [hli], a
ld [hli], a
ld [$d7ac], a
ld [$d7be], a
ld [wCurrentMap], a ; PALLET_TOWN
ld a, $1
ld [$d49d], a
ld [$d482], a
ld a, $2
ld [wRightAlleyCount], a
ld a, $3
ld [$d49e], a
ld [$d610], a
ld a, $2
ld [$d498], a
ld [$d499], a
ld a, $80
ld [$d52f], a
ld [$d532], a
ld a, $82
ld [$d530], a
xor a
ld [$d648], a
ld [$d649], a
ld [$d64a], a
ld [$d643], a
ld [$d644], a
ld [$d645], a
ld [$d646], a
ld [$ff8a], a
ld a, Bank(Func_dbba)
ld hl, Func_dbba
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_1d65f)
ld hl, Func_1d65f
call BankSwitch
ld a, $10
call SetSongBank
ld de, $0001
call Func_490
ret
StartBallBlueField: ; 0x1c08d
ld a, [$d496]
and a
jp nz, StartBallAfterBonusStageBlueField
ld a, $0
ld [wBallXPos], a
ld a, $a7
ld [wBallXPos + 1], a
ld a, $0
ld [wBallYPos], a
ld a, $98
ld [wBallYPos + 1], a
xor a
ld [$d549], a
ld [$d580], a
call Func_1c7c7
ld a, [$d4c9]
and a
ret z
xor a
ld [$d4c9], a
xor a
ld [$d50b], a
ld [$d50c], a
ld [$d51d], a
ld [$d51e], a
ld [$d517], a
ld hl, $d50f
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [wLeftMapMoveCounter], a
ld [wRightMapMoveCounter], a
ld hl, $d5f9
ld [hli], a
ld [hli], a
ld [hli], a
ld [wBallType], a
ld [$d611], a
ld [$d612], a
ld [$d628], a
ld [$d629], a
ld [$d62a], a
ld [$d62b], a
ld [$d62c], a
ld [$d63a], a
ld [$d63b], a
ld [$d63d], a
ld [$d63c], a
ld [$d62d], a
ld [$d62e], a
ld [$d613], a
inc a
ld [$d482], a
ld [$d4ef], a
ld [$d4f1], a
ld a, $3
ld [$d610], a
call Func_1d65f
ld a, $10
call SetSongBank
ld de, $0001
call Func_490
ret
StartBallAfterBonusStageBlueField: ; 0x1c129
ld a, $0
ld [wBallXPos], a
ld a, $50
ld [wBallXPos + 1], a
ld a, $0
ld [wBallYPos], a
ld a, $16
ld [wBallYPos + 1], a
xor a
ld [wBallYVelocity], a
ld [wBallYVelocity + 1], a
ld [wBallXVelocity], a
ld [wBallXVelocity + 1], a
ld [$d496], a
ld [$d7ab], a
ld [$d7be], a
ld a, [wBallTypeBackup]
ld [wBallType], a
ld a, $10
call SetSongBank
ld de, $0001
call Func_490
ret
Func_1c165: ; 0x1c165
call asm_1e475
call Func_1cb43
call Func_1c3ee
call Func_1e8f6
ld [$ff8a], a
ld a, Bank(Func_142fc)
ld hl, Func_142fc
call BankSwitch
ld a, $1
ld [$d640], a
call Func_1f18a
ld [$ff8a], a
ld a, Bank(Func_1404a)
ld hl, Func_1404a
call BankSwitch
call Func_1c203
ret
Func_1c191: ; 0x1c191
call Func_1c1db
call Func_1c4b6
call Func_1c2cb
call Func_1e627
call Func_1c43c
call Func_1c305
call Func_1c3ee
ld [$ff8a], a
ld a, Bank(Func_14746)
ld hl, Func_14746
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_14707)
ld hl, Func_14707
call BankSwitch
call Func_1c235
call Func_1c21e
call Func_1e8f6
ld [$ff8a], a
ld a, Bank(Func_142fc)
ld hl, Func_142fc
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_1404a)
ld hl, Func_1404a
call BankSwitch
call Func_1c203
ret
Func_1c1db: ; 0x1c1db
ld a, [$d641]
cp $0
ret z
ld a, $1
ld [$d640], a
ld a, $0
ld [$d641], a
ld a, [wBlueStageForceFieldDirection]
cp $2 ; down direction
ret nz
ld a, $0
ld [wBlueStageForceFieldDirection], a
ld a, $1 ; right direction
ld [$d64a], a
xor a
ld [$d649], a
ld [$d648], a
ret
Func_1c203: ; 0x1c203
ld a, $ff
ld [$d4d7], a
ld [$d4db], a
ld a, [$d4b4]
ld [$d4c5], a
ld a, [$d4b6]
ld [$d4c6], a
ld a, [wBallRotation]
ld [$d4c7], a
ret
Func_1c21e: ; 0x1c21e
ld a, $ff
ld [$d60e], a
ld [$d60f], a
ld a, [$d60c]
call Func_1d5f2
ld a, [$d60d]
add $14
call Func_1d5f2
ret
Func_1c235: ; 0x1c235
ld a, [wLeftMapMoveDiglettAnimationCounter]
and a
jr z, .asm_1c249
ld a, $54
ld [$c7e3], a
ld a, $55
ld [$c803], a
ld a, $1
jr .asm_1c24a
.asm_1c249
xor a
.asm_1c24a
call Func_1de4b
ld a, [wLeftMapMoveCounter]
call Func_1de6f
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_1c267
ld a, [wLeftMapMoveCounter]
cp $0
jr z, .asm_1c264
ld b, $7
add b
jr .asm_1c269
.asm_1c264
xor a
jr .asm_1c269
.asm_1c267
ld a, $8
.asm_1c269
call Func_1de6f
ld a, [wRightMapMoveDiglettFrame]
and a
jr z, .asm_1c295
ld a, $52
ld [$c7f0], a
ld a, $53
ld [$c810], a
ld a, [$d644]
and a
jr z, .asm_1c28a
ld a, [$d55a]
and a
jr nz, .asm_1c2bd
jr .asm_1c291
.asm_1c28a
ld a, [wRightMapMoveCounter]
add $3
jr .asm_1c297
.asm_1c291
ld a, $3
jr .asm_1c297
.asm_1c295
ld a, $2
.asm_1c297
call Func_1de4b
ld a, [wRightMapMoveCounter]
add $4
call Func_1de6f
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_1c2b7
ld a, [wRightMapMoveCounter]
cp $0
jr z, .asm_1c2b3
ld b, $a
add b
jr .asm_1c2b9
.asm_1c2b3
ld a, $4
jr .asm_1c2b9
.asm_1c2b7
ld a, $9
.asm_1c2b9
call Func_1de6f
ret
.asm_1c2bd
ld a, $6
call Func_1de4b
ld a, [wRightMapMoveCounter]
add $4
call Func_1de6f
ret
Func_1c2cb: ; 0x1c2cb
ld a, [wCurrentStage]
bit 0, a
ret z
ld bc, $0000
.asm_1c2d4
push bc
ld hl, $d52f
add hl, bc
ld a, [hl]
res 7, a
call Func_1eb41
pop bc
inc c
ld a, c
cp $2
jr nz, .asm_1c2d4
ld bc, $0002
.asm_1c2e9
push bc
ld hl, $d52f
add hl, bc
ld a, [hl]
push af
ld hl, $d648
add hl, bc
dec hl
dec hl
ld a, [hl]
ld d, a
pop af
add d
call Func_1eb41
pop bc
inc c
ld a, c
cp $5
jr nz, .asm_1c2e9
ret
Func_1c305: ; 0x1c305
ld a, [wSpecialMode]
and a
ret z
ld a, [$d550]
cp $2
ret z
ld a, [$d5c6]
and a
jr nz, .asm_1c31f
ld a, [$d5f3]
and a
jr nz, .asm_1c31f
jp Func_1c3ca
.asm_1c31f
ld [$ff8a], a
ld a, Bank(Func_1c3ac)
ld hl, Func_1c3ac
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_10362)
ld hl, Func_10362
call BankSwitch
ld a, [hGameBoyColorFlag]
and a
ld [$ff8a], a
ld a, Bank(Func_10301)
ld hl, Func_10301
call nz, BankSwitch
ld a, [$d5f3]
and a
ret z
ld a, $2a
ld hl, $47e0
ld de, $87e0
ld bc, $0020
call Func_666
ld a, $2a
ld hl, $4800
ld de, $8900
ld bc, $0180
call Func_666
ld a, [wBallType]
cp GREAT_BALL
jr nc, .notPokeball
ld a, Bank(PinballPokeballShakeGfx)
ld hl, PinballPokeballShakeGfx
ld de, $8380
ld bc, $0040
call Func_666
ret
.notPokeball
cp ULTRA_BALL
jr nc, .notGreatball
ld a, Bank(PinballGreatballShakeGfx)
ld hl, PinballGreatballShakeGfx
ld de, $8380
ld bc, $0040
call Func_666
ret
.notGreatball
cp MASTER_BALL
jr nc, .notUltraBall
ld a, Bank(PinballUltraballShakeGfx)
ld hl, PinballUltraballShakeGfx
ld de, $8380
ld bc, $0040
call Func_666
ret
.notUltraBall
ld a, Bank(PinballMasterballShakeGfx)
ld hl, PinballMasterballShakeGfx
ld de, $8380
ld bc, $0040
call Func_666
ret
Func_1c3ac: ; 0x1c3ac
ld a, $80
ld hl, $9887
call Func_1c3c3
ld hl, $98a7
call Func_1c3c3
ld hl, $98c7
call Func_1c3c3
ld hl, $98e7
; fall through
Func_1c3c3: ; 0x1c3c3
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ret
Func_1c3ca: ; 0x1c3ca
ld hl, $d586
ld b, $18
.asm_1c3cf
ld a, [hli]
xor $1
ld [hli], a
dec b
jr nz, .asm_1c3cf
ld [$ff8a], a
ld a, Bank(Func_10184)
ld hl, Func_10184
call BankSwitch
ld a, [hGameBoyColorFlag]
and a
ld [$ff8a], a
ld a, Bank(Func_102bc)
ld hl, Func_102bc
call nz, BankSwitch
ret
Func_1c3ee: ; 0x1c3ee
ld a, [wSpecialMode]
and a
ret z
ld a, [$d550]
cp $1
ret nz
ld a, [$d554]
cp $3
ret z
ld a, [wCurrentStage]
bit 0, a
jr nz, .asm_1c416
ld a, $36
ld hl, $7e80
ld de, $8600
ld bc, $00e0
call Func_666
jr .asm_1c424
.asm_1c416
ld a, $36
ld hl, $7e80
ld de, $8200
ld bc, $00e0
call Func_666
.asm_1c424
ld a, [$d551]
and a
ret z
ld a, [hGameBoyColorFlag]
and a
ret z
ld a, $37
ld hl, $5188
ld de, $0070
ld bc, $0010
call Func_6fd
ret
Func_1c43c: ; 0x1c43c
ld a, [wSpecialMode]
and a
jr z, .asm_1c458
ld a, [$d550]
and a
jr nz, .asm_1c450
ld a, [wNumMonHits]
and a
call nz, Func_1c46d
ret
.asm_1c450
cp $1
jr nz, .asm_1c458
call Func_1c47d
ret
.asm_1c458
ld a, [$d624]
call Func_1f265
ld a, $36
ld hl, $4f60
ld de, $8ae0
ld bc, $0020
call Func_666
ret
Func_1c46d: ; 0x1c46d
push af
ld [$ff8a], a
ld a, Bank(Func_10611)
ld hl, Func_10611
call BankSwitch
pop af
dec a
jr nz, Func_1c46d
ret
Func_1c47d: ; 0x1c47d
ld de, $0000
ld a, [$d554]
and a
ret z
ld b, a
.asm_1c486
ld a, [$d553]
call Func_1c491
inc de
dec b
jr nz, .asm_1c486
ret
Func_1c491: ; 0x1c491
push bc
push de
dec a
ld c, a
ld b, $0
swap c
sla c
ld hl, $4e80
add hl, bc
swap e
sla e
push hl
ld hl, $8ae0
add hl, de
ld d, h
ld e, l
pop hl
ld bc, $0020
ld a, $36
call Func_666
pop de
pop bc
ret
Func_1c4b6: ; 0x1c4b6
ld a, [wSpecialMode]
and a
jr nz, .asm_1c4f0
ld a, [$d609]
and a
jr z, .asm_1c4d2
ld a, [$d498]
add $15
ld [$ff8a], a
ld a, Bank(Func_30256)
ld hl, Func_30256
call BankSwitch
ret
.asm_1c4d2
ld a, [$d608]
and a
jr z, .asm_1c4e5
ld a, $1a
ld [$ff8a], a
ld a, Bank(Func_30256)
ld hl, Func_30256
call BankSwitch
ret
.asm_1c4e5
ld [$ff8a], a
ld a, Bank(Func_30253)
ld hl, Func_30253
call BankSwitch
ret
.asm_1c4f0
ld a, [$d550]
cp $2
ret nz
ld a, [$d54d]
cp $3
jr nz, .asm_1c508
ld [$ff8a], a
ld a, Bank(Func_30253)
ld hl, Func_30253
call BankSwitch
ret
.asm_1c508
ld a, [$d604]
and a
ld a, $14
jr nz, .asm_1c515
ld a, [$d55a]
add $12
.asm_1c515
ld [$ff8a], a
ld a, Bank(Func_30256)
ld hl, Func_30256
call BankSwitch
ret
Func_1c520: ; 0x1c520
call Func_1c55a ; shellders
call Func_1c567 ; spinner
call Func_1c57e
call Func_1c592
call Func_1c588
call Func_1c5c0
call Func_1c5eb
ret
Func_1c536: ; 0x1c536
ld a, [wBallYPos + 1]
cp $56
jr nc, .asm_1c54d
call Func_1c5de
call Func_1c5b3
call Func_1c5a6
call Func_1c5d4
call Func_1c5eb
ret
.asm_1c54d
call Func_1c571
call Func_1c59c
call Func_1c5ca
call Func_1c607
ret
Func_1c55a: ; 0x1c55a
ld de, $4644
ld hl, $462e
ld bc, $d4cb
and a
jp Func_2775
Func_1c567: ; 0x1c567
ld de, $4650
ld bc, $d507
scf
jp Func_2775
Func_1c571: ; 0x1c571
ld de, $4625
ld hl, $4611
ld bc, $d4d8
and a
jp Func_2775
Func_1c57e: ; 0x1c57e
ld de, $4656
ld bc, $d51f
scf
jp Func_2775
Func_1c588: ; 0x1c588
ld de, $4665
ld bc, $d635
scf
jp Func_2775
Func_1c592: ; 0x1c592
ld de, $466b
ld bc, $d630
scf
jp Func_2775
Func_1c59c: ; 0x1c59c
ld de, $4671
ld bc, $d515
scf
jp Func_2775
Func_1c5a6: ; 0x1c5a6
ld de, $4686
ld hl, $467a
ld bc, $d60a
and a
jp Func_2775
Func_1c5b3: ; 0x1c5b3
ld de, $4695
ld hl, $468f
ld bc, $d4ed
and a
jp Func_2775
Func_1c5c0: ; 0x1c5c0
ld de, $469e
ld bc, $d5f7
scf
jp Func_2775
Func_1c5ca: ; 0x1c5ca
ld de, $46aa
ld bc, $d50d
scf
jp Func_2775
Func_1c5d4: ; 0x1c5d4
ld de, $46b9
ld bc, $d601
scf
jp Func_2775
Func_1c5de: ; 0x1c5de
ld de, $46d1
ld hl, $46bf
ld bc, $d5c7
and a
jp Func_2775
Func_1c5eb: ; 0x1c5eb
xor a
ld [$d578], a
ld a, [$d551]
and a
ret z
ld a, [wCurrentStage]
bit 0, a
jr nz, .asm_1c601
ld hl, $46d7 ; todo
jp Func_27fd
.asm_1c601
ld hl, $46fc ; todo
jp Func_27fd
Func_1c607: ; 0x1c607
ld de, $470f
ld bc, $d4dc
scf
jp Func_2775
INCBIN "baserom.gbc",$1c611,$1c715 - $1c611
Func_1c715: ; 0x1c715
call Func_1c9c1
call Func_1ca5f
call Func_1e356
call HandleBallTypeUpgradeCounterBlueField
call Func_1e66a
call Func_1cfaa
call Func_1d0a1
call Func_1d216
call HandleEnteringCloyster
call Func_1ea3b
call Func_1dbd2
call Func_1ef09
call Func_1e9c0
call Func_1c8b6
call Func_1f18a
ld [$ff8a], a
ld a, Bank(Func_146a9)
ld hl, Func_146a9
call BankSwitch
call Func_1f27b
call Func_1df15
ld [$ff8a], a
ld a, Bank(Func_30188)
ld hl, Func_30188
call BankSwitch
ld a, $0
ld [$ff8a], a
ld a, Bank(Func_10000)
ld hl, Func_10000
call BankSwitch
ret
Func_1c769: ; 0x1c769
call Func_1ca4a
call Func_1ce40
call Func_1dbd2
call Func_1ca85
call Func_1e4b8
call HandleBallTypeUpgradeCounterBlueField
call Func_1e5c5
call Func_1c7d7
call Func_1d0a1
call Func_1ead4
call Func_1d438
call Func_1e757
call Func_1e9c0
call Func_1ea0a
call Func_1c8b6
ld [$ff8a], a
ld a, Bank(Func_14733)
ld hl, Func_14733
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_146a2)
ld hl, Func_146a2
call BankSwitch
call Func_1f261
call Func_1de93
ld [$ff8a], a
ld a, Bank(Func_30188)
ld hl, Func_30188
call BankSwitch
ld a, $0
ld [$ff8a], a
ld a, Bank(Func_10000)
ld hl, Func_10000
call BankSwitch
ret
Func_1c7c7: ; 0x1c7c7
ld a, $0
ld [$d4af], a
ld [$ff8a], a
ld a, Bank(Func_e578)
ld hl, Func_e578
call BankSwitch
ret
Func_1c7d7: ; 0x1c7d7
ld a, [$d4dc]
and a
ret z
xor a
ld [$d4dc], a
ld a, [$d4de]
and a
jr z, .asm_1c810
xor a
ld [wRightAlleyTrigger], a
ld [wLeftAlleyTrigger], a
ld [wSecondaryLeftAlleyTrigger], a
ld hl, wBallXVelocity
ld [hli], a
ld [hl], a
ld [wBallSpin], a
ld [wBallRotation], a
ld a, $71
ld [wBallYVelocity], a
ld a, $fa
ld [wBallYVelocity + 1], a
ld a, $1
ld [$d549], a
ld de, $000a
call PlaySoundEffect
.asm_1c810
ld a, $ff
ld [$d4ec], a
ld a, [$d4de]
and a
ret nz
ld a, [$d4e0]
and a
jr nz, .asm_1c82c
call Func_1c839
ld a, $1
ld [$d4e0], a
ld [$d4de], a
ret
.asm_1c82c
ld hl, wKeyConfigBallStart
call IsKeyPressed
ret z
ld a, $1
ld [$d4de], a
ret
Func_1c839: ; 0x1c839
ld a, [hGameBoyColorFlag]
and a
ld [$ff8a], a
ld a, Bank(Func_f269)
ld hl, Func_f269
call nz, BankSwitch
.showNextMap
ld a, [wInitialMapSelectionIndex]
inc a
cp $7 ; number of maps to choose from at the start of play
jr c, .gotMapId
xor a ; wrap around to 0
.gotMapId
ld [wInitialMapSelectionIndex], a
ld c, a
ld b, $0
ld hl, BlueStageInitialMaps
add hl, bc
ld a, [hl]
ld [wCurrentMap], a
push af
ld de, $0048
call PlaySoundEffect
pop af
add $29 ; map billboard pictures start at the $29th entry in BillboardPicturePointers
ld [$ff8a], a
ld a, Bank(LoadBillboardPicture)
ld hl, LoadBillboardPicture
call BankSwitch
ld b, $20 ; number of frames to delay before the next map is shown
.waitOnCurrentMap
push bc
ld [$ff8a], a
ld a, Bank(Func_eeee)
ld hl, Func_eeee
call BankSwitch
ld hl, wKeyConfigBallStart
call IsKeyPressed
jr nz, .ballStartKeyPressed
pop bc
dec b
jr nz, .waitOnCurrentMap
jr .showNextMap
.ballStartKeyPressed
pop bc
ld [$ff8a], a
ld a, Bank(Func_30253)
ld hl, Func_30253
call BankSwitch
ld bc, $2cd1
ld [$ff8a], a
ld a, Bank(Func_3118f)
ld hl, Func_3118f
call BankSwitch
ld a, [wCurrentMap]
ld [$d4e3], a
xor a
ld [$d4e2], a
ret
BlueStageInitialMaps: ; 0x1c8af
db VIRIDIAN_CITY
db VIRIDIAN_FOREST
db MT_MOON
db CERULEAN_CITY
db VERMILION_STREETS
db ROCK_MOUNTAIN
db CELADON_CITY
Func_1c8b6: ; 0x1c8b6
ld a, [$d64c]
inc a
cp $3c
jr z, .asm_1c8c2
ld [$d64c], a
ret
.asm_1c8c2
xor a
ld [$d64c], a
ld hl, $d64d
inc [hl]
ld a, [hl]
cp $5
ret nz
ld a, [$d644]
and a
jr nz, .asm_1c8e1
ld a, [$d643]
and a
jr nz, .asm_1c8e5
ld a, [wRightAlleyCount]
cp $2
jr nc, .asm_1c8e5
.asm_1c8e1
xor a
ld [$d64b], a
.asm_1c8e5
ld a, [$d644]
and a
jr nz, .asm_1c8f8
ld a, [$d643]
and a
jr nz, .asm_1c8fc
ld a, [wLeftAlleyCount]
cp $3
jr z, .asm_1c8fc
.asm_1c8f8
xor a
ld [$d64b], a
.asm_1c8fc
xor a
ld [$d64d], a
xor a
ld [$d64a], a
ld [$d649], a
ld [$d648], a
ld a, [wBlueStageForceFieldDirection]
cp $1 ; right direction
jr z, .asm_1c97f
cp $3 ; left direction
jr z, .asm_1c97f
.asm_1c915
ld a, [$d644]
cp $0
jr z, .asm_1c925
ld a, [$d55a]
cp $0
jr nz, .asm_1c933
jr .asm_1c947
.asm_1c925
ld a, [$d643]
cp $0
jr nz, .asm_1c933
ld a, [wRightAlleyCount]
cp $2
jr c, .asm_1c947
.asm_1c933
ld a, [$d64b]
cp $1
jr z, .asm_1c947
ld a, $1 ; right direction
ld [wBlueStageForceFieldDirection], a
ld [$d64b], a
ld [$d640], a
jr .asm_1c99e
.asm_1c947
ld a, [$d644]
cp $0
jr z, .asm_1c955
ld a, [$d55a]
cp $0
jr z, .asm_1c969
.asm_1c955
ld a, [$d643]
cp $0
jr nz, .asm_1c969
ld a, [wLeftAlleyCount]
cp $3
jr nz, .asm_1c97f
ld a, [wSpecialMode]
and a
jr nz, .asm_1c97f
.asm_1c969
ld a, [$d64b]
cp $3
jr z, .asm_1c915
ld a, $3 ; left direction
ld [wBlueStageForceFieldDirection], a
ld [$d64b], a
ld a, $1
ld [$d640], a
jr .asm_1c99e
.asm_1c97f
ld a, [$d641]
and a
jr nz, .asm_1c993
xor a
ld [wBlueStageForceFieldDirection], a
ld a, $1
ld [$d640], a
ld [$d64a], a
jr .asm_1c99e
.asm_1c993
ld a, $2 ; down direction
ld [wBlueStageForceFieldDirection], a
ld a, $1
ld [$d640], a
ret
.asm_1c99e
ld a, [wBlueStageForceFieldDirection]
cp $0 ; up direction
jr nz, .asm_1c9ac
ld a, $1
ld [$d64a], a
jr .asm_1c9c0
.asm_1c9ac
cp $1
jr nz, .asm_1c9b7
ld a, $1
ld [$d649], a
jr .asm_1c9c0
.asm_1c9b7
cp $3
jr nz, .asm_1c9c0
ld a, $1
ld [$d648], a
.asm_1c9c0
ret
Func_1c9c1: ; 0x1c9c1
ld a, [$d4cb]
and a
jr z, .asm_1ca19
xor a
ld [$d4cb], a
call Func_1ca29
ld a, [$d641]
and a
jr nz, .asm_1c9f2
ld a, $1
ld [$d641], a
ld a, [wBlueStageForceFieldDirection]
cp $0 ; up direction
jr nz, .asm_1c9f2
ld a, $2 ; down direction
ld [wBlueStageForceFieldDirection], a
ld a, $1
ld [$d640], a
ld a, $3
ld [$d64c], a
ld [$d64d], a
.asm_1c9f2
ld a, $10
ld [$d4d6], a
ld a, [$d4cc]
sub $3
ld [$d4d7], a
ld a, $4
ld [$ff8a], a
ld a, Bank(Func_10000)
ld hl, Func_10000
call BankSwitch
ld bc, $34be
ld [$ff8a], a
ld a, Bank(Func_8576)
ld hl, Func_8576
call BankSwitch
ret
.asm_1ca19
ld a, [$d4d6]
and a
ret z
dec a
ld [$d4d6], a
ret nz
ld a, $ff
ld [$d4d7], a
ret
Func_1ca29: ; 0x1ca29
ld a, $ff
ld [$d803], a
ld a, $3
ld [$d804], a
ld hl, $0200
ld a, l
ld [$d7bc], a
ld a, h
ld [$d7bd], a
ld a, $80
ld [wFlipperCollision], a
ld de, $000e
call PlaySoundEffect
ret
Func_1ca4a: ; 1ca4a
ld a, [$d5c7]
and a
ret z
xor a
ld [$d5c7], a
ld a, $1
ld [$d5bf], a
ld de, $0006
call PlaySoundEffect
ret
INCBIN "baserom.gbc",$1ca5f,$1ca5f - $1ca5f
Func_1ca5f: ; 0x1ca5f
ld a, [$d507]
and a
jr z, Func_1ca85
xor a
ld [$d507], a
ld a, [wBallYVelocity]
ld c, a
ld a, [wBallYVelocity + 1]
ld b, a
ld a, c
ld [$d50b], a
ld a, b
ld [$d50c], a
ld a, $c
ld [$ff8a], a
ld a, Bank(Func_10000)
ld hl, Func_10000
call BankSwitch
; fall through
Func_1ca85: ; 0x1ca85
ld hl, $d50b
ld a, [hli]
or [hl]
ret z
ld a, [$d50b]
ld c, a
ld a, [$d50c]
ld b, a
bit 7, b
jr nz, .asm_1caa3
ld a, c
sub $7
ld c, a
ld a, b
sbc $0
ld b, a
jr nc, .asm_1cab0
jr .asm_1caad
.asm_1caa3
ld a, c
add $7
ld c, a
ld a, b
adc $0
ld b, a
jr nc, .asm_1cab0
.asm_1caad
ld bc, $0000
.asm_1cab0
ld a, c
ld [$d50b], a
ld a, b
ld [$d50c], a
ld hl, $d50b
ld a, [$d509]
add [hl]
ld [$d509], a
inc hl
ld a, [$d50a]
adc [hl]
bit 7, a
ld c, $0
jr z, .asm_1cad3
add $18
ld c, $1
jr .asm_1cadb
.asm_1cad3
cp $18
jr c, .asm_1cadb
sub $18
ld c, $1
.asm_1cadb
ld [$d50a], a
ld a, c
and a
ret z
ld bc, $34ac
ld [$ff8a], a
ld a, Bank(Func_8576)
ld hl, Func_8576
call BankSwitch
ld hl, $d62d
call Func_e4a
ld a, [$d517]
cp $f
jr nz, .asm_1caff
call Func_1cb1c
ret
.asm_1caff
inc a
ld [$d517], a
call Func_1cb1c
ld a, [$d517]
cp $f
jr nz, .asm_1cb12
ld a, $64
ld [$d51e], a
.asm_1cb12
ld a, [wCurrentStage]
bit 0, a
ret nz
call Func_1cb43
ret
Func_1cb1c: ; 0x1cb1c
ld a, [$d51e]
and a
ret nz
ld a, [$d517]
ld c, a
ld b, $0
ld hl, $4b33 ; todo
add hl, bc
ld a, [hl]
ld e, a
ld d, $0
call PlaySoundEffect
ret
INCBIN "baserom.gbc",$1cb33,$1cb43 - $1cb33
Func_1cb43: ; 0x1cb43
ld a, [$d517]
ld c, a
sla c
ld b, $0
ld hl, $4b60 ; todo
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_1cb56
ld hl, $4d10 ; todo
.asm_1cb56
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld a, $7
call Func_10aa
ret
INCBIN "baserom.gbc",$1cb60,$1ce40 - $1cb60
Func_1ce40: ; 1ce40
ld a, [$d4d8]
and a
jr z, .asm_1ce53
call Func_1ce72
call Func_1ce60
xor a
ld [$d4d8], a
call Func_1ce94
.asm_1ce53
ld a, [$d4da]
and a
ret z
dec a
ld [$d4da], a
call z, Func_1ce72
ret
Func_1ce60: ; 0x1ce60
ld a, $10
ld [$d4da], a
ld a, [$d4d9]
sub $1
ld [$d4db], a
sla a
inc a
jr asm_1ce7a
Func_1ce72: ; 1ce72
ld a, [$d4db]
cp $ff
ret z
sla a
asm_1ce7a: ; 0x1ce7a
sla a
ld c, a
ld b, $0
ld hl, $4eca
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_1ce8a
ld hl, $4f3a
.asm_1ce8a
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld a, $7
call Func_10aa
ret
Func_1ce94: ; 0x1ce94
ld a, $ff
ld [$d803], a
ld a, $3
ld [$d804], a
ld hl, $0200
ld a, l
ld [$d7bc], a
ld a, h
ld [$d7bd], a
ld a, $80
ld [wFlipperCollision], a
ld a, [$d4d9]
sub $1
ld c, a
ld b, $0
ld hl, $4ec8
add hl, bc
ld a, [$d7ea]
add [hl]
ld [$d7ea], a
ld de, $000b
call PlaySoundEffect
ret
INCBIN "baserom.gbc",$1cec8,$1cfaa - $1cec8
Func_1cfaa: ; 0x1cfaa
ld a, [$d51f]
and a
ret z
xor a
ld [$d51f], a
ld bc, $34a6
ld [$ff8a], a
ld a, Bank(Func_8576)
ld hl, Func_8576
call BankSwitch
ld a, [$d4af]
cp $0
jr nz, .asm_1cfe5
ld a, $1
ld [$d4af], a
ld [$ff8a], a
ld a, Bank(Func_e578)
ld hl, Func_e578
call BankSwitch
ld a, $1
ld [$d580], a
ld [$ff8a], a
ld a, Bank(Func_1404a)
ld hl, Func_1404a
call BankSwitch
.asm_1cfe5
ld a, [$d520]
sub $7
ld c, a
ld b, $0
ld hl, $d521
add hl, bc
ld [hl], $1
ld a, [$d521]
and a
call nz, Func_1d010
ld a, [$d522]
and a
call nz, Func_1d047
ld a, [$d523]
and a
call nz, HandleLeftAlleyTriggerBlueField
ld a, [$d524]
and a
call nz, HandleRightAlleyTriggerBlueField
ret
Func_1d010: ; 0x1d010
xor a
ld [$d521], a
ld a, [wLeftAlleyTrigger]
and a
ret z
xor a
ld [wLeftAlleyTrigger], a
ld a, $1
ld [$ff8a], a
ld a, Bank(Func_10000)
ld hl, Func_10000
call BankSwitch
ret c
ld a, [wLeftAlleyCount]
cp $3
ret z
inc a
ld [wLeftAlleyCount], a
cp $3
jr z, .asm_1d03e
set 7, a
ld [$d52f], a
ret
.asm_1d03e
ld [$d52f], a
ld a, $80
ld [$d531], a
ret
Func_1d047: ; 0x1d047
xor a
ld [$d522], a
ld a, [wRightAlleyTrigger]
and a
ret z
xor a
ld [wRightAlleyTrigger], a
ld a, $2
ld [$ff8a], a
ld a, Bank(Func_10000)
ld hl, Func_10000
call BankSwitch
ret c
ld a, [wRightAlleyCount]
cp $3
ret z
inc a
ld [wRightAlleyCount], a
cp $3
jr z, .asm_1d071
set 7, a
.asm_1d071
ld [$d530], a
ld a, [wRightAlleyCount]
cp $2
ret c
ld a, $80
ld [$d532], a
ret
HandleLeftAlleyTriggerBlueField: ; 0x1d080
; Ball passed over the left alley trigger point in the Blue Field.
xor a
ld [$d523], a
ld [wRightAlleyTrigger], a
ld [wSecondaryLeftAlleyTrigger], a
ld a, $1
ld [wLeftAlleyTrigger], a
ret c
ret
HandleRightAlleyTriggerBlueField: ; 0x1d091
; Ball passed over the right alley trigger point in the Blue Field.
xor a
ld [$d524], a
ld [wLeftAlleyTrigger], a
ld [wSecondaryLeftAlleyTrigger], a
ld a, $1
ld [wRightAlleyTrigger], a
ret
Func_1d0a1: ; 0x1d0a1
ld a, [$d515]
and a
jr z, .asm_1d110
xor a
ld [$d515], a
ld a, [$d51c]
and a
jr nz, .asm_1d110
ld a, [$d51d]
and a
jr nz, .asm_1d0c9
ld a, [$d516]
sub $d
ld hl, $d518
cp [hl]
jr nz, .asm_1d110
ld a, [$d517]
cp $f
jr nz, .asm_1d0fc
.asm_1d0c9
ld hl, $51d1 ; todo
ld de, $d519
call Func_28a0
ld a, [$d51d]
and a
jr nz, .asm_1d0dc
xor a
ld [$d517], a
.asm_1d0dc
ld a, $1
ld [$d51c], a
xor a
ld [wBallXVelocity], a
ld [wBallXVelocity + 1], a
ld [wBallYVelocity], a
ld [wBallYVelocity + 1], a
ld [wBallSpin], a
ld [wBallRotation], a
ld [$d549], a
call Func_30e8
jr .asm_1d110
.asm_1d0fc
ld hl, $51f6 ; todo
ld de, $d519
call Func_28a0
ld a, $2
ld [$d51c], a
ld de, $003b
call PlaySoundEffect
.asm_1d110
ld a, [$d51c]
and a
call z, Func_1d1fb
call Func_1d133
ld a, [$d517]
cp $f
ret nz
ld a, [$d51e]
and a
ret z
dec a
ld [$d51e], a
cp $5a
ret nz
ld de, $0f22
call PlaySoundEffect
ret
Func_1d133: ; 0x1d133
ld a, [$d51c]
cp $1
jr nz, .asm_1d1ae
ld hl, $51d1 ; todo
ld de, $d519
call Func_28a9
ret nc
ld a, [$d51b]
cp $1
jr nz, .asm_1d18c
xor a
ld [$d85d], a
call Func_310a
rst $10
ld a, $1
ld [$ff8a], a
ld a, Bank(Func_50000)
ld hl, Func_50000
call BankSwitch
ld a, $1
ld [$d85d], a
ld a, $ff
ld [$d803], a
ld a, $60
ld [$d804], a
ld hl, $d62e
call Func_e4a
jr nc, .asm_1d185
ld c, $a
call Func_e55
ld [$ff8a], a
ld a, Bank(Func_30164)
ld hl, Func_30164
call z, BankSwitch
.asm_1d185
ld de, $1610
call PlaySoundEffect
ret
.asm_1d18c
ld a, [$d51b]
cp $11
ret nz
ld a, $fc
ld [wBallYVelocity + 1], a
ld a, $1
ld [$d549], a
ld bc, $34ca
ld [$ff8a], a
ld a, Bank(Func_8576)
ld hl, Func_8576
call BankSwitch
xor a
ld [$d51c], a
ret
.asm_1d1ae
cp $2
jr nz, .asm_1d1c7
ld hl, $51f6 ; todo
ld de, $d519
call Func_28a9
ret nc
ld a, [$d51b]
cp $1
ret nz
xor a
ld [$d51c], a
ret
.asm_1d1c7
ld a, [$ffb3]
swap a
and $1
ld [$d51a], a
ret
INCBIN "baserom.gbc",$1d1d1,$1d1fb - $1d1d1
Func_1d1fb: ; 0x1d1fb
ld hl, wKeyConfigLeftFlipper
call IsKeyPressed2
jr z, .asm_1d209
ld hl, $d518
ld [hl], $0
ret
.asm_1d209
ld hl, wKeyConfigRightFlipper
call IsKeyPressed2
ret z
ld hl, $d518
ld [hl], $1
ret
Func_1d216: ; 0x1d216
ld a, [$d630]
and a
jr z, .asm_1d253
xor a
ld [$d630], a
ld bc, $34d0
ld [$ff8a], a
ld a, Bank(Func_8576)
ld hl, Func_8576
call BankSwitch
ld de, $0005
call PlaySoundEffect
ld hl, $5312 ; todo
ld de, $d632
call Func_28a0
xor a
ld [wBallXVelocity], a
ld [wBallXVelocity + 1], a
ld [wBallYVelocity], a
ld [wBallYVelocity + 1], a
ld [wBallXPos], a
ld [wBallYPos], a
xor a
ld [$d549], a
.asm_1d253
ld hl, $5312 ; todo
ld de, $d632
call Func_28a9
push af
ld a, [$d632]
and a
jr nz, .asm_1d271
ld a, $19
ld [$d632], a
xor a
ld [$d633], a
ld a, $6
ld [$d634], a
.asm_1d271
pop af
ret nc
ld a, [$d634]
cp $1
jr nz, .asm_1d2b6
xor a
ld [$d548], a
ld a, [wLeftAlleyCount]
cp $3
jr nz, .asm_1d299
ld [$ff8a], a
ld a, Bank(Func_10ab3)
ld hl, Func_10ab3
call BankSwitch
ld a, [$d643]
and a
ret z
ld a, $1
ld [$d642], a
.asm_1d299
ld hl, $d63a
call Func_e4a
ld hl, $d62a
call Func_e4a
ret nc
ld c, $19
call Func_e55
ld [$ff8a], a
ld a, Bank(Func_30164)
ld hl, Func_30164
call z, BankSwitch
ret
.asm_1d2b6
ld a, [$d634]
cp $4
jr nz, .asm_1d2c3
ld a, $1
ld [$d548], a
ret
.asm_1d2c3
ld a, [$d634]
cp $5
ret nz
ld a, $1
ld [$d549], a
ld a, $b0
ld [wBallXVelocity], a
ld a, $0
ld [wBallXVelocity + 1], a
xor a
ld [wBallYVelocity], a
ld [wBallYVelocity + 1], a
ld de, $0006
call PlaySoundEffect
ld a, [$d642]
cp $0
jr nz, .asm_1d2f8
ld a, $f
ld [$ff8a], a
ld a, Bank(Func_10000)
ld hl, Func_10000
call BankSwitch
.asm_1d2f8
xor a
ld [$d642], a
ld [$d64c], a
ld [$d64d], a
ld a, $1
ld [$d641], a
ld a, $2 ; down direction
ld [wBlueStageForceFieldDirection], a
ld a, $1
ld [$d640], a
ret
INCBIN "baserom.gbc",$1d312,$1d32d - $1d312
HandleEnteringCloyster: ; 0x1d32d
ld a, [$d635]
and a
jr z, .asm_1d36a
xor a
ld [$d635], a
ld bc, $34d0
ld [$ff8a], a
ld a, Bank(Func_8576)
ld hl, Func_8576
call BankSwitch
ld de, $0005
call PlaySoundEffect
ld hl, $541d
ld de, $d637
call Func_28a0
xor a
ld [wBallXVelocity], a
ld [wBallXVelocity + 1], a
ld [wBallYVelocity], a
ld [wBallYVelocity + 1], a
ld [wBallXPos], a
ld [wBallYPos], a
xor a
ld [$d549], a
.asm_1d36a
ld hl, $541d
ld de, $d637
call Func_28a9
push af
ld a, [$d637]
and a
jr nz, .asm_1d388
ld a, $19
ld [$d637], a
xor a
ld [$d638], a
ld a, $6
ld [$d639], a
.asm_1d388
pop af
ret nc
ld a, [$d639]
cp $1
jr nz, .asm_1d3cb
xor a
ld [$d548], a
ld a, [wRightAlleyCount]
cp $2
jr c, .noCatchEmMode
ld a, $8
jr nz, .asm_1d3a1
xor a
.asm_1d3a1
ld [wRareMonsFlag], a
ld [$ff8a], a
ld a, Bank(StartCatchEmMode)
ld hl, StartCatchEmMode
call BankSwitch
.noCatchEmMode
ld hl, $d63b
call Func_e4a
ld hl, $d62a
call Func_e4a
ret nc
ld c, $19
call Func_e55
ld [$ff8a], a
ld a, Bank(Func_30164)
ld hl, Func_30164
call z, BankSwitch
ret
.asm_1d3cb
ld a, [$d639]
cp $4
jr nz, .asm_1d3d8
ld a, $1
ld [$d548], a
ret
.asm_1d3d8
ld a, [$d639]
cp $5
ret nz
ld a, $1
ld [$d549], a
ld a, $4f
ld [wBallXVelocity], a
ld a, $ff
ld [wBallXVelocity + 1], a
xor a
ld [wBallYVelocity], a
ld [wBallYVelocity + 1], a
ld de, $0006
call PlaySoundEffect
ld a, $e
ld [$ff8a], a
ld a, Bank(Func_10000)
ld hl, Func_10000
call BankSwitch
xor a
ld [$d64c], a
ld [$d64d], a
ld a, $1
ld [$d641], a
ld a, $2 ; down direction
ld [wBlueStageForceFieldDirection], a
ld a, $1
ld [$d640], a
ret
INCBIN "baserom.gbc",$1d41d,$1d438 - $1d41d
Func_1d438: ; 0x1d438
call Func_1d692
ld a, [$d60a]
and a
jp z, Func_1d51b
xor a
ld [$d60a], a
ld de, $000d
call PlaySoundEffect
ld a, [$d60b]
sub $f
jr nz, .asm_1d48e
ld a, [hGameBoyColorFlag]
and a
jr nz, .asm_1d45c
ld a, $1f
jr .asm_1d45e
.asm_1d45c
ld a, $29
.asm_1d45e
call Func_1d5f2
ld a, $3c
ld [$d647], a
ld a, $9
ld [$ff8a], a
ld a, Bank(Func_10000)
ld hl, Func_10000
call BankSwitch
ld a, [$d610]
cp $3
jp nz, asm_1d4fa
ld a, $1
ld [$d610], a
ld a, $3
ld [$d611], a
ld a, [$d60c]
set 7, a
ld [$d60c], a
jr asm_1d4fa
.asm_1d48e
ld a, [hGameBoyColorFlag]
and a
jr nz, .asm_1d497
ld a, $21
jr .asm_1d499
.asm_1d497
ld a, $2b
.asm_1d499
call Func_1d5f2
ld a, $1e
ld [$d647], a
ld a, $a
ld [$ff8a], a
ld a, Bank(Func_10000)
ld hl, Func_10000
call BankSwitch
ld a, [$d611]
cp $3
jr nz, asm_1d4fa
ld a, $1
ld [$d610], a
ld a, $1
ld [$d611], a
ld a, $80
ld [$d612], a
ld a, [$d60d]
set 7, a
ld [$d60d], a
ld a, [$d482]
inc a
cp $64
jr c, .asm_1d4d5
ld a, $63
.asm_1d4d5
ld [$d482], a
jr nc, .asm_1d4e9
ld c, $19
call Func_e55
ld [$ff8a], a
ld a, Bank(Func_30164)
ld hl, Func_30164
call z, BankSwitch
.asm_1d4e9
ld a, [$d60c]
ld [$d614], a
ld a, [$d60d]
ld [$d615], a
ld a, $1
ld [$d613], a
asm_1d4fa: ; 0x1d4fa
ld bc, $34ac
ld [$ff8a], a
ld a, Bank(Func_8576)
ld hl, Func_8576
call BankSwitch
ld a, [$d60c]
call Func_1d5f2
ld a, [$d60d]
add $14
call Func_1d5f2
ld a, $3c
ld [$d647], a
ret
Func_1d51b: ; 0x1d51b
call Func_1d5bf
ld a, [$d612]
and a
jr z, .asm_1d559
dec a
ld [$d612], a
cp $70
jr nz, .asm_1d538
ld a, $2
ld [$d610], a
ld a, $2
ld [$d611], a
jr .asm_1d559
.asm_1d538
and a
jr nz, .asm_1d559
ld a, $3
ld [$d610], a
xor a
ld [$d611], a
ld a, [$d482]
call Func_1d65f
ld a, [$d60c]
call Func_1d5f2
ld a, [$d60d]
add $14
call Func_1d5f2
ret
.asm_1d559
ld a, [$d610]
cp $2
jr c, .asm_1d58b
cp $3
ld a, [$ffb3]
jr c, .asm_1d56a
srl a
srl a
.asm_1d56a
ld b, a
and $3
jr nz, .asm_1d58b
bit 3, b
jr nz, .asm_1d580
ld a, [$d60c]
res 7, a
ld [$d60c], a
call Func_1d5f2
jr .asm_1d58b
.asm_1d580
ld a, [$d60c]
set 7, a
ld [$d60c], a
call Func_1d5f2
.asm_1d58b
ld a, [$d611]
cp $2
ret c
cp $3
ld a, [$ffb3]
jr c, .asm_1d59b
srl a
srl a
.asm_1d59b
ld b, a
and $3
ret nz
bit 3, b
jr nz, .asm_1d5b1
ld a, [$d60d]
res 7, a
ld [$d60d], a
add $14
call Func_1d5f2
ret
.asm_1d5b1
ld a, [$d60d]
set 7, a
ld [$d60d], a
add $14
call Func_1d5f2
ret
Func_1d5bf: ; 0x1d5bf
ld a, [$d5ca]
and a
ret nz
ld a, [$d613]
and a
ret z
xor a
ld [$d613], a
call Func_30e8
call Func_30db
ld hl, $d5cc
ld de, $2958
call Func_32aa
ld hl, $c512
ld a, [$d614]
and $7f
jr z, .asm_1d5e9
add $30
ld [hli], a
.asm_1d5e9
ld a, [$d615]
res 7, a
add $30
ld [hl], a
ret
Func_1d5f2: ; 0x1d5f2
push af
ld a, [hGameBoyColorFlag]
and a
jr nz, .asm_1d5fd
pop af
call Func_1d602
ret
.asm_1d5fd
pop af
call Func_1d645
ret
Func_1d602: ; 0x1d602
push af
res 7, a
ld hl, $d60e
cp $14
jr c, .asm_1d611
ld hl, $d60f
sub $a
.asm_1d611
cp [hl]
jr z, .asm_1d626
ld [hl], a
ld c, a
ld b, $0
sla c
ld hl, $56be
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld a, $7
call Func_10aa
.asm_1d626
pop af
ld bc, $0000
bit 7, a
jr z, .asm_1d632
res 7, a
set 1, c
.asm_1d632
cp $14
jr c, .asm_1d638
set 2, c
.asm_1d638
ld hl, $5946
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld a, $7
call Func_10aa
ret
Func_1d645: ; 0x1d645
bit 7, a
jr z, .asm_1d64d
res 7, a
add $a
.asm_1d64d
ld c, a
ld b, $0
sla c
ld hl, $597a
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld a, $7
call Func_10aa
ret
Func_1d65f: ; 0x1d65f
ld a, [$d482]
inc a
cp $64
jr c, .asm_1d669
ld a, $63
.asm_1d669
ld b, a
xor a
ld hl, $568b ; todo
ld c, $7
.asm_1d670
bit 0, b
jr z, .asm_1d676
add [hl]
daa
.asm_1d676
srl b
inc hl
dec c
jr nz, .asm_1d670
push af
swap a
and $f
ld [$d60c], a
pop af
and $f
ld [$d60d], a
ret
INCBIN "baserom.gbc",$1d68b,$1d692 - $1d68b
Func_1d692: ; 0x1d692
ld a, [$d647]
cp $1
jr z, .asm_1d69e
dec a
ld [$d647], a
ret
.asm_1d69e
ld a, $0
ld [$d647], a
ld a, [hGameBoyColorFlag]
and a
jr nz, .asm_1d6b3
ld a, $1e
call Func_1d5f2
ld a, $20
call Func_1d5f2
ret
.asm_1d6b3
ld a, $2a
call Func_1d5f2
ld a, $28
call Func_1d5f2
ret
INCBIN "baserom.gbc",$1d6be,$1dbd2 - $1d6be
Func_1dbd2: ; 0x1dbd2
ld a, [$d4ed]
and a
jp z, Func_1dc8e
cp $2
jr z, .asm_1dc33
xor a
ld [$d4ed], a
ld hl, wLeftMapMoveCounter
ld a, [hl]
cp $3
jp z, Func_1dc8e
inc a
ld [hl], a
ld hl, $d4f7
ld a, $e0
ld [hli], a
ld a, $1
ld [hl], a
ld a, [wCurrentStage]
bit 0, a
jr z, .asm_1dc06
ld a, $54
ld [$c7e3], a
ld a, $55
ld [$c803], a
.asm_1dc06
ld a, $1
call Func_1de4b
ld a, [wLeftMapMoveCounter]
call Func_1de6f
ld a, [wLeftMapMoveCounter]
cp $3
ld a, $7
ld [$ff8a], a
ld a, Bank(Func_10000)
ld hl, Func_10000
call BankSwitch
ld a, $2
ld [$d646], a
ld a, $78
ld [wLeftMapMoveDiglettAnimationCounter], a
ld a, $14
ld [wLeftMapMoveDiglettFrame], a
jr .asm_1dc8a
.asm_1dc33
xor a
ld [$d4ed], a
ld hl, wRightMapMoveCounter
ld a, [hl]
cp $3
jp z, Func_1dc8e
inc a
ld [hl], a
ld hl, $d4f9
ld a, $e0
ld [hli], a
ld a, $1
ld [hl], a
ld a, [wCurrentStage]
bit 0, a
jr z, .asm_1dc5c
ld a, $52
ld [$c7f0], a
ld a, $53
ld [$c810], a
.asm_1dc5c
ld a, $3
call Func_1de4b
ld a, [wRightMapMoveCounter]
cp $3
ld a, $8
ld [$ff8a], a
ld a, Bank(Func_10000)
ld hl, Func_10000
call BankSwitch
ld a, [wRightMapMoveCounter]
cp $3
ccf
call z, Func_1ddf4
ld a, $2
ld [$d645], a
ld a, $28
ld [wRightMapMoveDiglettAnimationCounter], a
ld a, $78
ld [wRightMapMoveDiglettFrame], a
.asm_1dc8a
call Func_1de22
ret
Func_1dc8e: ; 0x1dc8e
call Func_1dc95
call Func_1dd2e
ret
Func_1dc95: ; 0x1dc95
ld a, [$d646]
cp $0
ret z
ld a, [wLeftMapMoveDiglettAnimationCounter]
and a
jr z, .asm_1dceb
dec a
ld [wLeftMapMoveDiglettAnimationCounter], a
ld a, [$d644]
and a
ret nz
ld a, [wLeftMapMoveDiglettFrame]
cp $1
jr z, .asm_1dcb9
cp $0
ret z
dec a
ld [wLeftMapMoveDiglettFrame], a
ret
.asm_1dcb9
ld a, [$d646]
cp $2
ret nz
call Func_1130
ret nz
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_1dcd7
ld a, [wLeftMapMoveCounter]
cp $0
jr z, .asm_1dcd4
ld b, $7
add b
jr .asm_1dcd9
.asm_1dcd4
xor a
jr .asm_1dcd9
.asm_1dcd7
ld a, $8
.asm_1dcd9
call Func_1de6f
ld a, [wLeftMapMoveCounter]
cp $3
ccf
call z, Func_1ddc7
ld a, $1
ld [$d646], a
ret
.asm_1dceb
ld a, [$d646]
cp $1
ret nz
ld a, [wLeftMapMoveDiglettAnimationCounter]
and a
ret nz
ld a, $0
call Func_1de4b
ld a, [wCurrentStage]
bit 0, a
jr z, .asm_1dd0c
ld a, $5e
ld [$c7e3], a
ld a, $5f
ld [$c803], a
.asm_1dd0c
ld a, $0
ld [$d646], a
ld a, [wLeftMapMoveCounter]
sub $3
ret nz
ld a, [wLeftMapMoveCounter]
sub $3
ld [wLeftMapMoveCounter], a
call Func_1de6f
ld a, $0
call Func_1de4b
ld a, $0
ld [$d646], a
ret
INCBIN "baserom.gbc",$1dd2d,$1dd2e - $1dd2d
Func_1dd2e: ; 0x1dd2e
ld a, [$d645]
cp $0
ret z
cp $1
jr z, .asm_1dd53
cp $3
jr z, .asm_1dd69
ld a, [wRightMapMoveDiglettAnimationCounter]
cp $0
jr z, .asm_1dd48
dec a
ld [wRightMapMoveDiglettAnimationCounter], a
ret
.asm_1dd48
ld a, $2
call Func_1de4b
ld a, $1
ld [$d645], a
ret
.asm_1dd53
ld a, [wRightMapMoveCounter]
add $4
call Func_1de6f
ld a, [wRightMapMoveCounter]
add $3
call Func_1de4b
ld a, $3
ld [$d645], a
ret
.asm_1dd69
ld a, [wRightMapMoveDiglettFrame]
and a
jr z, .asm_1dd74
dec a
ld [wRightMapMoveDiglettFrame], a
ret
.asm_1dd74
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_1dd89
ld a, [wRightMapMoveCounter]
cp $0
jr z, .asm_1dd85
ld b, $a
add b
jr .asm_1dd8b
.asm_1dd85
ld a, $4
jr .asm_1dd8b
.asm_1dd89
ld a, $9
.asm_1dd8b
call Func_1de6f
ld a, $2
call Func_1de4b
ld a, [wCurrentStage]
bit 0, a
jr z, .asm_1dda9
ld a, $24
ld [$c7f0], a
ld a, $25
ld [$c810], a
ld a, $0
ld [$d645], a
.asm_1dda9
ld a, [wRightMapMoveCounter]
sub $3
ret nz
ld a, [wRightMapMoveCounter]
sub $3
ld [wRightMapMoveCounter], a
ld a, $4
call Func_1de6f
ld a, $2
call Func_1de4b
ld a, $0
ld [$d645], a
ret
Func_1ddc7: ; 0x1ddc7
ld hl, $d63d
call Func_e4a
ld hl, $d62b
call Func_e4a
jr nc, .asm_1dde4
ld c, $a
call Func_e55
ld [$ff8a], a
ld a, Bank(Func_30164)
ld hl, Func_30164
call z, BankSwitch
.asm_1dde4
xor a
ld [$d55a], a
ld [$ff8a], a
ld a, Bank(StartMapMoveMode)
ld hl, StartMapMoveMode
call BankSwitch
scf
ret
Func_1ddf4: ; 0x1ddf4
ld hl, $d63c
call Func_e4a
ld hl, $d62b
call Func_e4a
jr nc, .asm_1de11
ld c, $a
call Func_e55
ld [$ff8a], a
ld a, Bank(Func_30164)
ld hl, Func_30164
call z, BankSwitch
.asm_1de11
ld a, $1
ld [$d55a], a
ld [$ff8a], a
ld a, Bank(StartMapMoveMode)
ld hl, StartMapMoveMode
call BankSwitch
scf
ret
Func_1de22: ; 0x1de22
ld a, [wCurrentStage]
bit 0, a
ret z
ld a, $55
ld [$d803], a
ld a, $4
ld [$d804], a
ld a, $2
ld [$d7eb], a
ld bc, $34be
ld [$ff8a], a
ld a, Bank(Func_8576)
ld hl, Func_8576
call BankSwitch
ld de, $000f
call PlaySoundEffect
ret
Func_1de4b: ; 0x1de4b
ld b, a
ld a, [wCurrentStage]
bit 0, a
ret z
ld a, b
sla a
ld c, a
ld b, $0
ld hl, $5f66
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_1de63
ld hl, $600f
.asm_1de63
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
or h
ret z
ld a, $7
call Func_10aa
ret
Func_1de6f: ; 0x1de6f
ld b, a
ld a, [wCurrentStage]
bit 0, a
ret z
ld a, b
sla a
ld c, a
ld b, $0
ld hl, $60a4
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_1de87
ld hl, $61d6
.asm_1de87
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
or h
ret z
ld a, $7
call Func_10aa
ret
Func_1de93: ; 0x1de93
ld hl, $d4f7
dec [hl]
ld a, [hli]
cp $ff
jr nz, .asm_1ded2
dec [hl]
ld a, [hld]
cp $ff
jr nz, .asm_1ded2
ld a, $e0
ld [hli], a
ld a, $1
ld [hl], a
ld a, [wLeftMapMoveCounter]
and a
jr z, .asm_1ded2
cp $3
jr z, .asm_1ded2
dec a
ld [wLeftMapMoveCounter], a
call Func_1de6f
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_1decd
ld a, [wLeftMapMoveCounter]
cp $0
jr z, .asm_1deca
ld b, $7
add b
jr .asm_1decf
.asm_1deca
xor a
jr .asm_1decf
.asm_1decd
ld a, $8
.asm_1decf
call Func_1de6f
.asm_1ded2
ld hl, $d4f9
dec [hl]
ld a, [hli]
cp $ff
jr nz, .asm_1df14
dec [hl]
ld a, [hld]
cp $ff
jr nz, .asm_1df14
ld a, $e0
ld [hli], a
ld a, $1
ld [hl], a
ld a, [wRightMapMoveCounter]
and a
jr z, .asm_1df14
cp $3
jr z, .asm_1df14
dec a
ld [wRightMapMoveCounter], a
add $4
call Func_1de6f
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_1df0f
ld a, [wRightMapMoveCounter]
cp $0
jr z, .asm_1df0b
ld b, $a
add b
jr .asm_1df11
.asm_1df0b
ld a, $4
jr .asm_1df11
.asm_1df0f
ld a, $9
.asm_1df11
call Func_1de6f
.asm_1df14
ret
Func_1df15: ; 0x1df15
ld b, $0
ld hl, $d4f8
ld a, [hld]
or [hl]
jr z, .asm_1df3e
dec [hl]
ld a, [hli]
cp $ff
jr nz, .asm_1df3e
dec [hl]
ld a, [hld]
cp $ff
jr nz, .asm_1df3e
ld a, $e0
ld [hli], a
ld a, $1
ld [hl], a
ld a, [wLeftMapMoveCounter]
and a
jr z, .asm_1df3e
cp $3
jr z, .asm_1df3e
dec a
ld [wLeftMapMoveCounter], a
.asm_1df3e
ld hl, $d4fa
ld a, [hld]
or [hl]
jr z, .asm_1df65
dec [hl]
ld a, [hli]
cp $ff
jr nz, .asm_1df65
dec [hl]
ld a, [hld]
cp $ff
jr nz, .asm_1df65
ld a, $e0
ld [hli], a
ld a, $1
ld [hl], a
ld a, [wRightMapMoveCounter]
and a
jr z, .asm_1df65
cp $3
jr z, .asm_1df65
dec a
ld [wRightMapMoveCounter], a
.asm_1df65
ret
INCBIN "baserom.gbc",$1df66,$1e356 - $1df66
Func_1e356: ; 0x1e356
ld a, [$d5f7]
and a
jp z, Func_1e471
xor a
ld [$d5f7], a
ld a, [$d4af]
cp $0
jr nz, .asm_1e386
ld a, $1
ld [$d4af], a
ld [$ff8a], a
ld a, Bank(Func_e578)
ld hl, Func_e578
call BankSwitch
ld a, $1
ld [$d580], a
ld [$ff8a], a
ld a, Bank(Func_1404a)
ld hl, Func_1404a
call BankSwitch
.asm_1e386
ld a, [$d4af]
bit 0, a
jp z, Func_1e471
ld a, [$d5fc]
and a
jp nz, Func_1e471
xor a
ld [wRightAlleyTrigger], a
ld [wLeftAlleyTrigger], a
ld [wSecondaryLeftAlleyTrigger], a
ld a, $b
ld [$ff8a], a
ld a, Bank(Func_10000)
ld hl, Func_10000
call BankSwitch
ld a, [$d5f8]
sub $13
ld c, a
ld b, $0
ld hl, $d5f9
add hl, bc
ld a, [hl]
ld [hl], $1
and a
jr z, .asm_1e3bf
ld [hl], $0
.asm_1e3bf
ld bc, $34b2
ld [$ff8a], a
ld a, Bank(Func_8576)
ld hl, Func_8576
call BankSwitch
ld hl, $d5f9
ld a, [hli]
and [hl]
inc hl
and [hl]
jr nz, .asm_1e3de
ld de, $0009
call PlaySoundEffect
jp asm_1e475
.asm_1e3de
ld a, $1
ld [$d5fc], a
ld a, $80
ld [$d5fd], a
; load approximately 1 minute of frames into wBallTypeCounter
ld a, $10
ld [wBallTypeCounter], a
ld a, $e
ld [wBallTypeCounter + 1], a
ld bc, $34b8
ld [$ff8a], a
ld a, Bank(Func_8576)
ld hl, Func_8576
call BankSwitch
ld a, [wBallType]
cp MASTER_BALL
jr z, .masterBall
ld de, $063a
call PlaySoundEffect
call Func_30e8
call Func_30db
ld hl, $d5cc
ld de, $2907
call Func_32aa
ld a, [wBallType]
ld c, a
ld b, $0
ld hl, BallTypeProgression2BlueField
add hl, bc
ld a, [hl]
ld [wBallType], a
add $30
ld [$c512], a
jr .asm_1e465
.masterBall
ld de, $0f4d
call PlaySoundEffect
ld bc, $34e8
ld [$ff8a], a
ld a, Bank(Func_8588)
ld hl, Func_8588
call BankSwitch
ld bc, $0100
ld de, $0000
push bc
push de
call Func_30e8
call Func_30db
ld hl, $d5d4
ld de, $2948
call Func_32cc
pop de
pop bc
ld hl, $d5cc
ld de, $2922
call Func_32aa
.asm_1e465
ld [$ff8a], a
ld a, Bank(Func_155a7)
ld hl, Func_155a7
call BankSwitch
jr asm_1e475
Func_1e471: ; 0x1e471
call Func_1e4b8
ret z
asm_1e475: ; 0x1e475
ld hl, $d5fb
ld b, $3
.asm_1e47a
ld a, [hld]
push hl
call Func_1e484
pop hl
dec b
jr nz, .asm_1e47a
ret
Func_1e484: ; 0x1e484
and a
jr z, .asm_1e496
ld a, [hGameBoyColorFlag]
and a
jr nz, .asm_1e491
ld hl, $6520
jr .asm_1e4a3
.asm_1e491
ld hl, $6556
jr .asm_1e4a3
.asm_1e496
ld a, [hGameBoyColorFlag]
and a
jr nz, .asm_1e4a0
ld hl, $6526
jr .asm_1e4a3
.asm_1e4a0
ld hl, $655c
.asm_1e4a3
push bc
dec b
sla b
ld e, b
ld d, $0
add hl, de
ld c, [hl]
inc hl
ld b, [hl]
ld a, $7
ld de, LoadTileLists
call Func_10c5
pop bc
ret
Func_1e4b8: ; 0x1e4b8
ld a, [$d5fc]
and a
jr z, .asm_1e4e5
ld a, [$d5fd]
dec a
ld [$d5fd], a
jr nz, .asm_1e4ca
ld [$d5fc], a
.asm_1e4ca
and $7
jr nz, .asm_1e4e3
ld a, [$d5fd]
srl a
srl a
srl a
and $1
ld hl, $d5f9
ld [hli], a
ld [hli], a
ld [hl], a
ld a, $1
and a
ret
.asm_1e4e3
xor a
ret
.asm_1e4e5
ld hl, wKeyConfigLeftFlipper
call IsKeyPressed
jr z, .leftFlipperKeyIsPressed
; left flipper key is pressed
ld hl, $d5f9
ld a, [hli]
ld c, a
ld a, [hli]
ld b, a
ld a, [hl]
ld e, a
ld a, c
ld [hld], a
ld a, e
ld [hld], a
ld a, b
ld [hl], a
ret
.leftFlipperKeyIsPressed
ld hl, wKeyConfigRightFlipper
call IsKeyPressed
ret z
; right flipper key is pressed
ld hl, $d5f9
ld a, [hli]
ld c, a
ld a, [hli]
ld b, a
ld a, [hl]
ld e, a
ld a, b
ld [hld], a
ld a, c
ld [hld], a
ld a, e
ld [hl], a
ret
BallTypeProgression2BlueField: ; 0x1e514
; Determines the next upgrade for the Ball.
db GREAT_BALL ; POKE_BALL -> GREAT_BALL
db GREAT_BALL ; unused
db ULTRA_BALL ; GREAT_BALL -> ULTRA_BALL
db MASTER_BALL ; ULTRA_BALL -> MASTER_BALL
db MASTER_BALL ; unused
db MASTER_BALL ; MASTER_BALL -> MASTER_BALL
BallTypeDegradation2BlueField: ; 0x1e51a
; Determines the previous upgrade for the Ball.
db POKE_BALL ; POKE_BALL -> POKE_BALL
db POKE_BALL ; unused
db POKE_BALL ; GREAT_BALL -> POKE_BALL
db GREAT_BALL ; ULTRA_BALL -> GREAT_BALL
db ULTRA_BALL ; unused
db ULTRA_BALL ; MASTER_BALL -> GREAT_BALL
INCBIN "baserom.gbc",$1e520,$1e58c - $1e520
HandleBallTypeUpgradeCounterBlueField: ; 0x1e58c
ld a, [$d5f3]
and a
ret nz
; check if counter is at 0
ld hl, wBallTypeCounter
ld a, [hli]
ld c, a
ld b, [hl]
or b
ret z
dec bc
ld a, b
ld [hld], a
ld [hl], c
or c
ret nz
; counter is now 0! Degrade the ball upgrade.
ld a, [wBallType]
ld c, a
ld b, $0
ld hl, BallTypeDegradation2BlueField
add hl, bc
ld a, [hl]
ld [wBallType], a
and a
jr z, .pokeball
; load approximately 1 minute of frames into wBallTypeCounter
ld a, $10
ld [wBallTypeCounter], a
ld a, $e
ld [wBallTypeCounter + 1], a
.pokeball
ld [$ff8a], a
ld a, Bank(Func_155a7)
ld hl, Func_155a7
call BankSwitch
ret
Func_1e5c5: ; 0x1e5c5
ld a, [$d50d]
and a
jr z, .asm_1e623
xor a
ld [$d50d], a
ld a, [$d513]
and a
jr nz, .asm_1e623
ld a, [$d50e]
sub $16
ld c, a
ld b, $0
ld hl, $d50f
add hl, bc
ld a, [hl]
ld [hl], $1
and a
ret nz
ld bc, $34b2
ld [$ff8a], a
ld a, Bank(Func_8576)
ld hl, Func_8576
call BankSwitch
ld hl, $d50f
ld a, [hli]
and [hl]
inc hl
and [hl]
inc hl
and [hl]
jr z, Func_1e627
ld a, $1
ld [$d513], a
ld a, $80
ld [$d514], a
ld bc, $34b8
ld [$ff8a], a
ld a, Bank(Func_8576)
ld hl, Func_8576
call BankSwitch
ld de, $0009
call PlaySoundEffect
ld hl, $d62c
call Func_e4a
jr Func_1e627
.asm_1e623
call Func_1e66a
ret z
; fall through
Func_1e627: ; 0x1e627
ld hl, $d512
ld b, $4
.asm_1e62c
ld a, [hld]
push hl
call Func_1e636
pop hl
dec b
jr nz, .asm_1e62c
ret
Func_1e636: ; 0x1e636
and a
jr z, .asm_1e648
ld a, [hGameBoyColorFlag]
and a
jr nz, .asm_1e643
ld hl, $66d7
jr .asm_1e655
.asm_1e643
ld hl, $6717
jr .asm_1e655
.asm_1e648
ld a, [hGameBoyColorFlag]
and a
jr nz, .asm_1e652
ld hl, $66df
jr .asm_1e655
.asm_1e652
ld hl, $671f
.asm_1e655
push bc
dec b
sla b
ld e, b
ld d, $0
add hl, de
ld c, [hl]
inc hl
ld b, [hl]
ld a, $7
ld de, LoadTileLists
call Func_10c5
pop bc
ret
Func_1e66a: ; 0x1e66a
ld a, [$d513]
and a
jr z, .asm_1e6a0
ld a, [$d514]
dec a
ld [$d514], a
jr nz, .asm_1e687
ld [$d513], a
ld a, $1
ld [$d608], a
ld a, $3
ld [$d607], a
xor a
.asm_1e687
and $7
ret nz
ld a, [$d514]
srl a
srl a
srl a
and $1
ld hl, $d50f
ld [hli], a
ld [hli], a
ld [hli], a
ld [hl], a
ld a, $1
and a
ret
.asm_1e6a0
ld hl, wKeyConfigLeftFlipper
call IsKeyPressed
jr z, .asm_1e6bc
ld hl, $d50f
ld a, [hli]
ld c, a
ld a, [hli]
ld b, a
ld a, [hli]
ld e, a
ld a, [hl]
ld d, a
ld a, c
ld [hld], a
ld a, d
ld [hld], a
ld a, e
ld [hld], a
ld a, b
ld [hl], a
ret
.asm_1e6bc
ld hl, wKeyConfigRightFlipper
call IsKeyPressed
ret z
ld hl, $d50f
ld a, [hli]
ld c, a
ld a, [hli]
ld b, a
ld a, [hli]
ld e, a
ld a, [hl]
ld d, a
ld a, e
ld [hld], a
ld a, b
ld [hld], a
ld a, c
ld [hld], a
ld a, d
ld [hl], a
ret
INCBIN "baserom.gbc",$1e6d7,$1e757 - $1e6d7
Func_1e757: ; 0x1e757
ld a, [$d601]
and a
jr z, .asm_1e78c
xor a
ld [$d601], a
ld a, [$d604]
and a
ret z
ld a, [$d603]
and a
jr nz, .asm_1e78c
xor a
ld hl, wBallXVelocity
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [$d549], a
ld [wBallXPos], a
ld [wBallYPos], a
ld a, $50
ld [wBallXPos + 1], a
ld a, $16
ld [wBallYPos + 1], a
ld a, $13
ld [$d603], a
.asm_1e78c
ld a, [$d603]
and a
ret z
dec a
ld [$d603], a
ld a, $18
ld [$d606], a
ld a, [$d603]
cp $12
jr nz, .asm_1e7b2
ld de, $0021
call PlaySoundEffect
ld [$ff8a], a
ld a, Bank(LoadMiniBallGfx)
ld hl, LoadMiniBallGfx
call BankSwitch
ret
.asm_1e7b2
cp $f
jr nz, .asm_1e7c1
ld [$ff8a], a
ld a, Bank(Func_dd62)
ld hl, Func_dd62
call BankSwitch
ret
.asm_1e7c1
cp $c
jr nz, .asm_1e7d0
xor a
ld [$d548], a
ld [wBallSpin], a
ld [wBallRotation], a
ret
.asm_1e7d0
cp $9
jr nz, .asm_1e7d8
call Func_1e830
ret
.asm_1e7d8
cp $6
jr nz, .asm_1e7f5
xor a
ld [$d604], a
ld a, $5
ld [$d803], a
ld a, $8
ld [$d804], a
ld [$ff8a], a
ld a, Bank(LoadMiniBallGfx)
ld hl, LoadMiniBallGfx
call BankSwitch
ret
.asm_1e7f5
cp $3
jr nz, .asm_1e80e
ld [$ff8a], a
ld a, Bank(LoadBallGfx)
ld hl, LoadBallGfx
call BankSwitch
ld a, $2
ld [wBallYVelocity + 1], a
ld a, $80
ld [wBallXVelocity], a
ret
.asm_1e80e
and a
ret nz
call Func_1e8f6
ld a, [$d622]
cp $1
ret nz
call GenRandom
and $8
ld [wRareMonsFlag], a
ld [$ff8a], a
ld a, Bank(StartCatchEmMode)
ld hl, StartCatchEmMode
call BankSwitch
xor a
ld [$d622], a
ret
Func_1e830: ; 0x1e830
xor a
ld [$d533], a
ld a, $d
ld [$ff8a], a
ld a, Bank(Func_10000)
ld hl, Func_10000
call BankSwitch
jr nc, .asm_1e84b
ld a, $1
ld [$d548], a
ld [$d549], a
ret
.asm_1e84b
ld a, [$d624]
cp $3
jr nz, .asm_1e891
ld a, [$d607]
and a
jr nz, .asm_1e891
.asm_1e858
ld a, [$d623]
and a
jr nz, .asm_1e867
xor a
ld [$d625], a
ld a, $40
ld [$d626], a
.asm_1e867
xor a
ld [$d623], a
ld a, $1
ld [$d495], a
ld [$d4ae], a
ld a, [$d498]
ld c, a
ld b, $0
ld hl, $68f1
add hl, bc
ld a, [hl]
ld [$d497], a
call Func_1e8c3
xor a
ld [$d609], a
ld [$d622], a
ld a, $1e
ld [$d607], a
ret
.asm_1e891
ld [$ff8a], a
ld a, Bank(Func_ed8e)
ld hl, Func_ed8e
call BankSwitch
xor a
ld [$d608], a
ld a, [$d61d]
cp $d
jr nc, .asm_1e858
ld a, $1
ld [$d548], a
ld [$d549], a
ld a, [$d622]
cp $2
ret nz
ld [$ff8a], a
ld a, Bank(Func_10ab3)
ld hl, Func_10ab3
call BankSwitch
xor a
ld [$d622], a
ret
Func_1e8c3: ; 0x1e8c3
call Func_30e8
call Func_30db
ld hl, $d5dc
ld a, [$d497]
ld de, $2ed2
cp $b
jr z, .asm_1e8e0
ld de, $2eec
cp $f
jr z, .asm_1e8e0
ld de, $2eb8
.asm_1e8e0
call Func_32aa
ld de, $0000
call Func_490
rst $10
ld de, $3c23
call PlaySoundEffect
ret
INCBIN "baserom.gbc",$1e8f1,$1e8f6 - $1e8f1
Func_1e8f6: ; 0x1e8f6
ld a, [wCurrentStage]
and $1
sla a
ld c, a
ld a, [$d604]
add c
sla a
ld c, a
ld b, $0
ld hl, $691e
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_1e912
ld hl, $6970
.asm_1e912
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
or h
ret z
ld a, $7
call Func_10aa
ret
INCBIN "baserom.gbc",$1e91e,$1e9c0 - $1e91e
Func_1e9c0: ; 0x1e9c0
ld a, [$d607]
and a
ret z
dec a
ld [$d607], a
ret nz
ld a, [wSpecialMode]
and a
ret nz
ld a, [$d609]
and a
jr z, .asm_1e9dc
ld a, [$d498]
add $15
jr .asm_1e9e3
.asm_1e9dc
ld a, [$d608]
and a
ret z
ld a, $1a
.asm_1e9e3
ld hl, wCurrentStage
bit 0, [hl]
ld [$ff8a], a
ld a, Bank(Func_30256)
ld hl, Func_30256
call nz, BankSwitch
ld a, [$d604]
and a
ret nz
ld a, $1
ld [$d604], a
ld a, $80
ld [$d533], a
ld a, [wCurrentStage]
bit 0, a
call nz, Func_1e8f6
ret
Func_1ea0a: ; 0x1ea0a
ld a, [$d604]
and a
ret z
ld a, [wBallYPos + 1]
sub $fe
cp $30
ret nc
ld c, $0
ld b, a
ld h, b
ld l, c
srl b
rr c
srl b
rr c
srl h
rr l
add hl, bc
ld a, [wBallXPos + 1]
sub $38
cp $30
ret nc
ld c, a
ld b, $0
sla c
sla c
add hl, bc
jr asm_1ea6a
Func_1ea3b: ; 0x1ea3b
ld a, [$d604]
and a
ret z
ld a, [wBallYPos + 1]
sub $86
cp $30
ret nc
ld c, $0
ld b, a
ld h, b
ld l, c
srl b
rr c
srl b
rr c
srl h
rr l
add hl, bc
ld a, [wBallXPos + 1]
sub $38
cp $30
ret nc
ld c, a
ld b, $0
sla c
sla c
add hl, bc
; fall through
asm_1ea6a: ; 0x1ea6a
ld bc, $4000
add hl, bc
ld de, wBallXVelocity
ld a, $3c
call Func_68f
ld c, a
ld a, [de]
add c
ld [de], a
inc de
inc hl
ld a, $3c
call Func_68f
ld b, a
ld a, [de]
adc b
ld [de], a
inc de
inc hl
push bc
ld a, $3c
call Func_68f
ld c, a
ld a, [de]
add c
ld [de], a
inc de
inc hl
ld a, $3c
call Func_68f
ld b, a
ld a, [de]
adc b
ld [de], a
inc de
inc hl
bit 7, b
jr z, .asm_1eaa9
ld a, c
cpl
ld c, a
ld a, b
cpl
ld b, a
inc bc
.asm_1eaa9
pop hl
bit 7, h
jr z, .asm_1eab5
ld a, l
cpl
ld l, a
ld a, h
cpl
ld h, a
inc hl
.asm_1eab5
add hl, bc
sla l
rl h
ld a, h
cp $2
ret c
ld a, [$d804]
and a
ret nz
ld a, $5
ld [$d803], a
ld a, $8
ld [$d804], a
ld de, $0004
call PlaySoundEffect
ret
Func_1ead4: ; 0x1ead4
ld a, [$ffb3]
and $f
ret nz
ld bc, $0000
.asm_1eadc
push bc
ld hl, $d52f
add hl, bc
ld a, [hl]
cp $1
jr z, .asm_1eaf8
bit 7, [hl]
jr z, .asm_1eaf8
ld a, [hl]
res 7, a
ld hl, $ffb3
bit 4, [hl]
jr z, .asm_1eaf5
inc a
.asm_1eaf5
call Func_1eb41
.asm_1eaf8
pop bc
inc c
ld a, c
cp $2
jr nz, .asm_1eadc
ld a, [$ffb3]
and $f
ret nz
ld a, [wCurrentStage]
bit 0, a
ret z
ld bc, $0002
.asm_1eb0d
push bc
ld hl, $d52f
add hl, bc
ld a, [hl]
cp $1
jr z, .asm_1eb29
bit 7, [hl]
jr z, .asm_1eb29
ld a, [hl]
res 7, a
ld hl, $ffb3
bit 4, [hl]
jr z, .asm_1eb2b
inc a
inc a
jr .asm_1eb2b
.asm_1eb29
ld a, $0
.asm_1eb2b
push af
ld hl, $d648
add hl, bc
dec hl
dec hl
ld a, [hl]
ld d, a
pop af
add d
call Func_1eb41
pop bc
inc c
ld a, c
cp $5
jr nz, .asm_1eb0d
ret
Func_1eb41: ; 0x1eb41
push af
sla c
ld hl, $6b61
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_1eb4f
ld hl, $6d51
.asm_1eb4f
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
pop af
sla a
ld c, a
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld a, $7
call Func_10aa
ret
INCBIN "baserom.gbc",$1eb61,$1ef09 - $1eb61
Func_1ef09: ; 0x1ef09
ld a, [wBlueStageForceFieldDirection]
cp $0 ; up direction
jp z, Func_1ef20
cp $1 ; right direction
jp z, Func_1ef4d
cp $2 ; down direction
jp z, Func_1ef7e
cp $3 ; left direction
jp z, Func_1efae
; fall through
; default to upward forcefield
Func_1ef20: ; 0x1ef20
ld a, [wBallYPos + 1]
sub $60
cp $30
ret nc
ld c, $0
ld b, a
ld h, b
ld l, c
srl b
rr c
srl b
rr c
srl h
rr l
add hl, bc
ld a, [wBallXPos + 1]
sub $38
cp $30
ret nc
ld c, a
ld b, $0
sla c
sla c
add hl, bc
jp Func_1efdc
Func_1ef4d: ; 0x1ef4d
ld a, [wBallXPos + 1]
sub $38
cp $30
ret nc
ld c, a
ld a, $30
sub c
ld c, $0
ld b, a
ld h, b
ld l, c
srl b
rr c
srl b
rr c
srl h
rr l
add hl, bc
ld a, [wBallYPos + 1]
sub $60
cp $30
ret nc
ld c, a
ld b, $0
sla c
sla c
add hl, bc
jp Func_1efdc
Func_1ef7e: ; 0x1ef7e
ld a, [wBallYPos + 1]
sub $60
cp $30
ret nc
ld c, a
ld a, $30
sub c
ld c, $0
ld b, a
ld h, b
ld l, c
srl b
rr c
srl b
rr c
srl h
rr l
add hl, bc
ld a, [wBallXPos + 1]
sub $38
cp $30
ret nc
ld c, a
ld b, $0
sla c
sla c
add hl, bc
jr Func_1efdc
Func_1efae: ; 0x1efae
ld a, [wBallXPos + 1]
sub $38
cp $30
ret nc
ld c, $0
ld b, a
ld h, b
ld l, c
srl b
rr c
srl b
rr c
srl h
rr l
add hl, bc
ld a, [wBallYPos + 1]
sub $60
cp $30
ret nc
ld c, a
ld a, $30
sub c
ld c, a
ld b, $0
sla c
sla c
add hl, bc
; fall through
Func_1efdc: ; 0x1efdc
ld a, [wBlueStageForceFieldDirection]
cp $0 ; up direction
jp z, Func_1eff3
cp $1 ; right direction
jp z, Func_1f0be
cp $2 ; down direction
jp z, Func_1f057
cp $3 ; left direction
jp z, Func_1f124
; fall through
; default to upward forcefield
Func_1eff3: ; 0x1eff3
ld bc, $4000
add hl, bc
ld de, wBallXVelocity
ld a, $3b
call Func_68f
ld c, a
ld a, [de]
add c
ld [de], a
inc de
inc hl
ld a, $3b
call Func_68f
ld b, a
ld a, [de]
adc b
ld [de], a
inc de
inc hl
push bc
ld a, $3b
call Func_68f
ld c, a
ld a, [de]
add c
ld [de], a
inc de
inc hl
ld a, $3b
call Func_68f
ld b, a
ld a, [de]
adc b
ld [de], a
inc de
inc hl
bit 7, b
jr z, .asm_1f032
ld a, c
cpl
ld c, a
ld a, b
cpl
ld b, a
inc bc
.asm_1f032
pop hl
bit 7, h
jr z, .asm_1f03e
ld a, l
cpl
ld l, a
ld a, h
cpl
ld h, a
inc hl
.asm_1f03e
add hl, bc
sla l
rl h
ld a, h
cp $2
ret c
ld a, [$d804]
and a
ret nz
ld a, $5
ld [$d803], a
ld a, $8
ld [$d804], a
ret
Func_1f057: ; 0x1f057
ld bc, $4000
add hl, bc
ld de, wBallXVelocity
bit 2, l
ret nz
ld a, $3b
call Func_68f
ld c, a
ld a, [de]
add c
ld [de], a
inc de
inc hl
ld a, $3b
call Func_68f
ld b, a
ld a, [de]
adc b
ld [de], a
inc de
inc hl
push bc
ld a, $3b
call Func_68f
ld c, a
ld a, [de]
sub c
ld [de], a
inc de
inc hl
ld a, $3b
call Func_68f
ld b, a
ld a, [de]
sbc b
ld [de], a
inc de
inc hl
bit 7, b
jr z, .asm_1f099
ld a, c
cpl
ld c, a
ld a, b
cpl
ld b, a
inc bc
.asm_1f099
pop hl
bit 7, h
jr z, .asm_1f0a5
ld a, l
cpl
ld l, a
ld a, h
cpl
ld h, a
inc hl
.asm_1f0a5
add hl, bc
sla l
rl h
ld a, h
cp $2
ret c
ld a, [$d804]
and a
ret nz
ld a, $5
ld [$d803], a
ld a, $8
ld [$d804], a
ret
Func_1f0be: ; 0x1f0be
ld bc, $4000
add hl, bc
ld de, wBallYVelocity
ld a, $3b
call Func_68f
ld c, a
ld a, [de]
add c
ld [de], a
inc de
inc hl
ld a, $3b
call Func_68f
ld b, a
ld a, [de]
adc b
ld [de], a
inc hl
push bc
dec de
dec de
dec de
ld a, $3b
call Func_68f
ld c, a
ld a, [de]
sub c
ld [de], a
inc de
inc hl
ld a, $3b
call Func_68f
ld b, a
ld a, [de]
sbc b
ld [de], a
inc de
inc hl
bit 7, b
jr z, .asm_1f0ff
ld a, c
cpl
ld c, a
ld a, b
cpl
ld b, a
inc bc
.asm_1f0ff
pop hl
bit 7, h
jr z, .asm_1f10b
ld a, l
cpl
ld l, a
ld a, h
cpl
ld h, a
inc hl
.asm_1f10b
add hl, bc
sla l
rl h
ld a, h
cp $2
ret c
ld a, [$d804]
and a
ret nz
ld a, $5
ld [$d803], a
ld a, $8
ld [$d804], a
ret
Func_1f124: ; 0x1f124
ld bc, $4000
add hl, bc
ld de, wBallYVelocity
ld a, $3b
call Func_68f
ld c, a
ld a, [de]
sub c
ld [de], a
inc de
inc hl
ld a, $3b
call Func_68f
ld b, a
ld a, [de]
sbc b
ld [de], a
inc hl
push bc
dec de
dec de
dec de
ld a, $3b
call Func_68f
ld c, a
ld a, [de]
add c
ld [de], a
inc de
inc hl
ld a, $3b
call Func_68f
ld b, a
ld a, [de]
adc b
ld [de], a
inc de
inc hl
bit 7, b
jr z, .asm_1f165
ld a, c
cpl
ld c, a
ld a, b
cpl
ld b, a
inc bc
.asm_1f165
pop hl
bit 7, h
jr z, .asm_1f171
ld a, l
cpl
ld l, a
ld a, h
cpl
ld h, a
inc hl
.asm_1f171
add hl, bc
sla l
rl h
ld a, h
cp $2
ret c
ld a, [$d804]
and a
ret nz
ld a, $5
ld [$d803], a
ld a, $8
ld [$d804], a
ret
Func_1f18a: ; 0x1f18a
ld a, [$d640]
cp $0
jr z, .asm_1f1b4
ld a, [wBlueStageForceFieldDirection]
sla a
ld c, a
ld b, $0
ld hl, $71b5
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_1f1a4
ld hl, $7201
.asm_1f1a4
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
or h
ret z
ld a, $7
call Func_10aa
ld a, $0
ld [$d640], a
.asm_1f1b4
ret
INCBIN "baserom.gbc",$1f1b5,$1f261 - $1f1b5
Func_1f261: ; 0x1f261
call Func_1f27b
ret nc
; fall through
Func_1f265: ; 0x1f265
sla a
ld c, a
ld b, $0
ld hl, $72b9
add hl, bc
ld a, [hli]
ld c, a
ld a, [hli]
ld b, a
ld a, $7
ld de, LoadTileLists
call Func_10c5
ret
Func_1f27b: ; 0x1f27b
ld a, [$d624]
ld hl, $d625
cp [hl]
ret z
ld a, [$d626]
dec a
ld [$d626], a
jr nz, .asm_1f2a5
ld a, [$d625]
ld [$d624], a
cp $3
jr c, .asm_1f2a0
ld a, $1
ld [$d609], a
ld a, $3
ld [$d607], a
.asm_1f2a0
ld a, [$d624]
scf
ret
.asm_1f2a5
and $7
ret nz
ld a, [$d626]
bit 3, a
jr nz, .asm_1f2b4
ld a, [$d624]
scf
ret
.asm_1f2b4
ld a, [$d625]
scf
ret
INCBIN "baserom.gbc",$1f2b9,$1f2ed - $1f2b9
Func_1f2ed: ; 0x1f2ed
xor a
ld [$d604], a
ld [$d533], a
ld [$ff8a], a
ld a, Bank(Func_1e8f6) ; this is in the same bank...
ld hl, Func_1e8f6
call BankSwitch
ret
Func_1f2ff: ; 0x1f2ff
ld a, [wLeftAlleyCount]
cp $3
jr c, .asm_1f30b
ld a, $80
ld [$d531], a
.asm_1f30b
ld a, [wLeftAlleyCount]
cp $3
jr z, .asm_1f314
set 7, a
.asm_1f314
ld [$d52f], a
ld a, [wRightAlleyCount]
cp $2
jr c, .asm_1f323
ld a, $80
ld [$d532], a
.asm_1f323
ld a, [wRightAlleyCount]
cp $3
jr z, .asm_1f32c
set 7, a
.asm_1f32c
ld [$d530], a
ret
Func_1f330: ; 0x1f330
ld bc, $7f00
ld [$ff8a], a
ld a, Bank(Func_175a4)
ld hl, Func_175a4
call BankSwitch
call Func_1f395
call Func_1f3e1
call Func_1f408
call Func_1f428
ld [$ff8a], a
ld a, Bank(Func_17e81)
ld hl, Func_17e81
call BankSwitch
call Func_1f48f
call Func_1f4f8
ret
Func_1f35a: ; 0x1f35a
ld bc, $7f00
ld [$ff8a], a
ld a, Bank(Func_175a4)
ld hl, Func_175a4
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_17c67)
ld hl, Func_17c67
call BankSwitch
call Func_1f58b
call Func_1f448
ld [$ff8a], a
ld a, Bank(Func_e4a1)
ld hl, Func_e4a1
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_17e81)
ld hl, Func_17e81
call BankSwitch
call Func_1f4a3
call Func_1f509
call Func_1f55e
ret
Func_1f395: ; 0x1f395
ld de, $d4cd
ld hl, $73cf
call Func_1f3ad
ld de, $d4d0
ld hl, $73d5
call Func_1f3ad
ld de, $d4d3
ld hl, $73db
; fall through
Func_1f3ad: ; 0x1f3ad
ld a, [hBoardXShift]
ld b, a
ld a, [hli]
sub b
ld b, a
ld a, [hBoardYShift]
ld c, a
ld a, [hli]
sub c
ld c, a
ld a, [$d4d7]
sub [hl]
inc hl
jr z, .asm_1f3c4
ld a, $0
jr .asm_1f3c6
.asm_1f3c4
ld a, $1
.asm_1f3c6
ld e, a
ld d, $0
add hl, de
ld a, [hl]
call LoadOAMData
ret
INCBIN "baserom.gbc",$1f3cf,$1f3e1 - $1f3cf
Func_1f3e1: ; 0x1f3e1
ld a, $8a
ld hl, hBoardXShift
sub [hl]
ld b, a
ld a, $53
ld hl, hBoardYShift
sub [hl]
ld c, a
ld a, [$d50a]
srl a
srl a
ld e, a
ld d, $0
ld hl, $7402
add hl, de
ld a, [hl]
call LoadOAMData
ret
INCBIN "baserom.gbc",$1f402,$1f408 - $1f402
Func_1f408: ; 0x1f408
ld a, $18
ld hl, hBoardXShift
sub [hl]
ld b, a
ld a, $5f
ld hl, hBoardYShift
sub [hl]
ld c, a
ld a, [$d633]
ld e, a
ld d, $0
ld hl, $7425
add hl, de
ld a, [hl]
call LoadOAMData
ret
INCBIN "baserom.gbc",$1f425,$1f428 - $1f425
Func_1f428: ; 0x1f428
ld a, $70
ld hl, hBoardXShift
sub [hl]
ld b, a
ld a, $59
ld hl, hBoardYShift
sub [hl]
ld c, a
ld a, [$d638]
ld e, a
ld d, $0
ld hl, $7445
add hl, de
ld a, [hl]
call LoadOAMData
ret
INCBIN "baserom.gbc",$1f445,$1f448 - $1f445
Func_1f448: ; 0x1f448
ld a, [hBoardXShift]
ld d, a
ld a, [hBoardYShift]
ld e, a
ld a, [$d51d]
and a
ld a, [$d518]
jr z, .asm_1f473
ld a, [$d51c]
and a
jr nz, .asm_1f469
ld a, [$ffb3]
srl a
srl a
srl a
and $1
jr .asm_1f473
.asm_1f469
ld a, [$d4b4]
cp $50
ld a, $1
jr nc, .asm_1f473
xor a
.asm_1f473
sla a
ld c, a
ld b, $0
ld hl, $748b
add hl, bc
ld a, [hli]
sub d
ld b, a
ld a, [hli]
sub e
ld c, a
ld a, [$d51a]
add $e
call LoadOAMData
ret
INCBIN "baserom.gbc",$1f48b,$1f48f - $1f48b
Func_1f48f: ; 0x1f48f
ld a, [$d551]
and a
ret nz
ld a, [$ffb3]
bit 4, a
ret z
ld de, $d534
ld hl, $74ce
ld b, $6
jr asm_1f4b5
Func_1f4a3: ; 0x1f4a3
ld a, [$d551]
and a
ret nz
ld a, [$ffb3]
bit 4, a
ret z
ld de, $d53a
ld hl, $74e0
ld b, $8
asm_1f4b5:
push bc
ld a, [hBoardXShift]
ld b, a
ld a, [hli]
sub b
ld b, a
ld a, [hBoardYShift]
ld c, a
ld a, [hli]
sub c
ld c, a
ld a, [de]
and a
ld a, [hli]
call nz, LoadOAMData
pop bc
inc de
dec b
jr nz, asm_1f4b5
ret
INCBIN "baserom.gbc",$1f4ce,$1f4f8 - $1f4ce
Func_1f4f8: ; 0x1f4f8
ld a, [$d551]
and a
ret z
ld de, $d566
ld hl, $753a
ld b, $c
ld c, $47
jr asm_1f518
Func_1f509: ; 0x1f509
ld a, [$d551]
and a
ret z
ld de, $d572
ld hl, $7552
ld b, $6
ld c, $40
asm_1f518: ; 0x1f518
push bc
ld a, [de]
add c
cp c
push af
ld a, [hBoardXShift]
ld b, a
ld a, [hli]
sub b
ld b, a
ld a, [hBoardYShift]
ld c, a
ld a, [hli]
sub c
ld c, a
ld a, [$ffb3]
and $e
jr nz, .asm_1f530
dec c
.asm_1f530
pop af
call nz, LoadOAMData
pop bc
inc de
dec b
jr nz, asm_1f518
ret
INCBIN "baserom.gbc",$1f53a,$1f55e - $1f53a
Func_1f55e: ; 0x1f55e
ld a, [$d604]
and a
ret z
ld a, [$d606]
inc a
ld [$d606], a
ld a, $40
ld hl, hBoardXShift
sub [hl]
ld b, a
ld a, $1
ld hl, hBoardYShift
sub [hl]
ld c, a
ld a, [$d606]
srl a
srl a
srl a
and $3
add $4f
cp $52
call nz, LoadOAMData
ret
Func_1f58b: ; 0x1f58b
ld a, [$d5bb]
and a
ret z
ld a, $50
ld hl, hBoardXShift
sub [hl]
ld b, a
ld a, $3e
ld hl, hBoardYShift
sub [hl]
ld c, a
ld a, [$d5bd]
ld e, a
ld d, $0
ld hl, $75ad
add hl, de
ld a, [hl]
call LoadOAMData
ret
INCBIN "baserom.gbc",$1f5ad,$20000 - $1f5ad
SECTION "bank8", ROMX, BANK[$8]
Func_20000: ; 0x20000
ld a, [$d54c]
cp $4
jp z, Func_20230
cp $c
jp z, Func_202a8
cp $5
jp z, Func_202b2
cp $0
jr z, .asm_20018
scf
ret
.asm_20018
call Func_201f2
ld a, [$d54d]
call CallInFollowingTable
PointerTable_20021: ; 0x20021
dw Func_20041
db Bank(Func_20041), $00
dw Func_2005f
db Bank(Func_2005f), $00
dw Func_2006b
db Bank(Func_2006b), $00
dw Func_200a3
db Bank(Func_200a3), $00
dw Func_200d3
db Bank(Func_200d3), $00
dw Func_20193
db Bank(Func_20193), $00
dw Func_201c2
db Bank(Func_201c2), $00
dw Func_201ce
db Bank(Func_201ce), $00
Func_20041: ; 0x20041
ld a, [$d5b6]
cp $18
jr nz, .asm_2005d
ld a, [wCurrentStage]
bit 0, a
jr z, .asm_2005d
ld hl, $d54d
inc [hl]
ld a, $14
ld [$d54e], a
ld a, $5
ld [$d54f], a
.asm_2005d
scf
ret
Func_2005f: ; 0x2005f
ld [$ff8a], a
ld a, Bank(Func_10648)
ld hl, Func_10648
call BankSwitch
scf
ret
Func_2006b: ; 0x2006b
ld a, [wCurrentStage]
bit 0, a
jr z, .asm_20098
call Func_1130
jr nz, .asm_200a1
ld [$ff8a], a
ld a, Bank(Func_10414)
ld hl, Func_10414
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_10362)
ld hl, Func_10362
call BankSwitch
ld a, [hGameBoyColorFlag]
and a
ld [$ff8a], a
ld a, Bank(Func_10301)
ld hl, Func_10301
call nz, BankSwitch
.asm_20098
ld a, $1
ld [$d5c6], a
ld hl, $d54d
inc [hl]
.asm_200a1
scf
ret
Func_200a3: ; 0x200a3
ld a, [wCurrentStage]
bit 0, a
jr z, .asm_200af
call Func_1130
jr nz, .asm_200d1
.asm_200af
ld [$ff8a], a
ld a, Bank(Func_10678)
ld hl, Func_10678
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_10732)
ld hl, Func_10732
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_10464)
ld hl, Func_10464
call BankSwitch
ld hl, $d54d
inc [hl]
.asm_200d1
scf
ret
Func_200d3: ; 0x200d3
ld a, [$d5be]
dec a
ld [$d5be], a
jr z, .asm_200e6
ld a, [$d5c4]
inc a
ld [$d5c4], a
and $3
ret nz
.asm_200e6
ld a, [$d5bf]
and a
jp z, .asm_20167
xor a
ld [$d5bf], a
ld a, [$d5c3]
ld [$d5be], a
xor a
ld [$d5c4], a
ld a, [wCurrentMon]
cp MEW - 1
jr nz, .notMew
ld a, [$d5c5]
inc a
ld [$d5c5], a
jr nz, .asm_20116
.notMew
ld a, [wNumMonHits]
cp $3
jr z, .hitMonThreeTimes
inc a
ld [wNumMonHits], a
.asm_20116
ld bc, $34dc
ld [$ff8a], a
ld a, Bank(Func_8588)
ld hl, Func_8588
call BankSwitch
ld bc, $0030
ld de, $0000
push bc
push de
call Func_30e8
call Func_30db
ld hl, $d5e9
ld de, $2a2a
call Func_3372
pop de
pop bc
ld hl, $d5e4
ld de, $2a21
call Func_3357
ld a, [wNumMonHits]
ld [$ff8a], a
ld a, Bank(Func_10611)
ld hl, Func_10611
call BankSwitch
ld c, $2
jr .asm_2018a
.hitMonThreeTimes
xor a
ld [$d57e], a
ld a, $1
ld [$d57f], a
ld hl, $d54d
inc [hl]
ld c, $2
jr .asm_2018a
.asm_20167
ld a, [$d5be]
and a
ret nz
ld a, [$d5bc]
ld c, a
ld a, [$d5bd]
sub c
cp $1
ld c, $0
jr nc, .asm_2017c
ld c, $1
.asm_2017c
ld b, $0
ld hl, $d5c1
add hl, bc
ld a, [hl]
ld [$d5be], a
xor a
ld [$d5c4], a
.asm_2018a
ld a, [$d5bc]
add c
ld [$d5bd], a
scf
ret
Func_20193: ; 0x20193
ld a, [$d580]
and a
jr z, .asm_2019e
xor a
ld [$d580], a
ret
.asm_2019e
ld [$ff8a], a
ld a, Bank(Func_10496)
ld hl, Func_10496
call BankSwitch
ld hl, $d54d
inc [hl]
ld [$ff8a], a
ld a, Bank(Func_106b6)
ld hl, Func_106b6
call BankSwitch
ld [$ff8a], a
ld a, Bank(AddCaughtPokemonToParty)
ld hl, AddCaughtPokemonToParty
call BankSwitch
scf
ret
Func_201c2: ; 0x201c2
ld [$ff8a], a
ld a, Bank(Func_1052d)
ld hl, Func_1052d
call BankSwitch
scf
ret
Func_201ce: ; 0x201ce
ld a, [$d5ca]
and a
ret nz
call Func_30e8
ld [$ff8a], a
ld a, Bank(Func_dc00)
ld hl, Func_dc00
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_10157)
ld hl, Func_10157
call BankSwitch
ld de, $0001
call Func_490
scf
ret
Func_201f2: ; 0x201f2
ld [$ff8a], a
ld a, Bank(Func_107f8)
ld hl, Func_107f8
call BankSwitch
ld a, [$d57e]
and a
ret z
xor a
ld [$d57e], a
ld a, $7
ld [$d54d], a
ld a, [wCurrentMon]
cp $96
jr nz, .asm_2021b
ld [$ff8a], a
ld a, Bank(Func_1077c)
ld hl, Func_1077c
call BankSwitch
.asm_2021b
ld [$ff8a], a
ld a, Bank(Func_86d2)
ld hl, Func_86d2
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_106a6)
ld hl, Func_106a6
call BankSwitch
ret
Func_20230: ; 0x20230
ld a, [$d5b6]
cp $18
jr z, .asm_2029d
sla a
ld c, a
ld b, $0
ld hl, $d586
add hl, bc
ld d, $4
.asm_20242
ld a, $1
ld [hli], a
inc hl
ld a, l
cp $b6
jr z, .asm_2024e
dec d
jr nz, .asm_20242
.asm_2024e
ld a, [$d5b6]
add $4
cp $18
jr c, .asm_20259
ld a, $18
.asm_20259
ld [$d5b6], a
cp $18
jr nz, .asm_20264
xor a
ld [$d538], a
.asm_20264
ld [$ff8a], a
ld a, Bank(Func_10184)
ld hl, Func_10184
call BankSwitch
ld bc, $34d6
ld [$ff8a], a
ld a, Bank(Func_8588)
ld hl, Func_8588
call BankSwitch
ld bc, $0010
ld de, $0000
push bc
push de
call Func_30e8
call Func_30db
ld hl, $d5e9
ld de, $2a3d
call Func_3372
pop de
pop bc
ld hl, $d5e4
ld de, $2a30
call Func_3357
.asm_2029d
ld bc, $0001
ld de, $0000
call Func_3538
scf
ret
Func_202a8: ; 0x202a8
ld bc, $0000
ld de, $1000
call Func_3538
ret
Func_202b2: ; 0x202b2
ld bc, $0005
ld de, $0000
call Func_3538
ret
Func_202bc: ; 0x202bc
ld a, [$d54c]
cp $4
jp z, Func_204f1
cp $c
jp z, Func_20569
cp $f
jp z, Func_20573
cp $e
jp z, Func_2057a
cp $0
jr z, .asm_202d9
scf
ret
.asm_202d9
call Func_204b3
ld a, [$d54d]
call CallInFollowingTable
PointerTable_202e2: ; 0x202e2
dw Func_20302
db Bank(Func_20302), $00
dw Func_20320
db Bank(Func_20320), $00
dw Func_2032c
db Bank(Func_2032c), $00
dw Func_20364
db Bank(Func_20364), $00
dw Func_20394
db Bank(Func_20394), $00
dw Func_20454
db Bank(Func_20454), $00
dw Func_20483
db Bank(Func_20483), $00
dw Func_2048f
db Bank(Func_2048f), $00
Func_20302: ; 0x20302
ld a, [$d5b6]
cp $18
jr nz, .asm_2031e
ld a, [wCurrentStage]
bit 0, a
jr z, .asm_2031e
ld hl, $d54d
inc [hl]
ld a, $14
ld [$d54e], a
ld a, $5
ld [$d54f], a
.asm_2031e
scf
ret
Func_20320: ; 0x20320
ld [$ff8a], a
ld a, Bank(Func_10648)
ld hl, Func_10648
call BankSwitch
scf
ret
Func_2032c: ; 0x2032c
ld a, [wCurrentStage]
bit 0, a
jr z, .asm_20333
call Func_1130
jr nz, .asm_20362
ld [$ff8a], a
ld a, Bank(Func_10414)
ld hl, Func_10414
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_10362)
ld hl, Func_10362
call BankSwitch
ld a, [hGameBoyColorFlag]
and a
ld [$ff8a], a
ld a, Bank(Func_10301)
ld hl, Func_10301
call nz, BankSwitch
.asm_20333
ld a, $1
ld [$d5c6], a
ld hl, $d54d
inc [hl]
.asm_20362
scf
ret
Func_20364: ; 0x20364
ld a, [wCurrentStage]
bit 0, a
jr z, .asm_20370
call Func_1130
jr nz, .asm_20392
.asm_20370
ld [$ff8a], a
ld a, Bank(Func_10678)
ld hl, Func_10678
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_10732)
ld hl, Func_10732
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_10464)
ld hl, Func_10464
call BankSwitch
ld hl, $d54d
inc [hl]
.asm_20392
scf
ret
Func_20394: ; 0x20394
ld a, [$d5be]
dec a
ld [$d5be], a
jr z, .asm_203a7
ld a, [$d5c4]
inc a
ld [$d5c4], a
and $3
ret nz
.asm_203a7
ld a, [$d5bf]
and a
jp z, .asm_20428
xor a
ld [$d5bf], a
ld a, [$d5c3]
ld [$d5be], a
xor a
ld [$d5c4], a
ld a, [wCurrentMon]
cp MEW - 1
jr nz, .notMew
ld a, [$d5c5]
inc a
ld [$d5c5], a
jr nz, .asm_203d7
.notMew
ld a, [wNumMonHits]
cp $3
jr z, .asm_20417
inc a
ld [wNumMonHits], a
.asm_203d7
ld bc, $34dc
ld [$ff8a], a
ld a, Bank(Func_8588)
ld hl, Func_8588
call BankSwitch
ld bc, $0030
ld de, $0000
push bc
push de
call Func_30e8
call Func_30db
ld hl, $d5e9
ld de, $2a2a
call Func_3372
pop de
pop bc
ld hl, $d5e4
ld de, $2a21
call Func_3357
ld a, [wNumMonHits]
ld [$ff8a], a
ld a, Bank(Func_10611)
ld hl, Func_10611
call BankSwitch
ld c, $2
jr .asm_2044b
.asm_20417
xor a
ld [$d57e], a
ld a, $1
ld [$d57f], a
ld hl, $d54d
inc [hl]
ld c, $2
jr .asm_2044b
.asm_20428
ld a, [$d5be]
and a
ret nz
ld a, [$d5bc]
ld c, a
ld a, [$d5bd]
sub c
cp $1
ld c, $0
jr nc, .asm_2043d
ld c, $1
.asm_2043d
ld b, $0
ld hl, $d5c1
add hl, bc
ld a, [hl]
ld [$d5be], a
xor a
ld [$d5c4], a
.asm_2044b
ld a, [$d5bc]
add c
ld [$d5bd], a
scf
ret
Func_20454: ; 0x20454
ld a, [$d580]
and a
jr z, .asm_2045f
xor a
ld [$d580], a
ret
.asm_2045f
ld [$ff8a], a
ld a, Bank(Func_10496)
ld hl, Func_10496
call BankSwitch
ld hl, $d54d
inc [hl]
ld [$ff8a], a
ld a, Bank(Func_106b6)
ld hl, Func_106b6
call BankSwitch
ld [$ff8a], a
ld a, Bank(AddCaughtPokemonToParty)
ld hl, AddCaughtPokemonToParty
call BankSwitch
scf
ret
Func_20483: ; 0x20483
ld [$ff8a], a
ld a, Bank(Func_1052d)
ld hl, Func_1052d
call BankSwitch
scf
ret
Func_2048f: ; 0x2048f
ld a, [$d5ca]
and a
ret nz
call Func_30e8
ld [$ff8a], a
ld a, Bank(Func_dc00)
ld hl, Func_dc00
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_10157)
ld hl, Func_10157
call BankSwitch
ld de, $0001
call Func_490
scf
ret
Func_204b3: ; 0x204b3
ld [$ff8a], a
ld a, Bank(Func_107f8)
ld hl, Func_107f8
call BankSwitch
ld a, [$d57e]
and a
ret z
xor a
ld [$d57e], a
ld a, $7
ld [$d54d], a
ld a, [wCurrentMon]
cp MEW - 1
jr nz, .notMew
ld [$ff8a], a
ld a, Bank(Func_1077c)
ld hl, Func_1077c
call BankSwitch
.notMew
ld [$ff8a], a
ld a, Bank(Func_86d2)
ld hl, Func_86d2
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_106a6)
ld hl, Func_106a6
call BankSwitch
ret
Func_204f1: ; 0x204f1
ld a, [$d5b6]
cp $18
jr z, .asm_2055e
sla a
ld c, a
ld b, $0
ld hl, $d586
add hl, bc
ld d, $4
.asm_20503
ld a, $1
ld [hli], a
inc hl
ld a, l
cp $b6 ; TODO: This is the low byte of a pointer
jr z, .asm_2050f
dec d
jr nz, .asm_20503
.asm_2050f
ld a, [$d5b6]
add $4
cp $18
jr c, .asm_2051a
ld a, $18
.asm_2051a
ld [$d5b6], a
cp $18
jr nz, .asm_20525
xor a
ld [$d538], a
.asm_20525
ld [$ff8a], a
ld a, Bank(Func_10184)
ld hl, Func_10184
call BankSwitch
ld bc, $34d6
ld [$ff8a], a
ld a, Bank(Func_8588)
ld hl, Func_8588
call BankSwitch
ld bc, $0010
ld de, $0000
push bc
push de
call Func_30e8
call Func_30db
ld hl, $d5e9
ld de, $2a3d
call Func_3372
pop de
pop bc
ld hl, $d5e4
ld de, $2a30
call Func_3357
.asm_2055e
ld bc, $0001
ld de, $0000
call Func_3538
scf
ret
Func_20569: ; 0x20569
ld bc, $0000
ld de, $1000
call Func_3538
ret
Func_20573: ; 0x20573
ld bc, $0005
ld de, $0000
ret
Func_2057a: ; 0x2057a
ld bc, $0005
ld de, $0000
ret
Func_20581: ; 0x20581
ld a, [$d54c]
cp $4
jp z, Func_2080f
cp $3
jp z, Func_20839
cp $5
jp z, Func_2085a
cp $6
jp z, Func_20887
cp $7
jp z, Func_208a8
cp $8
jp z, Func_208c9
cp $9
jp z, Func_208ea
cp $a
jp z, Func_2090b
cp $b
jp z, Func_2092c
cp $c
jp z, Func_2094d
cp $d
jp z, Func_20b02
cp $2
jp z, Func_20a65
cp $1
jp z, Func_20a82
cp $0
jr z, .asm_205cb
scf
ret
.asm_205cb
call Func_2077b
ld a, [$d54d]
call CallInFollowingTable
PointerTable_205d4: ; 0x205d4
dw Func_205e0
db Bank(Func_205e0), $00
dw Func_2070b
db Bank(Func_2070b), $00
dw Func_20757
db Bank(Func_20757), $00
Func_205e0: ; 0x205e0
ld a, [wCurrentStage]
ld b, a
ld a, [$d578]
and a
ret z
dec a
bit 0, b
jr z, .asm_205f0
add $c
.asm_205f0
ld c, a
ld b, $0
ld hl, $d566
add hl, bc
ld a, [hl]
and a
ret z
xor a
ld [hl], a
ld [$d551], a
call Func_20651
ld a, [$d558]
ld [$d531], a
ld a, [$d559]
ld [$d532], a
ld [$d539], a
ld a, [wCurrentStage]
bit 0, a
ld [$ff8a], a
ld a, Bank(Func_14135)
ld hl, Func_14135
call nz, BankSwitch
ld bc, $34e8
ld [$ff8a], a
ld a, Bank(Func_8588)
ld hl, Func_8588
call BankSwitch
call Func_30e8
call Func_30db
ld de, $2bd8
ld hl, $d5cc
call Func_32aa
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_2064f
ld a, $37
ld hl, $4af0
ld de, $0070
ld bc, $0008
call Func_7dc
.asm_2064f
scf
ret
Func_20651: ; 0x20651
ld a, [wCurrentStage]
bit 0, a
jr z, .asm_20681
ld a, [$d553]
dec a
ld c, a
ld b, $0
swap c
sla c
ld hl, $4e80
add hl, bc
ld a, [$d554]
ld c, a
ld b, $0
swap c
sla c
push hl
ld hl, $8ae0
add hl, bc
ld d, h
ld e, l
pop hl
ld bc, $0020
ld a, $36
call LoadVRAMData
.asm_20681
ld a, [$d554]
inc a
ld [$d554], a
cp $1
jr nz, .asm_20693
ld de, $0728
call PlaySoundEffect
ret
.asm_20693
cp $2
jr nz, .asm_2069e
ld de, $0744
call PlaySoundEffect
ret
.asm_2069e
cp $3
ret nz
ld de, $0745
call PlaySoundEffect
ld a, $1
ld [$d604], a
ld a, $80
ld [$d533], a
xor a
ld [$d538], a
ld [$d531], a
ld [$d532], a
ld [$d539], a
ld [$d537], a
ld [$d53c], a
ld [$d53d], a
ld [$d53a], a
ld [$d53b], a
ld [$d535], a
ld [$d536], a
ld [$d558], a
ld [$d559], a
ld a, [wCurrentStage]
bit 0, a
ret z
ld a, $36
ld hl, $6c60
ld de, $8200
ld bc, $00e0
call LoadVRAMData
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_20700
ld a, $37
ld hl, $4af8
ld de, $0078
ld bc, $0008
call Func_7dc
.asm_20700
ld [$ff8a], a
ld a, Bank(Func_16425)
ld hl, Func_16425
call BankSwitch
ret
Func_2070b: ; 0x2070b
ld [$ff8a], a
ld a, Bank(Func_dc00)
ld hl, Func_dc00
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_10ca5)
ld hl, Func_10ca5
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_10ac8)
ld hl, Func_10ac8
call BankSwitch
ld de, $0001
call Func_490
ld hl, $d629
call Func_e4a
ld [$ff8a], a
ld a, Bank(Func_1077c)
ld hl, Func_1077c
call BankSwitch
ld a, [$d624]
cp $3
ret z
add $2
cp $3
jr c, .asm_2074d
ld a, $3
.asm_2074d
ld [$d625], a
ld a, $80
ld [$d626], a
scf
ret
Func_20757: ; 0x20757
ld a, [$d5ca]
and a
ret nz
call Func_30e8
ld [$ff8a], a
ld a, Bank(Func_dc00)
ld hl, Func_dc00
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_10ac8)
ld hl, Func_10ac8
call BankSwitch
ld de, $0001
call Func_490
scf
ret
Func_2077b: ; 0x2077b
ld hl, $d556
ld a, [hli]
ld c, a
ld b, [hl]
or b
jr z, .asm_2078e
dec bc
ld a, b
ld [hld], a
ld [hl], c
or c
jr nz, .asm_2078e
call Func_20a55
.asm_2078e
ld [$ff8a], a
ld a, Bank(Func_107f8)
ld hl, Func_107f8
call BankSwitch
ld a, [$d57e]
and a
ret z
xor a
ld [$d57e], a
ld a, $2
ld [$d54d], a
xor a
ld [$d604], a
ld hl, $d52f
ld [$d533], a
ld [$d538], a
ld [$d531], a
ld [$d532], a
ld [$d539], a
ld [$d537], a
ld [$d53c], a
ld [$d53d], a
ld [$d53a], a
ld [$d53b], a
ld [$d535], a
ld [$d536], a
ld [$d558], a
ld [$d559], a
ld [$d551], a
ld a, [wCurrentStage]
bit 0, a
jr z, .asm_207f5
ld [$ff8a], a
ld a, Bank(Func_14135)
ld hl, Func_14135
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_16425)
ld hl, Func_16425
call BankSwitch
.asm_207f5
ld [$ff8a], a
ld a, Bank(Func_86d2)
ld hl, Func_86d2
call BankSwitch
call Func_30e8
call Func_30db
ld hl, $d5cc
ld de, $2ad1
call Func_32aa
ret
Func_2080f: ; 0x2080f
ld bc, $0001
ld de, $5000
call Func_3538
ld a, [$d551]
and a
jr nz, .asm_20837
ld a, [$d538]
and a
jr z, .asm_20837
xor a
ld [$d538], a
ld a, [$d55c]
and a
ld a, $0
ld [$d55c], a
jp nz, Func_20977
jp Func_209eb
.asm_20837
scf
ret
Func_20839: ; 0x20839
ld a, [$d551]
and a
jr nz, .asm_20858
ld a, [$d531]
and a
jr z, .asm_20858
xor a
ld [$d531], a
ld a, [$d563]
and a
ld a, $0
ld [$d563], a
jp nz, Func_20977
jp Func_209eb
.asm_20858
scf
ret
Func_2085a: ; 0x2085a
ld bc, $0007
ld de, $5000
call Func_3538
ld a, [$d551]
and a
jr nz, .asm_20885
ld a, [$d532]
and a
jr z, .asm_20885
xor a
ld [$d532], a
ld [$d539], a
ld a, [$d562]
and a
ld a, $0
ld [$d562], a
jp nz, Func_20977
jp Func_209eb
.asm_20885
scf
ret
Func_20887: ; 0x20887
ld a, [$d551]
and a
jr nz, .asm_208a6
ld a, [$d537]
and a
jr z, .asm_208a6
xor a
ld [$d537], a
ld a, [$d561]
and a
ld a, $0
ld [$d561], a
jp nz, Func_20977
jp Func_209eb
.asm_208a6
scf
ret
Func_208a8: ; 0x208a8
ld a, [$d551]
and a
jr nz, .asm_208c7
ld a, [$d53c]
and a
jr z, .asm_208c7
xor a
ld [$d53c], a
ld a, [$d55d]
and a
ld a, $0
ld [$d55d], a
jp nz, Func_20977
jp Func_209eb
.asm_208c7
scf
ret
Func_208c9: ; 0x208c9
ld a, [$d551]
and a
jr nz, .asm_208e8
ld a, [$d53d]
and a
jr z, .asm_208e8
xor a
ld [$d53d], a
ld a, [$d55e]
and a
ld a, $0
ld [$d55e], a
jp nz, Func_20977
jp Func_209eb
.asm_208e8
scf
ret
Func_208ea: ; 0x208ea
ld a, [$d551]
and a
jr nz, .asm_20909
ld a, [$d53a]
and a
jr z, .asm_20909
xor a
ld [$d53a], a
ld a, [$d55f]
and a
ld a, $0
ld [$d55f], a
jp nz, Func_20977
jp Func_209eb
.asm_20909
scf
ret
Func_2090b: ; 0x2090b
ld a, [$d551]
and a
jr nz, .asm_2092a
ld a, [$d53b]
and a
jr z, .asm_2092a
xor a
ld [$d53b], a
ld a, [$d560]
and a
ld a, $0
ld [$d560], a
jp nz, Func_20977
jp Func_209eb
.asm_2092a
scf
ret
Func_2092c: ; 0x2092c
ld a, [$d551]
and a
jr nz, .asm_2094b
ld a, [$d535]
and a
jr z, .asm_2094b
xor a
ld [$d535], a
ld a, [$d565]
and a
ld a, $0
ld [$d565], a
jp nz, Func_20977
jp Func_209eb
.asm_2094b
scf
ret
Func_2094d: ; 0x2094d
ld bc, $0000
ld de, $1500
call Func_3538
ld a, [$d551]
and a
jr nz, .asm_20975
ld a, [$d536]
and a
jr z, .asm_20975
xor a
ld [$d536], a
ld a, [$d564]
and a
ld a, $0
ld [$d564], a
jp nz, Func_20977
jp Func_209eb
.asm_20975
scf
ret
Func_20977: ; 0x20977
ld de, $0746
call PlaySoundEffect
call Func_20af5
ld a, [$d553]
ld [hl], a
ld [$d551], a
ld a, [$d531]
ld [$d558], a
ld a, [$d532]
ld [$d559], a
xor a
ld [$d531], a
ld [$d532], a
ld [$d539], a
ld a, [wCurrentStage]
bit 0, a
ld [$ff8a], a
ld a, Bank(Func_14135)
ld hl, Func_14135
call nz, BankSwitch
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_209bf
ld a, $37
ld hl, $5188
ld de, $0070
ld bc, $0010
call Func_7dc
.asm_209bf
ld bc, $34dc
ld [$ff8a], a
ld a, Bank(Func_8588)
ld hl, Func_8588
call BankSwitch
call Func_30e8
call Func_30db
ld a, [$d553]
dec a
ld c, a
ld b, $0
sla c
ld hl, $2bf0
add hl, bc
ld a, [hli]
ld e, a
ld a, [hl]
ld d, a
ld hl, $d5cc
call Func_32aa
scf
ret
Func_209eb: ; 0x209eb
ld de, $0747
call PlaySoundEffect
ld a, $1
ld [$d551], a
ld a, $80
ld [$d52f], a
ld [$d530], a
ld a, [$d531]
ld [$d558], a
ld a, [$d532]
ld [$d559], a
xor a
ld [$d531], a
ld [$d532], a
ld [$d539], a
ld a, [wCurrentStage]
bit 0, a
ld [$ff8a], a
ld a, Bank(Func_14135)
ld hl, Func_14135
call nz, BankSwitch
ld a, $58
ld [$d556], a
ld a, $2
ld [$d557], a
ld bc, $34dc
ld [$ff8a], a
ld a, Bank(Func_8588)
ld hl, Func_8588
call BankSwitch
call Func_30e8
call Func_30db
ld hl, $d5cc
ld a, [$d553]
cp $7
ld de, $2b7b
jr z, .asm_20a50
ld de, $2b93
.asm_20a50
call Func_32aa
scf
ret
Func_20a55: ; 0x20a55
ld a, [$d551]
and a
jr z, .asm_20a63
ld a, [$d530]
and a
jr z, .asm_20a63
jr asm_20a9f
.asm_20a63
scf
ret
Func_20a65: ; 0x20a65
ld a, [$d551]
and a
jr z, .asm_20a80
ld a, [$d530]
and a
jr z, .asm_20a80
ld bc, $34d0
ld [$ff8a], a
ld a, Bank(Func_8588)
ld hl, Func_8588
call BankSwitch
jr asm_20a9f
.asm_20a80
scf
ret
Func_20a82: ; 0x20a82
ld a, [$d551]
and a
jr z, .asm_20a9d
ld a, [$d52f]
and a
jr z, .asm_20a9d
ld bc, $34d0
ld [$ff8a], a
ld a, Bank(Func_8588)
ld hl, Func_8588
call BankSwitch
jr asm_20a9f
.asm_20a9d
scf
ret
asm_20a9f:
xor a
ld [$d52f], a
ld [$d530], a
ld [$d551], a
ld a, [$d558]
ld [$d531], a
ld a, [$d559]
ld [$d532], a
ld [$d539], a
ld a, [$d4ac]
bit 0, a
ld [$ff8a], a
ld a, Bank(Func_14135)
ld hl, Func_14135
call nz, BankSwitch
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_20ada
ld a, $37
ld hl, $4af0
ld de, $0070
ld bc, $0008
call Func_7dc
.asm_20ada
call Func_30e8
call Func_30db
ld a, [$d553]
cp $7
ld de, $2ba9
jr z, .asm_20aed
ld de, $2bc2
.asm_20aed
ld hl, $d5cc
call Func_32aa
scf
ret
Func_20af5: ; 0x20af5
ld a, $11
call Func_a21
ld c, a
ld b, $0
ld hl, $d566
add hl, bc
ret
Func_20b02: ; 0x20b02
ld a, [$d552]
cp $ff
jr nz, .asm_20b0c
ld a, [wCurrentMon]
.asm_20b0c
ld c, a
ld b, $0
sla c
rl b
add c
ld c, a
jr nc, .asm_20b18
inc b
.asm_20b18
push bc
ld hl, $6b50
add hl, bc
ld a, $4
call Func_68f
inc hl
ld c, a
ld a, $4
call Func_68f
inc hl
ld b, a
ld a, $4
call Func_68f
ld h, b
ld l, c
ld de, $8900
ld bc, $0180
call Func_735
pop bc
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_20b80
push bc
ld hl, $6d15
add hl, bc
ld a, $4
call Func_68f
inc hl
ld e, a
ld a, $4
call Func_68f
inc hl
ld d, a
ld a, $4
call Func_68f
ld hl, $9887
call Func_86f
pop bc
ld hl, $6eda
add hl, bc
ld a, $4
call Func_68f
inc hl
ld e, a
ld a, $4
call Func_68f
inc hl
ld d, a
ld a, $4
call Func_68f
ld bc, $10b0
ld hl, $ff68
call Func_8e1
.asm_20b80
ld [$ff8a], a
ld a, Bank(Func_10e0a)
ld hl, Func_10e0a
call BankSwitch
call Func_3475
ld de, $0000
call Func_490
rst $10
ld de, $2d26
call PlaySoundEffect
ld [$ff8a], a
ld a, Bank(Func_10825)
ld hl, Func_10825
call BankSwitch
call Func_3475
ld a, $1
ld [$d54d], a
scf
ret
Func_20bae: ; 0x20bae
ld a, [$d54c]
cp $4
jp z, Func_20e34
cp $1
jp z, Func_21089
cp $e
jp z, Func_20e5e
cp $f
jp z, Func_20e82
cp $7
jp z, Func_20ea6
cp $8
jp z, Func_20ec7
cp $9
jp z, Func_20ee8
cp $a
jp z, Func_20f09
cp $b
jp z, Func_20f2a
cp $c
jp z, Func_20f4b
cp $d
jp z, Func_2112a
cp $2
jp z, Func_2105c
cp $0
jr z, .asm_20bf3
scf
ret
.asm_20bf3
call Func_20da0
ld a, [$d54d]
call CallInFollowingTable
PointerTable_20bfc: ; 0x20bfc
dw Func_20c08
db Bank(Func_20c08), $00
dw Func_20d30
db Bank(Func_20d30), $00
dw Func_20d7c
db Bank(Func_20d7c), $00
Func_20c08: ; 0x20c08
ld a, [wCurrentStage]
ld b, a
ld a, [$d578]
and a
ret z
dec a
bit 0, b
jr z, .asm_20c18
add $c
.asm_20c18
ld c, a
ld b, $0
ld hl, $d566
add hl, bc
ld a, [hl]
and a
ret z
xor a
ld [hl], a
ld [$d551], a
call Func_20c76
ld a, [$d558]
ld [$d52f], a
ld a, [$d559]
ld [$d532], a
ld a, [wCurrentStage]
bit 0, a
ld [$ff8a], a
ld a, Bank(Func_1c2cb)
ld hl, Func_1c2cb
call nz, BankSwitch
ld bc, $34e8
ld [$ff8a], a
ld a, $2
ld hl, $4588
.asm_20c4f
call BankSwitch
call Func_30e8
call Func_30db
ld de, $2bd8
ld hl, $d5cc
call Func_32aa
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_20c74
ld a, $37
ld hl, $4bf0
ld de, $0070
ld bc, $0008
call Func_7dc
.asm_20c74
scf
ret
Func_20c76: ; 0x20c76
ld a, [wCurrentStage]
bit 0, a
jr z, .asm_20ca6
ld a, [$d553]
dec a
ld c, a
ld b, $0
swap c
sla c
ld hl, $4e80
add hl, bc
ld a, [$d554]
ld c, a
ld b, $0
swap c
sla c
push hl
ld hl, $8ae0
add hl, bc
ld d, h
ld e, l
pop hl
ld bc, $0020
ld a, $36
call LoadVRAMData
.asm_20ca6
ld a, [$d554]
inc a
ld [$d554], a
cp $1
jr nz, .asm_20cb8
ld de, $0728
call PlaySoundEffect
ret
.asm_20cb8
cp $2
jr nz, .asm_20cc3
ld de, $0744
call PlaySoundEffect
ret
.asm_20cc3
cp $3
ret nz
ld de, $0745
call PlaySoundEffect
ld a, $1
ld [$d604], a
ld a, $80
ld [$d533], a
xor a
ld [$d538], a
ld [$d531], a
ld [$d532], a
ld [$d537], a
ld [$d53c], a
ld [$d53d], a
ld [$d53a], a
ld [$d53b], a
ld [$d539], a
ld [$d535], a
ld [$d536], a
ld [$d558], a
ld [$d559], a
ld a, [wCurrentStage]
bit 0, a
ret z
ld a, $36
ld hl, $6c60
ld de, $8200
ld bc, $00e0
call LoadVRAMData
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_20d25
ld a, $37
ld hl, $4bf8
ld de, $0078
ld bc, $0008
call Func_7dc
.asm_20d25
ld [$ff8a], a
ld a, Bank(Func_1e8f6)
ld hl, Func_1e8f6
call BankSwitch
ret
Func_20d30: ; 0x20d30
ld [$ff8a], a
ld a, Bank(Func_dc00)
ld hl, Func_dc00
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_10ca5)
ld hl, Func_10ca5
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_10ac8)
ld hl, Func_10ac8
call BankSwitch
ld de, $0001
call Func_490
ld hl, $d629
call Func_e4a
ld [$ff8a], a
ld a, Bank(Func_1077c)
ld hl, Func_1077c
call BankSwitch
ld a, [$d624]
cp $3
ret z
add $2
cp $3
jr c, .asm_20d72
ld a, $3
.asm_20d72
ld [$d625], a
ld a, $80
ld [$d626], a
scf
ret
Func_20d7c: ; 0x20d7c
ld a, [$d5ca]
and a
ret nz
call Func_30e8
ld [$ff8a], a
ld a, Bank(Func_dc00)
ld hl, Func_dc00
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_10ac8)
ld hl, Func_10ac8
call BankSwitch
ld de, $0001
call Func_490
scf
ret
Func_20da0: ; 0x20da0
ld hl, $d556
ld a, [hli]
ld c, a
ld b, [hl]
or b
jr z, .asm_20db3
dec bc
ld a, b
ld [hld], a
ld [hl], c
or c
jr nz, .asm_20db3
call Func_21079
.asm_20db3
ld [$ff8a], a
ld a, Bank(Func_107f8)
ld hl, Func_107f8
call BankSwitch
ld a, [$d57e]
and a
ret z
xor a
ld [$d57e], a
ld a, $2
ld [$d54d], a
xor a
ld [$d604], a
ld hl, $d52f
ld [$d533], a
ld [$d538], a
ld [$d531], a
ld [$d532], a
ld [$d537], a
ld [$d53c], a
ld [$d53d], a
ld [$d53a], a
ld [$d53b], a
ld [$d539], a
ld [$d535], a
ld [$d536], a
ld [$d558], a
ld [$d559], a
ld [$d551], a
ld a, [wCurrentStage]
bit 0, a
jr z, .asm_20e1a
ld [$ff8a], a
ld a, Bank(Func_1c2cb)
ld hl, Func_1c2cb
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_1e8f6)
ld hl, Func_1e8f6
call BankSwitch
.asm_20e1a
ld [$ff8a], a
ld a, Bank(Func_86d2)
ld hl, Func_86d2
call BankSwitch
call Func_30e8
call Func_30db
ld hl, $d5cc
ld de, $2ad1
call Func_32aa
ret
Func_20e34: ; 0x20e34
ld bc, $0001
ld de, $5000
call Func_3538
ld a, [$d551]
and a
jr nz, .asm_20e5c
ld a, [$d538]
and a
jr z, .asm_20e5c
xor a
ld [$d538], a
ld a, [$d55c]
and a
ld a, $0
ld [$d55c], a
jp nz, Func_20f75
jp Func_20fef
.asm_20e5c
scf
ret
Func_20e5e: ; 0x20e5e
ld a, [$d551]
and a
jr nz, .asm_20e80
ld a, [$d532]
and a
jr z, .asm_20e80
xor a
ld [$d532], a
ld [$d539], a
ld a, [$d562]
and a
ld a, $0
ld [$d562], a
jp nz, Func_20f75
jp Func_20fef
.asm_20e80
scf
ret
Func_20e82: ; 0x20e82
ld a, [$d551]
and a
jr nz, .asm_20ea4
ld a, [$d537]
and a
jr z, .asm_20ea4
xor a
ld [$d537], a
ld [$d531], a
ld a, [$d561]
and a
ld a, $0
ld [$d561], a
jp nz, Func_20f75
jp Func_20fef
.asm_20ea4
scf
ret
Func_20ea6: ; 0x20ea6
ld a, [$d551]
and a
jr nz, .asm_20ec5
ld a, [$d53c]
and a
jr z, .asm_20ec5
xor a
ld [$d53c], a
ld a, [$d55d]
and a
ld a, $0
ld [$d55d], a
jp nz, Func_20f75
jp Func_20fef
.asm_20ec5
scf
ret
Func_20ec7: ; 0x20ec7
ld a, [$d551]
and a
jr nz, .asm_20ee6
ld a, [$d53d]
and a
jr z, .asm_20ee6
xor a
ld [$d53d], a
ld a, [$d55e]
and a
ld a, $0
ld [$d55e], a
jp nz, Func_20f75
jp Func_20fef
.asm_20ee6
scf
ret
Func_20ee8: ; 0x20ee8
ld a, [$d551]
and a
jr nz, .asm_20f07
ld a, [$d53a]
and a
jr z, .asm_20f07
xor a
ld [$d53a], a
ld a, [$d55f]
and a
ld a, $0
ld [$d55f], a
jp nz, Func_20f75
jp Func_20fef
.asm_20f07
scf
ret
Func_20f09: ; 0x20f09
ld a, [$d551]
and a
jr nz, .asm_20f28
ld a, [$d53b]
and a
jr z, .asm_20f28
xor a
ld [$d53b], a
ld a, [$d560]
and a
ld a, $0
ld [$d560], a
jp nz, Func_20f75
jp Func_20fef
.asm_20f28
scf
ret
Func_20f2a: ; 0x20f2a
ld a, [$d551]
and a
jr nz, .asm_20f49
ld a, [$d535]
and a
jr z, .asm_20f49
xor a
ld [$d535], a
ld a, [$d565]
and a
ld a, $0
ld [$d565], a
jp nz, Func_20f75
jp Func_20fef
.asm_20f49
scf
ret
Func_20f4b: ; 0x20f4b
ld bc, $0000
ld de, $1500
call Func_3538
ld a, [$d551]
and a
jr nz, .asm_20f73
ld a, [$d536]
and a
jr z, .asm_20f73
xor a
ld [$d536], a
ld a, [$d564]
and a
ld a, $0
ld [$d564], a
jp nz, Func_20f75
jp Func_20fef
.asm_20f73
scf
ret
Func_20f75: ; 0x20f75
ld de, $0746
call PlaySoundEffect
call Func_2111d
ld a, [$d553]
ld [hl], a
ld [$d551], a
ld a, [$d52f]
ld [$d558], a
ld a, [$d532]
ld [$d559], a
ld a, [$d531]
ld [$d63f], a
xor a
ld [$d52f], a
ld [$d531], a
ld [$d532], a
ld a, [wCurrentStage]
bit 0, a
ld [$ff8a], a
ld a, Bank(Func_1c2cb)
ld hl, Func_1c2cb
call nz, BankSwitch
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_20fc3
ld a, $37
ld hl, $5188
ld de, $0070
ld bc, $0010
call Func_7dc
.asm_20fc3
ld bc, $34dc
ld [$ff8a], a
ld a, Bank(Func_8588)
ld hl, Func_8588
call BankSwitch
call Func_30e8
call Func_30db
ld a, [$d553]
dec a
ld c, a
ld b, $0
sla c
ld hl, $2bf0
add hl, bc
ld a, [hli]
ld e, a
ld a, [hl]
ld d, a
ld hl, $d5cc
call Func_32aa
scf
ret
Func_20fef: ; 0x20fef
ld de, $0747
call PlaySoundEffect
ld a, $1
ld [$d551], a
ld a, [$d52f]
ld [$d558], a
ld a, $80
ld [$d52f], a
ld [$d530], a
ld a, [$d532]
ld [$d559], a
ld a, [$d531]
ld [$d63f], a
xor a
ld [$d531], a
ld [$d532], a
ld a, [wCurrentStage]
bit 0, a
ld [$ff8a], a
ld a, Bank(Func_1c2cb)
ld hl, Func_1c2cb
call nz, BankSwitch
ld a, $58
ld [$d556], a
ld a, $2
ld [$d557], a
ld bc, $34dc
ld [$ff8a], a
ld a, Bank(Func_8588)
ld hl, Func_8588
call BankSwitch
call Func_30e8
call Func_30db
ld hl, $d5cc
ld a, [$d553]
cp $7
ld de, $2b7b
jr z, .asm_21057
ld de, $2b93
.asm_21057
call Func_32aa
scf
ret
Func_2105c: ; 0x2105c
ld a, [$d551]
and a
jr z, .asm_21077
ld a, [$d530]
and a
jr z, .asm_21077
ld bc, $34d0
ld [$ff8a], a
ld a, $2
ld hl, $4588
call BankSwitch
jr asm_210c7
.asm_21077
scf
ret
Func_21079: ; 0x21079
ld a, [$d551]
and a
jr z, .asm_21087
ld a, [$d530]
and a
jr z, .asm_21087
jr asm_210c7
.asm_21087
scf
ret
Func_21089: ; 0x21089
ld a, [$d551]
and a
jr nz, .asm_210aa
ld a, [$d52f]
and a
jr z, .asm_210a8
xor a
ld [$d52f], a
ld a, [$d563]
and a
ld a, $0
ld [$d563], a
jp nz, Func_20f75
jp Func_20fef
.asm_210a8
scf
ret
.asm_210aa
ld a, [$d551]
and a
jr z, .asm_210c5
ld a, [$d52f]
and a
jr z, .asm_210c5
ld bc, $34d0
ld [$ff8a], a
ld a, Bank(Func_8588)
ld hl, Func_8588
call BankSwitch
jr asm_210c7
.asm_210c5
scf
ret
asm_210c7:
xor a
ld [$d530], a
ld [$d551], a
ld a, [$d558]
ld [$d52f], a
ld a, [$d559]
ld [$d532], a
ld a, [$d63f]
ld [$d531], a
ld a, [wCurrentStage]
bit 0, a
ld [$ff8a], a
ld a, Bank(Func_1c2cb)
ld hl, Func_1c2cb
call nz, BankSwitch
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_21102
ld a, $37
ld hl, $4bf0
ld de, $0070
ld bc, $0008
call Func_7dc
.asm_21102
call Func_30e8
call Func_30db
ld a, [$d553]
cp $7
ld de, $2ba9
jr z, .asm_21115
ld de, $2bc2
.asm_21115
ld hl, $d5cc
call Func_32aa
scf
ret
Func_2111d: ; 0x2111d
ld a, $11
call Func_a21
ld c, a
ld b, $0
ld hl, $d566
add hl, bc
ret
Func_2112a: ; 0x2112a
ld a, [$d552]
cp $ff
jr nz, .asm_21134
ld a, [wCurrentMon]
.asm_21134
ld c, a
ld b, $0
sla c
rl b
add c
ld c, a
jr nc, .asm_21140
inc b
.asm_21140
push bc
ld hl, $6b50
add hl, bc
ld a, $4
call Func_68f
inc hl
ld c, a
ld a, $4
call Func_68f
inc hl
ld b, a
ld a, $4
call Func_68f
ld h, b
ld l, c
ld de, $8900
ld bc, $0180
call Func_735
pop bc
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_211a8
push bc
ld hl, $6d15
add hl, bc
ld a, $4
call Func_68f
inc hl
ld e, a
ld a, $4
call Func_68f
inc hl
ld d, a
ld a, $4
call Func_68f
ld hl, $9887
call Func_86f
pop bc
ld hl, $6eda
add hl, bc
ld a, $4
call Func_68f
inc hl
ld e, a
ld a, $4
call Func_68f
inc hl
ld d, a
ld a, $4
call Func_68f
ld bc, $10b0
ld hl, $ff68
call Func_8e1
.asm_211a8
ld [$ff8a], a
ld a, Bank(Func_10e0a)
ld hl, Func_10e0a
call BankSwitch
call Func_3475
ld de, $0000
call Func_490
rst $10
ld de, $2d26
call PlaySoundEffect
ld [$ff8a], a
ld a, Bank(Func_10825)
ld hl, Func_10825
call BankSwitch
call Func_3475
ld a, $1
ld [$d54d], a
scf
ret
INCBIN "baserom.gbc",$211d6,$24000 - $211d6
SECTION "bank9", ROMX, BANK[$9]
InitMeowthBonusStage: ; 0x24000
ld a, [$d7c1]
and a
ret nz
xor a
ld [$d4c8], a
ld [$d4af], a
ld a, [wBallType]
ld [wBallTypeBackup], a
xor a
ld [$d4c8], a
ld [wBallType], a
ld [$d49a], a
ld a, $1
ld [$d7ac], a
ld a, $40
ld [wMeowthXPosition], a
ld a, $20
ld [wMeowthYPosition], a
ld a, $10
ld [wMeowthAnimationFrameCounter], a
xor a
ld [wMeowthStageScore], a
ld [$d70b], a
ld [wMeowthStageBonusCounter], a
ld [$d713], a
ld [$d739], a
ld bc, $0100 ; 1 minute 0 seconds
ld [$ff8a], a
ld a, Bank(StartTimer)
ld hl, StartTimer
call BankSwitch
ld a, $12
call SetSongBank
ld de, $0004
call Func_490
ret
StartBallMeowthBonusStage: ; 0x24059
ld a, $0
ld [wBallXPos], a
ld a, $a6
ld [wBallXPos + 1], a
ld a, $0
ld [wBallYPos], a
ld a, $56
ld [wBallYPos + 1], a
ld a, $40
ld [wBallXVelocity], a
xor a
ld [$d7ab], a
ld [$d4af], a
ld [$d6e6], a
ld hl, $d6f3
ld b, $16
.asm_24081
ld a, [hl]
and a
jr z, .asm_24088
ld a, $1
ld [hl], a
.asm_24088
inc hl
dec b
jr nz, .asm_24081
ld a, $1
ld [$d7ac], a
ld a, $40
ld [wMeowthXPosition], a
ld a, $20
ld [wMeowthYPosition], a
ld a, $10
ld [wMeowthAnimationFrameCounter], a
ld a, $ff ; walk left
ld [wMeowthXMovement], a
xor a
ld [$d6ea], a
ld [$d6ec], a
ld [$d6eb], a
ld [$d70b], a
ld [$d70c], a
ld a, $c8
ld [$d71a], a
ld [$d727], a
ld [$d71b], a
ld [$d728], a
ld [$d71c], a
ld [$d729], a
ld [$d724], a
ld [$d731], a
ld [$d725], a
ld [$d732], a
ld [$d726], a
ld [$d733], a
xor a
ld [$d717], a
ld [$d718], a
ld [$d719], a
ld [$d721], a
ld [$d722], a
ld [$d723], a
ld [$d714], a
ld [$d715], a
ld [$d716], a
ld [$d71e], a
ld [$d71f], a
ld [$d720], a
ld [$d64e], a
ld [$d64f], a
ld [$d650], a
ld [$d651], a
ld [$d795], a
ld [$d796], a
ld [$d797], a
ld [$d798], a
ld [$d799], a
ld [$d79a], a
ld a, [$d4c9]
and a
ret z
xor a
ld [$d4c9], a
ret
Func_24128: ; 0x24128
ld [$ff8a], a
ld a, Bank(Func_142fc)
ld hl, Func_142fc
call BankSwitch
call Func_2862
ld [$ff8a], a
ld a, Bank(Func_24fa3)
ld hl, Func_24fa3
call BankSwitch
call Func_24516
ld [$ff8a], a
ld a, Bank(Func_1404a)
ld hl, Func_1404a
call BankSwitch
ret
Func_2414d: ; 0x2414d
call Func_24157
call Func_24214
call Func_242bb
ret
Func_24157: ; 0x24157
ld a, [$d6e7]
cp $0
ret nz
ld a, [wMeowthXPosition]
add $f7
ld b, a
ld a, [wMeowthYPosition]
add $6
ld c, a
call Func_24170
ld a, $3
ret nc
ret
Func_24170: ; 0x24170
ld a, [wBallXPos + 1]
sub b
cp $30
jp nc, .asm_24212
ld b, a
ld a, [wBallYPos + 1]
sub c
cp $28
jp nc, .asm_24212
ld c, a
ld e, c
ld d, $0
sla e
rl d
sla e
rl d
sla e
rl d
ld h, d
ld l, e
sla e
rl d
add hl, de
ld d, h
ld e, l
sla e
rl d
ld l, b
ld h, $0
add hl, de
ld de, $5500
add hl, de
ld a, $3a
call Func_68f
bit 7, a
jr nz, .asm_24212
sla a
ld [$d7ea], a
ld a, $1
ld [$d7e9], a
ld a, [$d6ec]
cp $2
ret z
cp $3
ret z
ld a, [$d713]
and a
ret nz
ld a, [wMeowthYMovement]
and a
jr z, .asm_241ed
ld a, [wMeowthYMovement]
cp $1
jr nz, .asm_241df
ld a, [$d70b]
cp $3
jr z, .asm_241eb
jr .asm_241e6
.asm_241df
ld a, [$d70c]
cp $3
jr z, .asm_241eb
.asm_241e6
ld a, $2
ld [$d6e7], a
.asm_241eb
scf
ret
.asm_241ed
ld a, [wMeowthYPosition]
cp $20
jr nz, .asm_241fd
ld a, [$d70b]
cp $3
jr z, .asm_24210
jr .asm_2420b
.asm_241fd
ld a, [wMeowthYPosition]
cp $10
jr nz, .asm_24210
ld a, [$d70c]
cp $3
jr z, .asm_24210
.asm_2420b
ld a, $1
ld [$d6e7], a
.asm_24210
scf
ret
.asm_24212
and a
ret
Func_24214: ; 0x24214
ld a, [$d717]
cp $2
jr nz, .asm_2422e
ld a, [$d71a]
sub $4
ld b, a
ld a, [$d727]
add $c
ld c, a
call Func_24272
ld a, $0
jr c, .asm_24260
.asm_2422e
ld a, [$d718]
cp $2
jr nz, .asm_24248
ld a, [$d71b]
sub $4
ld b, a
ld a, [$d728]
add $c
ld c, a
call Func_24272
ld a, $1
jr c, .asm_24260
.asm_24248
ld a, [$d719]
cp $2
ret nz
ld a, [$d71c]
sub $4
ld b, a
ld a, [$d729]
add $c
ld c, a
call Func_24272
ld a, $2
ret nc
.asm_24260
ld b, $0
ld c, a
ld hl, $d717
add hl, bc
ld a, $3
ld [hl], a
ld hl, $d714
add hl, bc
ld a, $0
ld [hl], a
ret
Func_24272: ; 0x24272
ld a, [wBallXPos + 1]
sub b
cp $18
jr nc, .asm_242b9
ld b, a
ld a, [wBallYPos + 1]
sub c
cp $18
jr nc, .asm_242b9
ld c, a
ld e, c
ld d, $0
sla e
rl d
sla e
rl d
sla e
rl d
ld h, d
ld l, e
sla e
rl d
add hl, de
ld d, h
ld e, l
ld l, b
ld h, $0
add hl, de
ld de, $5c80 ; todo
add hl, de
ld a, $3a
call Func_68f
bit 7, a
jr nz, .asm_242b9
sla a
ld [$d7ea], a
ld a, $1
ld [$d7e9], a
scf
ret
.asm_242b9
and a
ret
Func_242bb: ; 0x242bb
ld a, [$d721]
cp $2
jr nz, .asm_242d5
ld a, [$d724]
sub $4
ld b, a
ld a, [$d731]
add $c
ld c, a
call Func_24272
ld a, $0
jr c, .asm_24307
.asm_242d5
ld a, [$d722]
cp $2
jr nz, .asm_242ef
ld a, [$d725]
sub $4
ld b, a
ld a, [$d732]
add $c
ld c, a
call Func_24272
ld a, $1
jr c, .asm_24307
.asm_242ef
ld a, [$d723]
cp $2
ret nz
ld a, [$d726]
sub $4
ld b, a
ld a, [$d733]
add $c
ld c, a
call Func_24272
ld a, $2
ret nc
.asm_24307
ld b, $0
ld c, a
ld hl, $d721
add hl, bc
ld a, $3
ld [hl], a
ld hl, $d71e
add hl, bc
ld a, $0
ld [hl], a
ret
Func_24319: ; 0x2438f
ld a, [$d6f4]
cp $0
jr z, .asm_24333
ld a, [$d71a]
sub $4
ld b, a
ld a, [$d727]
add $4
ld c, a
call Func_24405
ld a, $0
jr c, .asm_24373
.asm_24333
ld a, [$d6f4]
cp $1
jr z, .asm_2434d
ld a, [$d71b]
sub $4
ld b, a
ld a, [$d728]
add $4
ld c, a
call Func_24405
ld a, $1
jr c, .asm_24373
.asm_2434d
ld a, [$d6f4]
cp $2
ret z
ld a, [$d71c]
sub $4
ld b, a
ld a, [$d729]
add $4
ld c, a
call Func_24405
ld a, $2
jr c, .asm_24373
ld a, [$d6f4]
ld b, $0
ld c, a
ld hl, $d6f8
add hl, bc
ld [hl], $0
ret
.asm_24373
ld a, [$d6f4]
ld b, $0
ld c, a
ld hl, $d6f8
add hl, bc
inc [hl]
ld d, $4
ld a, [$d6f4]
add d
ld d, a
ld a, [hl]
cp d
ret nc
ld hl, $d6f5
add hl, bc
ld [hl], $0
ret
Func_2438f: ; 0x2438f
ld a, [$d6f4]
cp $a
jr z, .asm_243a9
ld a, [$d724]
sub $4
ld b, a
ld a, [$d731]
add $4
ld c, a
call Func_24405
ld a, $a
jr c, .asm_243e9
.asm_243a9
ld a, [$d6f4]
cp $b
jr z, .asm_243c3
ld a, [$d725]
sub $4
ld b, a
ld a, [$d732]
add $4
ld c, a
call Func_24405
ld a, $b
jr c, .asm_243e9
.asm_243c3
ld a, [$d6f4]
cp $c
ret z
ld a, [$d726]
sub $4
ld b, a
ld a, [$d733]
add $4
ld c, a
call Func_24405
ld a, $c
jr c, .asm_243e9
ld a, [$d6f4]
ld b, $0
ld c, a
ld hl, $d6f8
add hl, bc
ld [hl], $0
ret
.asm_243e9
ld a, [$d6f4]
ld b, $0
ld c, a
ld hl, $d6f8
add hl, bc
inc [hl]
ld d, $4
ld a, [$d6f4]
add d
ld d, a
ld a, [hl]
cp d
ret nc
ld hl, $d6f5
add hl, bc
ld [hl], $0
ret
Func_24405: ; 0x24405
ld hl, $d71a
ld a, [$d6f4]
ld e, a
ld d, $0
add hl, de
ld a, [hl]
add $8
sub b
cp $18
jr nc, .asm_24428
ld b, a
ld hl, $d727
add hl, de
ld a, [hl]
add $8
sub c
cp $18
jr nc, .asm_24428
ld c, a
ld d, b
scf
ret
.asm_24428
and a
ret
INCBIN "baserom.gbc",$2442a,$2442a - $2442a
Func_2442a: ; 0x2442a
ld a, [$d710]
jr nz, .asm_2443f
ld a, [wMeowthStageBonusCounter]
dec a
dec a
cp $fe
jr z, .asm_24447
cp $ff
jr z, .asm_24447
ld [$d79a], a
.asm_2443f
ld de, $d79a
call Func_24f00
jr .asm_2444b
.asm_24447
xor a
ld [$d79a], a
.asm_2444b
call Func_244f5
call Func_245ab
call Func_248ac
call Func_24d07
ld a, [wMeowthStageScore]
cp $14
jr c, .asm_24498
ld a, [$d712]
cp $2
jr nc, .asm_24498
ld a, [$d498]
cp $4
ret z
ld a, $4
ld [$d712], a
ld [$d498], a
ld a, $96
ld [$d739], a
ld de, $0000
call Func_490
ld a, $1
ld [$d49a], a
call Func_30e8
call Func_30db
ld hl, $d5dc
ld de, $2fd0
call Func_32aa
ld de, $4b2a
call PlaySoundEffect
.asm_24498
ld a, [$d712]
cp $4
jr nz, .asm_244b0
ld a, [$d800]
and a
jr nz, .asm_244b0
ld de, $0004
call Func_490
ld a, $5
ld [$d712], a
.asm_244b0
ld a, [$d712]
cp $4
jr z, .asm_244c1
ld [$ff8a], a
ld a, Bank(Func_107f8)
ld hl, Func_107f8
call BankSwitch
.asm_244c1
ld a, [$d57e]
and a
ret z
xor a
ld [$d57e], a
ld a, $1
ld [$d7be], a
call Func_2862
ld [$ff8a], a
ld a, Bank(Func_86d2)
ld hl, Func_86d2
call BankSwitch
ld a, $1
ld [$d713], a
ld a, $1
ld [$d712], a
ld hl, $4704
ld de, wMeowthAnimationFrameCounter
call Func_28a0
ld a, $4
ld [$d6ec], a
ret
Func_244f5: ; 0x244f5
ld a, [$d6e6]
and a
ret nz
ld a, [$d4b4]
cp $8a
ret nc
ld a, $1
ld [$d4af], a
ld [$d6e6], a
ld [$ff8a], a
ld a, Bank(Func_e578)
ld hl, Func_e578
call BankSwitch
call Func_24516
ret
Func_24516: ; 0x24516
ld a, [$d4af]
sla a
ld c, a
ld b, $0
ld hl, $4533
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_24529
ld hl, $456f
.asm_24529
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld a, $9
call Func_10aa
ret
INCBIN "baserom.gbc",$24533,$245ab - $24533
Func_245ab: ; 0x245ab
ld a, [$d6e7]
and a
jr z, .asm_24621
cp $2
jr z, .asm_24621
ld a, $1
ld [$d6f3], a
ld a, [wMeowthYPosition]
cp $20
jr z, .asm_245c7
cp $10
jr z, .asm_245cc
jr .asm_245cf
.asm_245c7
call Func_247d9
jr .asm_245cf
.asm_245cc
call Func_24c28
.asm_245cf
xor a
ld [$d6e7], a
ld [$d6f3], a
ld a, $ff
ld [$d803], a
ld a, $3
ld [$d804], a
ld de, $0033
call PlaySoundEffect
ld bc, $34c4
ld [$ff8a], a
ld a, Bank(Func_8576)
ld hl, Func_8576
call BankSwitch
xor a
ld [wMeowthStageBonusCounter], a
ld a, [$d6ec]
cp $2
jr nc, .asm_24621
and a
jr nz, .asm_24611
ld hl, $46fe
ld de, wMeowthAnimationFrameCounter
call Func_28a0
ld a, $2
ld [$d6ec], a
jr .asm_24651
.asm_24611
ld hl, $4701
ld de, wMeowthAnimationFrameCounter
call Func_28a0
ld a, $3
ld [$d6ec], a
jr .asm_24651
.asm_24621
ld a, [$d713]
and a
jr z, .asm_2462e
ld a, $4
ld [$d6ec], a
jr .asm_24651
.asm_2462e
ld a, [$d6ec]
cp $2
jr nc, .asm_24651
ld a, [$d70b]
cp $3
jr nz, .asm_24651
ld a, [$d70c]
cp $3
jr nz, .asm_24651
ld hl, $4704
ld de, wMeowthAnimationFrameCounter
call Func_28a0
ld a, $4
ld [$d6ec], a
.asm_24651
ld a, [$d6ec]
cp $2
call c, Func_24709
call Func_2465d
ret
Func_2465d: ; 0x2465d
ld a, [$d6ec]
sla a
ld c, a
ld b, $0
ld hl, $46e2
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld de, wMeowthAnimationFrameCounter
call Func_28a9
ret nc
ld a, [$d6ec]
and a
jr nz, .asm_24689
ld a, [$d6eb]
cp $4
ret nz
ld hl, $46ec
ld de, wMeowthAnimationFrameCounter
call Func_28a0
ret
.asm_24689
cp $1
jr nz, .asm_2469d
ld a, [$d6eb]
cp $4
ret nz
ld hl, $46f5
ld de, wMeowthAnimationFrameCounter
call Func_28a0
ret
.asm_2469d
cp $2
jr nz, .asm_246b5
ld a, [$d6eb]
cp $1
ret nz
ld hl, $46ec
ld de, wMeowthAnimationFrameCounter
call Func_28a0
xor a
ld [$d6ec], a
ret
.asm_246b5
cp $3
jr nz, .asm_246ce
ld a, [$d6eb]
cp $1
ret nz
ld hl, $46f5
ld de, wMeowthAnimationFrameCounter
call Func_28a0
ld a, $1
ld [$d6ec], a
ret
.asm_246ce
cp $4
jr nz, .asm_24689
ld a, [$d6eb]
cp $2
ret nz
ld hl, $4704
ld de, wMeowthAnimationFrameCounter
call Func_28a0
ret
INCBIN "baserom.gbc",$246e2,$24709 - $246e2
Func_24709: ; 0x24709
ld a, [wMeowthXPosition]
ld hl, wMeowthXMovement
add [hl]
ld [wMeowthXPosition], a
ld hl, wMeowthYMovement
ld a, [hl]
and a
jr z, .asm_24730
bit 7, [hl]
ld a, [wMeowthYPosition]
jr nz, .asm_24724
inc a
jr .asm_24725
.asm_24724
dec a
.asm_24725
cp $21
jr z, .asm_24730
cp $f
jr z, .asm_24730
ld [wMeowthYPosition], a
.asm_24730
call Func_24737
call Func_2476d
ret
Func_24737: ; 0x24737
ld a, [wMeowthXPosition]
cp $8
jr nc, .asm_24742
ld a, $1
jr .asm_2475a
.asm_24742
cp $78
jr c, .asm_2474a
ld a, $ff
jr .asm_2475a
.asm_2474a
ld a, [$ffb3]
and $3f
ret nz
call GenRandom
bit 7, a
ld a, $1
jr z, .asm_2475a
ld a, $ff
.asm_2475a
ld [wMeowthXMovement], a
bit 7, a
ld a, $1
jr z, .asm_24764
xor a
.asm_24764
ld [$d6ec], a
ld a, $2
ld [wMeowthAnimationFrameCounter], a
ret
Func_2476d: ; 0x2476d
ld a, [wMeowthYMovement]
and a
jr z, .asm_247ab
cp $1
jr z, .asm_24791
ld a, [wMeowthYPosition]
cp $10
jr nz, .asm_2478d
ld a, [$d6e7]
cp $2
jr nz, .asm_2478a
ld a, $1
ld [$d6e7], a
.asm_2478a
xor a
jr .asm_247c9
.asm_2478d
ld a, $ff
jr .asm_247c9
.asm_24791
ld a, [wMeowthYPosition]
cp $20
jr nz, .asm_247a7
ld a, [$d6e7]
cp $2
jr nz, .asm_247a4
ld a, $1
ld [$d6e7], a
.asm_247a4
xor a
jr .asm_247c9
.asm_247a7
ld a, $1
jr .asm_247c9
.asm_247ab
ld a, [$d70b]
cp $3
jr z, .asm_247cd
ld a, [$d70c]
cp $3
jr z, .asm_247d3
ld a, [$ffb3]
and $3f
ret nz
call GenRandom
bit 0, a
ld a, $1
jr z, .asm_247c9
ld a, $ff
.asm_247c9
ld [wMeowthYMovement], a
ret
.asm_247cd
ld a, $ff
ld [wMeowthYMovement], a
ret
.asm_247d3
ld a, $1
ld [wMeowthYMovement], a
ret
Func_247d9: ; 0x247d9
ld a, [$d6f3]
and a
ret z
ld a, [$d71a]
cp $c8
jr nz, .asm_24823
ld a, [wMeowthXPosition]
add $8
ld [$d71a], a
ld a, [wMeowthYPosition]
add $fb
ld [$d727], a
ld a, $1
ld [$d717], a
xor a
ld [$d6f3], a
ld [$d714], a
ld [$d6f5], a
ld [$d6f8], a
ld [$d6fb], a
ld a, [wMeowthXPosition]
add $14
ld b, a
ld a, [$d4b4]
cp b
jr nc, .asm_2481d
ld a, $0
ld [$d72a], a
jr .asm_24822
.asm_2481d
ld a, $1
ld [$d72a], a
.asm_24822
ret
.asm_24823
ld a, [$d71b]
cp $c8
jr nz, .asm_24868
ld a, [wMeowthXPosition]
add $8
ld [$d71b], a
ld a, [wMeowthYPosition]
add $fb
ld [$d728], a
ld a, $1
ld [$d718], a
xor a
ld [$d6f3], a
ld [$d715], a
ld [$d6f6], a
ld [$d6f9], a
ld [$d6fc], a
ld a, [wMeowthXPosition]
add $14
ld b, a
ld a, [$d4b4]
cp b
jr nc, .asm_24862
ld a, $0
ld [$d72b], a
jr .asm_24867
.asm_24862
ld a, $1
ld [$d72b], a
.asm_24867
ret
.asm_24868
ld a, [$d71c]
cp $c8
ret nz
ld a, [wMeowthXPosition]
add $8
ld [$d71c], a
ld a, [wMeowthYPosition]
add $fb
ld [$d729], a
ld a, $1
ld [$d719], a
xor a
ld [$d6f3], a
ld [$d716], a
ld [$d6f7], a
ld [$d6fa], a
ld [$d6fd], a
ld a, [wMeowthXPosition]
add $14
ld b, a
ld a, [$d4b4]
cp b
jr nc, .asm_248a6
ld a, $0
ld [$d72c], a
jr .asm_248ab
.asm_248a6
ld a, $1
ld [$d72c], a
.asm_248ab
ret
Func_248ac: ; 0x248ac
ld a, [$d717]
cp $1
jr nz, .asm_248d3
ld a, [$d714]
cp $a
jr z, .asm_248c4
ld a, $0
ld [$d6f4], a
call Func_24a30
jr .asm_248d3
.asm_248c4
ld hl, $d70b
inc [hl]
ld a, $2
ld [$d717], a
ld de, $0034
call PlaySoundEffect
.asm_248d3
ld a, [$d718]
cp $1
jr nz, .asm_248fa
ld a, [$d715]
cp $a
jr z, .asm_248eb
ld a, $1
ld [$d6f4], a
call Func_24a30
jr .asm_248fa
.asm_248eb
ld hl, $d70b
inc [hl]
ld a, $2
ld [$d718], a
ld de, $0034
call PlaySoundEffect
.asm_248fa
ld a, [$d719]
cp $1
jr nz, .asm_24921
ld a, [$d716]
cp $a
jr z, .asm_24912
ld a, $2
ld [$d6f4], a
call Func_24a30
jr .asm_24921
.asm_24912
ld hl, $d70b
inc [hl]
ld a, $2
ld [$d719], a
ld de, $0034
call PlaySoundEffect
.asm_24921
ld a, [$d717]
cp $2
jr nz, .asm_2492c
ld hl, $d714
inc [hl]
.asm_2492c
ld a, [$d718]
cp $2
jr nz, .asm_24937
ld hl, $d715
inc [hl]
.asm_24937
ld a, [$d719]
cp $2
jr nz, .asm_24942
ld hl, $d716
inc [hl]
.asm_24942
ld a, [$d717]
cp $3
jr nz, .asm_24968
ld a, [$d71a]
ld b, a
ld a, [$d727]
ld c, a
ld hl, $d714
inc [hl]
ld a, [hl]
cp $2
jr nz, .asm_2495f
call Func_24e7f
jr .asm_24968
.asm_2495f
cp $a
jr nz, .asm_24968
ld a, $4
ld [$d717], a
.asm_24968
ld a, [$d718]
cp $3
jr nz, .asm_2498e
ld a, [$d71b]
ld b, a
ld a, [$d728]
ld c, a
ld hl, $d715
inc [hl]
ld a, [hl]
cp $2
jr nz, .asm_24985
call Func_24e7f
jr .asm_2498e
.asm_24985
cp $a
jr nz, .asm_2498e
ld a, $4
ld [$d718], a
.asm_2498e
ld a, [$d719]
cp $3
jr nz, .asm_249b4
ld a, [$d71c]
ld b, a
ld a, [$d729]
ld c, a
ld hl, $d716
inc [hl]
ld a, [hl]
cp $2
jr nz, .asm_249ab
call Func_24e7f
jr .asm_249b4
.asm_249ab
cp $a
jr nz, .asm_249b4
ld a, $4
ld [$d719], a
.asm_249b4
ld a, [$d717]
cp $4
jr nz, .asm_249d0
ld a, $c8
ld [$d71a], a
ld [$d727], a
xor a
ld [$d717], a
ld hl, $d70b
dec [hl]
ld a, [hl]
cp $2
jr z, .asm_24a06
.asm_249d0
ld a, [$d718]
cp $4
jr nz, .asm_249ec
ld a, $c8
ld [$d71b], a
ld [$d728], a
xor a
ld [$d718], a
ld hl, $d70b
dec [hl]
ld a, [hl]
cp $2
jr z, .asm_24a06
.asm_249ec
ld a, [$d719]
cp $4
ret nz
ld a, $c8
ld [$d71c], a
ld [$d729], a
xor a
ld [$d719], a
ld hl, $d70b
dec [hl]
ld a, [hl]
cp $2
ret nz
.asm_24a06
ld a, [$d713]
and a
ret nz
ld a, [wMeowthXMovement]
cp $ff
jr z, .asm_24a21
ld hl, $46f5
ld de, wMeowthAnimationFrameCounter
call Func_28a0
ld a, $1
ld [$d6ec], a
ret
.asm_24a21
ld hl, $46ec
ld de, wMeowthAnimationFrameCounter
call Func_28a0
ld a, $0
ld [$d6ec], a
ret
Func_24a30: ; 0x24a30
ld a, [$d6f4]
ld c, a
ld b, $0
ld hl, $d6f8
add hl, bc
ld a, [hl]
and a
jr z, .asm_24a42
call Func_24b41
ret
.asm_24a42
ld a, [$d6f4]
ld c, a
ld b, $0
ld hl, $d6f5
add hl, bc
ld a, [hl]
bit 2, a
jr z, .asm_24a5e
bit 1, a
jr nz, .asm_24a5e
bit 0, a
jr nz, .asm_24a5e
ld hl, $d714
add hl, bc
inc [hl]
.asm_24a5e
ld hl, $d6f5
add hl, bc
ld a, [hl]
ld hl, $4af1
ld e, a
ld d, $0
add hl, de
ld hl, $d72a
add hl, bc
ld a, [hl]
and a
jr nz, .asm_24a97
.asm_24a72
ld hl, $d72a
add hl, bc
ld [hl], $0
ld hl, $d71a
add hl, bc
ld a, [hl]
push af
ld hl, $d6f5
add hl, bc
ld a, [hl]
ld e, a
ld d, $0
ld hl, $4af1
add hl, de
pop af
add [hl]
cp $8e
jr nc, .asm_24a97
ld hl, $d71a
add hl, bc
ld [hl], a
jr .asm_24abf
.asm_24a97
ld hl, $d72a
add hl, bc
ld [hl], $1
ld hl, $d6f5
add hl, bc
ld a, [hl]
ld e, a
ld d, $0
ld hl, $4af1
add hl, de
ld a, [hl]
ld d, a
ld a, $ff
sub d
inc a
ld d, a
ld hl, $d71a
add hl, bc
ld a, [hl]
add d
cp $5
jr c, .asm_24a72
ld hl, $d71a
add hl, bc
ld [hl], a
.asm_24abf
ld hl, $d6f5
add hl, bc
ld a, [hl]
ld e, a
ld d, $0
ld hl, $4af1
add hl, de
inc hl
ld a, [hl]
ld d, a
ld hl, $d727
add hl, bc
ld a, [hl]
add d
ld hl, $d727
add hl, bc
ld [hl], a
ld hl, $d6f5
add hl, bc
inc [hl]
inc [hl]
ld a, [hl]
cp $46
jr nz, .asm_24af0
ld a, c
cp $9
jr c, .asm_24aed
call Func_2438f
ret
.asm_24aed
call Func_24319
.asm_24af0
ret
INCBIN "baserom.gbc",$24af1,$24b41 - $24af1
Func_24b41: ; 0x24b41
ld a, [$d6f4]
ld b, $0
ld c, a
ld hl, $d6f5
add hl, bc
ld a, [hl]
cp $14
jp nc, Func_24bf6
ld hl, $d6f5
add hl, bc
ld a, [hl]
ld hl, $4c0a
ld e, a
ld d, $0
add hl, de
ld hl, $d72a
add hl, bc
ld a, [hl]
and a
jr nz, .asm_24b8a
.asm_24b65
ld hl, $d72a
add hl, bc
ld [hl], $0
ld hl, $d71a
add hl, bc
ld a, [hl]
push af
ld hl, $d6f5
add hl, bc
ld a, [hl]
ld e, a
ld d, $0
ld hl, $4c0a
add hl, de
pop af
add [hl]
cp $90
jr nc, .asm_24b8a
ld hl, $d71a
add hl, bc
ld [hl], a
jr .asm_24bb2
.asm_24b8a
ld hl, $d72a
add hl, bc
ld [hl], $1
ld hl, $d6f5
add hl, bc
ld a, [hl]
ld e, a
ld d, $0
ld hl, $4c0a
add hl, de
ld a, [hl]
ld d, a
ld a, $ff
sub d
inc a
ld d, a
ld hl, $d71a
add hl, bc
ld a, [hl]
add d
cp $6
jr c, .asm_24b65
ld hl, $d71a
add hl, bc
ld [hl], a
.asm_24bb2
ld hl, $d6f5
add hl, bc
ld a, [hl]
ld e, a
ld d, $0
ld hl, $4c0a
add hl, de
inc hl
ld a, [hl]
ld d, a
ld hl, $d727
add hl, bc
ld a, [hl]
add d
ld hl, $d727
add hl, bc
ld [hl], a
ld hl, $d6f5
add hl, bc
inc [hl]
inc [hl]
ld a, [hl]
cp $12
jr nz, .asm_24bf4
ld a, c
cp $9
jr c, .asm_24be1
call Func_2438f
jr .asm_24be4
.asm_24be1
call Func_24319
.asm_24be4
ld a, [$d6f4]
ld b, $0
ld c, a
ld hl, $d6f8
add hl, bc
ld a, [hl]
and a
jr nz, .asm_24bf4
ld [hl], $1
.asm_24bf4
scf
ret
Func_24bf6: ; 0x24bf6
ld a, [$d6f4]
ld b, $0
ld c, a
ld hl, $d6f8
add hl, bc
ld [hl], $0
ld hl, $d714
add hl, bc
ld [hl], $a
ccf
ret
INCBIN "baserom.gbc",$24c0a,$24c28 - $24c0a
Func_24c28: ; 0x24c28
ld a, [$d6f3]
and a
ret z
ld a, [$d724]
cp $c8
jr nz, .asm_24c76
ld a, [wMeowthXPosition]
add $8
ld [$d724], a
ld a, [wMeowthYPosition]
add $fb
ld [$d731], a
ld a, $1
ld [$d721], a
ld hl, $d70c
inc [hl]
xor a
ld [$d6f3], a
ld [$d71e], a
ld [$d6ff], a
ld [$d702], a
ld [$d705], a
ld a, [wMeowthXPosition]
add $14
ld b, a
ld a, [$d4b4]
cp b
jr nc, .asm_24c70
ld a, $0
ld [$d734], a
jr .asm_24c75
.asm_24c70
ld a, $1
ld [$d734], a
.asm_24c75
ret
.asm_24c76
ld a, [$d725]
cp $c8
jr nz, .asm_24cbf
ld a, [wMeowthXPosition]
add $8
ld [$d725], a
ld a, [wMeowthYPosition]
add $fb
ld [$d732], a
ld a, $1
ld [$d722], a
ld hl, $d70c
inc [hl]
xor a
ld [$d6f3], a
ld [$d71f], a
ld [$d700], a
ld [$d703], a
ld [$d706], a
ld a, [$d6f7]
add $14
ld b, a
ld a, [$d4b4]
cp b
jr nc, .asm_24cb9
ld a, $0
ld [$d735], a
jr .asm_24cbe
.asm_24cb9
ld a, $1
ld [$d735], a
.asm_24cbe
ret
.asm_24cbf
ld a, [$d726]
cp $c8
ret nz
ld a, [wMeowthXPosition]
add $8
ld [$d726], a
ld a, [wMeowthYPosition]
add $fb
ld [$d733], a
ld a, $1
ld [$d723], a
ld hl, $d70c
inc [hl]
xor a
ld [$d6f3], a
ld [$d720], a
ld [$d701], a
ld [$d704], a
ld [$d707], a
ld a, [wMeowthXPosition]
add $14
ld b, a
ld a, [$d4b4]
cp b
jr nc, .asm_24d01
ld a, $0
ld [$d736], a
jr .asm_24d06
.asm_24d01
ld a, $1
ld [$d736], a
.asm_24d06
ret
Func_24d07: ; 0x24d07
ld a, [$d721]
cp $1
jr nz, .asm_24d2a
ld a, [$d71e]
cp $a
jr z, .asm_24d1f
ld a, $a
ld [$d6f4], a
call Func_24a30
jr .asm_24d2a
.asm_24d1f
ld a, $2
ld [$d721], a
ld de, $0034
call PlaySoundEffect
.asm_24d2a
ld a, [$d722]
cp $1
jr nz, .asm_24d4d
ld a, [$d71f]
cp $a
jr z, .asm_24d42
ld a, $b
ld [$d6f4], a
call Func_24a30
jr .asm_24d4d
.asm_24d42
ld a, $2
ld [$d722], a
ld de, $0034
call PlaySoundEffect
.asm_24d4d
ld a, [$d723]
cp $1
jr nz, .asm_24d70
ld a, [$d720]
cp $a
jr z, .asm_24d65
ld a, $c
ld [$d6f4], a
call Func_24a30
jr .asm_24d70
.asm_24d65
ld a, $2
ld [$d723], a
ld de, $0034
call PlaySoundEffect
.asm_24d70
ld a, [$d721]
cp $2
jr nz, .asm_24d7b
ld hl, $d71e
inc [hl]
.asm_24d7b
ld a, [$d722]
cp $2
jr nz, .asm_24d86
ld hl, $d71f
inc [hl]
.asm_24d86
ld a, [$d723]
cp $2
jr nz, .asm_24d91
ld hl, $d720
inc [hl]
.asm_24d91
ld a, [$d721]
cp $3
jr nz, .asm_24db7
ld a, [$d724]
ld b, a
ld a, [$d731]
ld c, a
ld hl, $d71e
inc [hl]
ld a, [hl]
cp $2
jr nz, .asm_24dae
call Func_24e7f
jr .asm_24db7
.asm_24dae
cp $a
jr nz, .asm_24db7
ld a, $4
ld [$d721], a
.asm_24db7
ld a, [$d722]
cp $3
jr nz, .asm_24ddd
ld a, [$d725]
ld b, a
ld a, [$d732]
ld c, a
ld hl, $d71f
inc [hl]
ld a, [hl]
cp $2
jr nz, .asm_24dd4
call Func_24e7f
jr .asm_24ddd
.asm_24dd4
cp $a
jr nz, .asm_24ddd
ld a, $4
ld [$d722], a
.asm_24ddd
ld a, [$d723]
cp $3
jr nz, .asm_24e03
ld a, [$d726]
ld b, a
ld a, [$d733]
ld c, a
ld hl, $d720
inc [hl]
ld a, [hl]
cp $2
jr nz, .asm_24dfa
call Func_24e7f
jr .asm_24e03
.asm_24dfa
cp $a
jr nz, .asm_24e03
ld a, $4
ld [$d723], a
.asm_24e03
ld a, [$d721]
cp $4
jr nz, .asm_24e1f
ld a, $c8
ld [$d724], a
ld [$d731], a
xor a
ld [$d721], a
ld hl, $d70c
dec [hl]
ld a, [hl]
cp $2
jr z, .asm_24e55
.asm_24e1f
ld a, [$d722]
cp $4
jr nz, .asm_24e3b
ld a, $c8
ld [$d725], a
ld [$d732], a
xor a
ld [$d722], a
ld hl, $d70c
dec [hl]
ld a, [hl]
cp $2
jr z, .asm_24e55
.asm_24e3b
ld a, [$d723]
cp $4
ret nz
ld a, $c8
ld [$d726], a
ld [$d733], a
xor a
ld [$d723], a
ld hl, $d70c
dec [hl]
ld a, [hl]
cp $2
ret nz
.asm_24e55
ld a, [$d713]
and a
ret nz
ld a, [wMeowthXMovement]
cp $ff
jr z, .asm_24e70
ld hl, $46f5
ld de, wMeowthAnimationFrameCounter
call Func_28a0
ld a, $1
ld [$d6ec], a
ret
.asm_24e70
ld hl, $46ec
ld de, wMeowthAnimationFrameCounter
call Func_28a0
ld a, $0
ld [$d6ec], a
ret
Func_24e7f: ; 0x24e7f
ld a, b
ld [$d79c], a
ld a, c
ld [$d79e], a
ld hl, wMeowthStageBonusCounter
inc [hl]
ld a, [hl]
cp $7 ; maximum bonus
jr nz, .asm_24e92
xor a
ld [hl], a
.asm_24e92
ld a, $ff
ld [$d803], a
ld a, $3
ld [$d804], a
ld de, $0032
call PlaySoundEffect
ld a, [wMeowthStageBonusCounter]
dec a
.asm_24ea6
push af
ld bc, $34d6
ld [$ff8a], a
ld a, Bank(Func_8576)
ld hl, Func_8576
call BankSwitch
ld hl, wMeowthStageScore
inc [hl]
pop af
and a
jr z, .asm_24ebf
dec a
jr .asm_24ea6
.asm_24ebf
ld a, [wMeowthStageBonusCounter]
dec a
dec a
cp $fe
jr z, .asm_24ed7
cp $ff
jr z, .asm_24ed7
ld [$d79a], a
ld de, $d79a
call Func_24ee7
jr .asm_24ede
.asm_24ed7
xor a
ld [$d79a], a
ld [$d795], a
.asm_24ede
ld a, $1
ld [$d64e], a
call Func_24fa3
ret
Func_24ee7: ; 0x24ee7
ld a, $ff
ld [$d795], a
ld a, [de]
sla a
ld c, a
ld b, $0
ld hl, $4f30
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
dec de
dec de
dec de
call Func_28a0
ret
Func_24f00: ; 0x24f00
ld a, [de]
sla a
ld c, a
ld b, $0
ld hl, $4f30
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
push de
dec de
dec de
dec de
call Func_28a9
pop de
ld a, $1
ld [$d710], a
ret nc
dec de
ld a, [de]
cp $a
ret nz
xor a
ld [de], a
ld [$d79c], a
ld [$d79e], a
ld [$d795], a
xor a
ld [$d710], a
ret
INCBIN "baserom.gbc",$24f30,$24fa3 - $24f30
Func_24fa3: ; 0x24fa3
ld a, [wMeowthStageScore]
ld c, a
ld b, $0
.asm_24fa9
ld a, c
and a
jr z, .asm_24fb5
ld a, b
add $8
ld b, a
dec c
ld a, c
jr .asm_24fa9
.asm_24fb5
ld a, b
and a
jr z, .asm_24fbb
sub $8
.asm_24fbb
ld [$d652], a
ld a, [wMeowthStageBonusCounter]
and a
jr z, .asm_24fca
ld b, a
ld a, [wMeowthStageScore]
inc a
sub b
.asm_24fca
ld [$d651], a
ld a, $0
ld [$d64e], a
ld a, [wMeowthStageScore]
and a
ret z
cp $15
jr c, .asm_24fe2
ld a, $14
ld [wMeowthStageScore], a
jr .asm_24fed
.asm_24fe2
push af
xor a
ld [$d650], a
ld a, $1
ld [$d64e], a
pop af
.asm_24fed
sla a
ld c, a
ld b, $0
ld hl, $5007
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_24ffd
ld hl, $5421
.asm_24ffd
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld a, $9
call Func_10aa
ret
INCBIN "baserom.gbc",$25007,$2583b - $25007
Func_2583b: ; 0x2583b
ld bc, $7f65
ld [$ff8a], a
ld a, Bank(Func_175a4)
ld hl, Func_175a4
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_e4a1)
ld hl, Func_e4a1
call BankSwitch
call Func_259fe
call Func_25895
call Func_2595e
call Func_2586c
ld [$ff8a], a
ld a, Bank(Func_17e81)
ld hl, Func_17e81
call BankSwitch
call Func_25a39
ret
Func_2586c: ; 0x2586c
ld a, [wMeowthXPosition]
ld hl, hBoardXShift
sub [hl]
ld b, a
ld a, [wMeowthYPosition]
ld hl, hBoardYShift
sub [hl]
ld c, a
ld a, [$d6ea]
ld e, a
ld d, $0
ld hl, $588b
add hl, de
ld a, [hl]
call Func_1f0b
ret
INCBIN "baserom.gbc",$2588b,$25895 - $2588b
Func_25895: ; 0x25895
ld a, [$d714]
cp $b
jr nz, .asm_258a0
xor a
ld [$d714], a
.asm_258a0
ld a, [$d715]
cp $b
jr nz, .asm_258ab
xor a
ld [$d715], a
.asm_258ab
ld a, [$d716]
cp $b
jr nz, .asm_258b6
xor a
ld [$d716], a
.asm_258b6
ld a, [$d71a]
ld hl, hBoardXShift
sub [hl]
ld b, a
ld a, [$d727]
ld hl, hBoardYShift
sub [hl]
ld c, a
ld a, [$d717]
sla a
ld e, a
ld d, $0
ld hl, $5935
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
ld a, [$d714]
ld e, a
ld d, $0
add hl, de
ld a, [hl]
call Func_1f0b
ld a, [$d71b]
ld hl, hBoardXShift
sub [hl]
ld b, a
ld a, [$d728]
ld hl, hBoardYShift
sub [hl]
ld c, a
ld a, [$d718]
sla a
ld e, a
ld d, $0
ld hl, $5935
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
ld a, [$d715]
ld e, a
ld d, $0
add hl, de
ld a, [hl]
call Func_1f0b
ld a, [$d71c]
ld hl, hBoardXShift
sub [hl]
ld b, a
ld a, [$d729]
ld hl, hBoardYShift
sub [hl]
ld c, a
ld a, [$d719]
sla a
ld e, a
ld d, $0
ld hl, $5935
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
ld a, [$d716]
ld e, a
ld d, $0
add hl, de
ld a, [hl]
call Func_1f0b
ret
INCBIN "baserom.gbc",$25935,$2595e - $25935
Func_2595e: ; 0x2595e
ld a, [$d71e]
cp $b
jr nz, .asm_25969
xor a
ld [$d71e], a
.asm_25969
ld a, [$d71f]
cp $b
jr nz, .asm_25974
xor a
ld [$d71f], a
.asm_25974
ld a, [$d720]
cp $b
jr nz, .asm_2597f
xor a
ld [$d720], a
.asm_2597f
ld a, [$d724]
ld hl, hBoardXShift
sub [hl]
ld b, a
ld a, [$d731]
ld hl, hBoardYShift
sub [hl]
ld c, a
ld a, [$d721]
sla a
ld e, a
ld d, $0
ld hl, $5935
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
ld a, [$d71e]
ld e, a
ld d, $0
add hl, de
ld a, [hl]
call Func_1f0b
ld a, [$d725]
ld hl, hBoardXShift
sub [hl]
ld b, a
ld a, [$d732]
ld hl, hBoardYShift
sub [hl]
ld c, a
ld a, [$d722]
sla a
ld e, a
ld d, $0
ld hl, $5935
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
ld a, [$d71f]
ld e, a
ld d, $0
add hl, de
ld a, [hl]
call Func_1f0b
ld a, [$d726]
ld hl, hBoardXShift
sub [hl]
ld b, a
ld a, [$d733]
ld hl, hBoardYShift
sub [hl]
ld c, a
ld a, [$d723]
sla a
ld e, a
ld d, $0
ld hl, $5935
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
ld a, [$d720]
ld e, a
ld d, $0
add hl, de
ld a, [hl]
call Func_1f0b
ret
Func_259fe: ; 0x259fe
ld a, [$d795]
and a
ret z
ld de, $d79c
ld a, [de]
ld hl, hBoardXShift
sub [hl]
ld b, a
inc de
inc de
ld a, [de]
ld hl, hBoardYShift
sub [hl]
ld c, a
dec de
dec de
dec de
dec de
dec de
dec de
ld a, [de]
ld e, a
ld d, $0
ld hl, $5a29
add hl, de
ld a, [hl]
cp $ff
call nz, Func_1f0b
ret
INCBIN "baserom.gbc",$25a29,$25a39 - $25a29
Func_25a39: ; 0x25a39
ld a, [$d64e]
and a
ret z
ld a, [$d652]
ld hl, hBoardXShift
sub [hl]
ld b, a
xor a
ld hl, hBoardYShift
sub [hl]
ld c, a
ld a, [$d64f]
cp $a
jr c, .asm_25a58
ld de, $0000
jr .asm_25a5b
.asm_25a58
ld de, $0001
.asm_25a5b
ld hl, $5a7a
add hl, de
ld a, [hl]
call Func_1f0b
ld hl, $d64f
inc [hl]
ld a, [hl]
cp $14
ret c
ld [hl], $0
ld hl, $d650
inc [hl]
ld a, [hl]
cp $a
ret nz
xor a
ld [$d64e], a
ret
INCBIN "baserom.gbc",$25a7a,$25a7c - $25a7a
InitSeelBonusStage: ; 0x25a7c
ld a, [$d7c1]
and a
ret nz
xor a
ld [$d4c8], a
ld [$d4af], a
ld a, $1
ld [$d7ac], a
ld a, [wBallType]
ld [wBallTypeBackup], a
xor a
ld [$d4c8], a
ld [wBallType], a
ld [$d49a], a
ld hl, $5ae5 ; todo
ld de, $d76d
call Func_25ad8
ld de, $d777
call Func_25ad8
ld de, $d781
call Func_25ad8
xor a
ld [$d793], a
ld [$d791], a
ld [$d792], a
ld [$d739], a
ld bc, $0130 ; 1 minute 30 seconds
ld [$ff8a], a
ld a, Bank(StartTimer)
ld hl, StartTimer
call BankSwitch
ld a, $11
call SetSongBank
ld de, $0003
call Func_490
ret
Func_25ad8: ; 0x25ad8
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
inc de
ret
INCBIN "baserom.gbc",$25ae5,$25af1 - $25ae5
StartBallSeelBonusStage: ; 0x25af1
ld a, $0
ld [wBallXPos], a
ld a, $a6
ld [wBallXPos + 1], a
ld a, $0
ld [wBallYPos], a
ld a, $56
ld [wBallYPos + 1], a
ld a, $80
ld [wBallXVelocity], a
xor a
ld [$d7ab], a
ld [$d4af], a
ld [$d766], a
ld a, $0
ld [$d772], a
ld a, $1
ld [$d77c], a
ld a, $0
ld [$d786], a
ld a, $4
ld [$d775], a
ld [$d77f], a
ld [$d76b], a
ld a, $1
ld [$d76c], a
ld a, $4
ld [$d776], a
ld a, $1
ld [$d780], a
ld a, $5
ld [$d771], a
ld [$d77b], a
ld [$d785], a
ld a, $ff
ld [$d79a], a
xor a
ld [$d792], a
ld [$d791], a
ld [$d64e], a
ld [$d64f], a
ld [$d650], a
ld [$d651], a
ld [$d795], a
ld [$d796], a
ld [$d797], a
ld [$d798], a
ld [$d799], a
ld [$d79a], a
ld de, $d76b
ld a, [$d76c]
call Func_26137
ld de, $d775
ld a, [$d776]
call Func_26137
ld de, $d77f
ld a, [$d780]
call Func_26137
ld a, [$d4c9]
and a
ret z
xor a
ld [$d4c9], a
ret
Func_25b97: ; 0x25b97
ld [$ff8a], a
ld a, Bank(Func_142fc)
ld hl, Func_142fc
call BankSwitch
call Func_2862
ld [$ff8a], a
ld a, Bank(Func_262f4)
ld hl, Func_262f4
call BankSwitch
call Func_25d0e
ld [$ff8a], a
ld a, Bank(Func_1404a)
ld hl, Func_1404a
call BankSwitch
ret
Func_25bbc: ; 0x25bbc
call Func_25bc0
ret
Func_25bc0: ; 0x25bc0
ld a, [$d76c]
cp $0
jr nz, .asm_25bd8
ld a, [$d76e]
ld b, a
ld a, [$d770]
add $14
ld c, a
call Func_25c12
ld a, $0
jr c, .asm_25c09
.asm_25bd8
ld a, [$d776]
cp $0
jr nz, .asm_25bf0
ld a, [$d778]
ld b, a
ld a, [$d77a]
add $14
ld c, a
call Func_25c12
ld a, $1
jr c, .asm_25c09
.asm_25bf0
ld a, [$d780]
cp $0
jr nz, .asm_25c08
ld a, [$d782]
ld b, a
ld a, [$d784]
add $14
ld c, a
call Func_25c12
ld a, $2
jr c, .asm_25c09
.asm_25c08
ret
.asm_25c09
ld [$d768], a
ld a, $1
ld [$d767], a
ret
Func_25c12: ; 0x25c12
ld a, [wBallXPos + 1]
sub b
cp $20
jr nc, .asm_25c58
ld b, a
ld a, [wBallYPos + 1]
sub c
cp $20
jr nc, .asm_25c58
ld c, a
ld e, c
ld d, $0
sla e
rl d
sla e
rl d
sla e
rl d
sla e
rl d
sla e
rl d
ld l, b
ld h, $0
add hl, de
ld de, $5100 ; todo
add hl, de
ld a, $3a
call Func_68f
bit 7, a
jr nz, .asm_25c58
sla a
ld [$d7ea], a
ld a, $1
ld [$d7e9], a
scf
ret
.asm_25c58
and a
ret
Func_25c5a: ; 0x25c5a
call Func_25da3
call Func_25ced
ld a, [$d793]
cp $14
jr c, .asm_25c98
ld a, [$d794]
cp $2
jr nc, .asm_25c98
ld a, $1
ld [$d498], a
ld de, $0000
call Func_490
ld a, $1
ld [$d49a], a
call Func_30e8
call Func_30db
ld hl, $d5dc
ld de, $2fec
call Func_32aa
ld a, $2
ld [$d794], a
ld de, $4b2a
call PlaySoundEffect
.asm_25c98
ld a, [$d794]
cp $2
jr nz, .asm_25cb0
ld a, [$d800]
and a
jr nz, .asm_25cb0
ld de, $0003
call Func_490
ld a, $5
ld [$d794], a
.asm_25cb0
ld a, [$d794]
cp $2
jr z, .asm_25cc1
ld [$ff8a], a
ld a, Bank(Func_107f8)
ld hl, Func_107f8
call BankSwitch
.asm_25cc1
ld a, [$d57e]
and a
ret z
xor a
ld [$d57e], a
ld a, $1
ld [$d7be], a
call Func_2862
ld [$ff8a], a
ld a, Bank(Func_86d2)
ld hl, Func_86d2
call BankSwitch
ld a, $3
ld [$d791], a
ld a, [$d794]
cp $5
ret z
ld a, $1
ld [$d794], a
ret
Func_25ced: ; 0x25ced
ld a, [$d766]
and a
ret nz
ld a, [$d4b4]
cp $8a
ret nc
ld a, $1
ld [$d4af], a
ld [$d766], a
ld [$ff8a], a
ld a, Bank(Func_e578)
ld hl, Func_e578
call BankSwitch
call Func_25d0e
ret
Func_25d0e: ; 0x25d0e
ld a, [$d4af]
sla a
ld c, a
ld b, $0
ld hl, $5d2b
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_25d21
ld hl, $5d67
.asm_25d21
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld a, $9
call Func_10aa
ret
INCBIN "baserom.gbc",$25d2b,$25da3 - $25d2b
Func_25da3: ; 0x25da3
ld a, [$d767]
and a
jp z, .asm_25e38
xor a
ld [$d767], a
ld a, [$d768]
sla a
ld c, a
sla a
sla a
add c
ld c, a
ld b, $0
ld hl, $d76c
add hl, bc
ld d, h
ld e, l
ld a, $9
ld [de], a
dec de
dec de
dec de
push bc
ld hl, $61d8
call Func_28a0
pop bc
ld hl, $d76e
add hl, bc
ld a, [hl]
ld [$d79c], a
ld hl, $d770
add hl, bc
ld a, [hl]
add $8
ld [$d79e], a
ld a, [$d792]
cp $9
jr nz, .asm_25df1
ld a, $0
ld [$d792], a
ld [$d79a], a
.asm_25df1
ld a, [$d792]
dec a
cp $ff
jr z, .asm_25e04
ld [$d79a], a
ld de, $d79a
call Func_261f9
jr .asm_25e07
.asm_25e04
ld [$d79a], a
.asm_25e07
ld a, $33
ld [$d803], a
ld a, $8
ld [$d804], a
ld de, $0030
call PlaySoundEffect
call Func_25e85
ld hl, $d792
inc [hl]
ld a, [$d793]
cp $14
ret nc
ld hl, $d793
inc [hl]
ld a, [$d792]
dec a
ld b, a
ld a, [hl]
add b
ld [hl], a
ld a, $1
ld [$d64e], a
call Func_262f4
.asm_25e38
ld de, $d76c ; I think these three calls are one for each Seel swimming around
call Func_25f47
ld de, $d776
call Func_25f47
ld de, $d780
call Func_25f47
ld a, [$d792]
dec a
cp $ff
jr z, .asm_25e5d
ld [$d79a], a
ld de, $d79a
call Func_26212
jr .asm_25e60
.asm_25e5d
ld [$d79a], a
.asm_25e60
ld bc, $087a ; again, probably one call for each Seel swimming around
ld de, $d76d
ld hl, $d772
call Func_25ec5
ld bc, $087a
ld de, $d777
ld hl, $d77c
call Func_25ec5
ld bc, $087a
ld de, $d781
ld hl, $d786
call Func_25ec5
ret
Func_25e85: ; 0x25e85
ld a, [$d792]
inc a
ld d, $1
ld e, a
ld a, $1
.asm_25e8e
cp e
jr z, .asm_25e96
sla d
inc a
jr .asm_25e8e
.asm_25e96
push de
ld a, d
cp $32
jr nc, .asm_25ead
ld bc, $34d6
ld [$ff8a], a
ld a, Bank(Func_8576)
ld hl, Func_8576
call BankSwitch
pop de
dec d
jr .asm_25ebf
.asm_25ead
ld bc, $34ee
ld [$ff8a], a
ld a, Bank(Func_8576)
ld hl, Func_8576
call BankSwitch
pop de
ld a, d
sub $32
ld d, a
.asm_25ebf
ld a, d
cp $0
jr nz, .asm_25e96
ret
Func_25ec5: ; 0x25ec5
dec de
ld a, [de]
cp $1
jr z, .asm_25ece
cp $4
ret nz
.asm_25ece
inc de
push hl
ld a, [hld]
push af
push bc
ld a, [hl]
and $f
ld c, a
ld b, $0
ld hl, $5f27
add hl, bc
pop bc
pop af
and a
jr nz, .asm_25f05
ld a, [de]
add [hl]
ld [de], a
inc de
ld a, [de]
adc $0
ld [de], a
pop hl
cp c
ret c
ld a, $1
ld [hl], a
dec hl
dec hl
dec hl
dec hl
dec hl
dec hl
ld a, $7
ld [hl], a
dec hl
dec hl
dec hl
ld d, h
ld e, l
ld hl, $61c2
call Func_28a0
ret
.asm_25f05
ld a, [de]
sub [hl]
ld [de], a
inc de
ld a, [de]
sbc $0
ld [de], a
pop hl
cp b
ret nc
xor a
ld [hl], a
dec hl
dec hl
dec hl
dec hl
dec hl
dec hl
ld a, $8
ld [hl], a
dec hl
dec hl
dec hl
ld d, h
ld e, l
ld hl, $61cd
call Func_28a0
ret
INCBIN "baserom.gbc",$25f27,$25f47 - $25f27
Func_25f47: ; 0x25f47
ld a, [de]
sla a
ld c, a
ld b, $0
ld hl, $614f
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
push de
dec de
dec de
dec de
call Func_28a9
pop de
ret nc
ld a, [de]
rst $18 ; calls JumpToFuncInTable
CallTable_25f5f: ; 0x25f5f
dw Func_25f77
dw Func_25fbe
dw Func_25ff3
dw Func_2602a
dw Func_2604c
dw Func_2607f
dw Func_260b6
dw Func_260d8
dw Func_260e2
dw Func_260ec
dw Func_26109
dw Func_26120
Func_25f77: ; 0x25f77
dec de
ld a, [de]
cp $2
ret nz
push de
inc de
inc de
inc de
inc de
inc de
inc de
ld a, [de]
dec a
ld [de], a
ld a, $3
jr z, .asm_25f8f
pop de
xor a
jp Func_26137
.asm_25f8f
ld hl, $d792
ld [hl], $0
call GenRandom
bit 7, a
jr z, .asm_25fa2
inc de
ld a, $1
ld [de], a
dec de
jr .asm_25fa7
.asm_25fa2
inc de
ld a, $0
ld [de], a
dec de
.asm_25fa7
inc de
ld a, [de]
and a
jr z, .asm_25fb0
ld a, $6
jr .asm_25fb2
.asm_25fb0
ld a, $3
.asm_25fb2
push af
ld de, $0031
call PlaySoundEffect
pop af
pop de
jp Func_26137
Func_25fbe: ; 0x25fbe
dec de
ld a, [de]
cp $4
ret nz
push de
inc de
inc de
inc de
inc de
inc de
inc de
ld a, [de]
dec a
ld [de], a
jr z, .asm_25fd5
pop de
ld a, $1
jp Func_26137
.asm_25fd5
ld a, [$d791]
cp $0
jr z, .asm_25fe9
ld a, $2
ld [de], a
pop de
ld a, $4
ld [de], a
ld a, $1
jp Func_26137
ret ; unused instruction
.asm_25fe9
ld hl, $d791
inc [hl]
pop de
ld a, $2
jp Func_26137
Func_25ff3: ; 0x25ff3
dec de
ld a, [de]
cp $7
ret nz
xor a
call Func_26137
inc de
inc de
inc de
inc de
inc de
ld a, [$d792]
cp $6
jr nc, .asm_26020
cp $2
jr nc, .asm_26016
ld a, $3
ld [de], a
ld de, $0031
call PlaySoundEffect
ret
.asm_26016
ld a, $2
ld [de], a
ld de, $0031
call PlaySoundEffect
ret
.asm_26020
ld a, $1
ld [de], a
ld de, $0031
call PlaySoundEffect
ret
Func_2602a: ; 0x2602a
dec de
ld a, [de]
cp $9
ret nz
ld a, $1
call Func_26137
inc de
inc de
inc de
inc de
inc de
call GenRandom
bit 7, a
jr z, .asm_26044
ld a, $3
jr .asm_26046
.asm_26044
ld a, $5
.asm_26046
ld [de], a
ld hl, $d791
dec [hl]
ret
Func_2604c: ; 0x2604c
dec de
ld a, [de]
cp $4
ret nz
push de
inc de
inc de
inc de
inc de
inc de
inc de
ld a, [de]
dec a
ld [de], a
jr z, .asm_26063
pop de
ld a, $4
jp Func_26137
.asm_26063
ld a, [$d791]
cp $0
jr z, .asm_26075
ld a, $2
ld [de], a
pop de
ld a, $4
ld [de], a
jp Func_26137
ret ; unused instruction
.asm_26075
ld hl, $d791
inc [hl]
pop de
ld a, $5
jp Func_26137
Func_2607f: ; 0x2607f
dec de
ld a, [de]
cp $7
ret nz
xor a
call Func_26137
inc de
inc de
inc de
inc de
inc de
ld a, [$d792]
cp $6
jr nc, .asm_260ac
cp $2
jr nc, .asm_260a2
ld a, $3
ld [de], a
ld de, $0031
call PlaySoundEffect
ret
.asm_260a2
ld a, $2
ld [de], a
ld de, $0031
call PlaySoundEffect
ret
.asm_260ac
ld a, $1
ld [de], a
ld de, $0031
call PlaySoundEffect
ret
Func_260b6: ; 0x260b6
dec de
ld a, [de]
cp $9
ret nz
ld a, $4
call Func_26137
inc de
inc de
inc de
inc de
inc de
call GenRandom
bit 7, a
jr z, .asm_260d0
ld a, $3
jr .asm_260d2
.asm_260d0
ld a, $5
.asm_260d2
ld [de], a
ld hl, $d791
dec [hl]
ret
Func_260d8: ; 0x260d8
dec de
ld a, [de]
cp $5
ret nz
ld a, $4
jp Func_26137
Func_260e2: ; 0x260e2
dec de
ld a, [de]
cp $5
ret nz
ld a, $1
jp Func_26137
Func_260ec: ; 0x260ec
dec de
ld a, [de]
cp $1
ret nz
push de
inc de
inc de
inc de
inc de
inc de
inc de
inc de
ld a, [de]
and a
jr z, .asm_26103
pop de
ld a, $b
jp Func_26137
.asm_26103
pop de
ld a, $a
jp Func_26137
Func_26109: ; 0x26109
dec de
ld a, [de]
cp $7
ret nz
ld a, $1
call Func_26137
inc de
inc de
inc de
inc de
inc de
ld a, $5
ld [de], a
ld hl, $d791
dec [hl]
ret
Func_26120: ; 0x26120
dec de
ld a, [de]
cp $7
ret nz
ld a, $4
call Func_26137
inc de
inc de
inc de
inc de
inc de
ld a, $5
ld [de], a
ld hl, $d791
dec [hl]
ret
Func_26137: ; 0x26137
push af
sla a
ld c, a
ld b, $0
ld hl, $614f ; todo
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
push de
dec de
dec de
call Func_28a0
pop de
inc de
pop af
ld [de], a
ret
INCBIN "baserom.gbc",$2614f,$261f9 - $2614f
Func_261f9: ; 0x261f9
ld a, $ff
ld [$d795], a
ld a, [de]
sla a
ld c, a
ld b, $0
ld hl, $623a
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
dec de
dec de
dec de
call Func_28a0
ret
Func_26212: ; 0x26212
ld a, [de]
sla a
ld c, a
ld b, $0
ld hl, $623a
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
push de
dec de
dec de
dec de
call Func_28a9
pop de
ret nc
dec de
ld a, [de]
cp $a
ret nz
xor a
ld [de], a
ld [$d79c], a
ld [$d79e], a
ld a, a
ld [$d795], a
ret
INCBIN "baserom.gbc",$2623a,$262f4 - $2623a
Func_262f4: ; 0x262f4
ld a, [$d793]
ld c, a
ld b, $0
.asm_262fa
ld a, c
and a
jr z, .asm_26306
ld a, b
add $8
ld b, a
dec c
ld a, c
jr .asm_262fa
.asm_26306
ld a, b
and a
jr z, .asm_2630c
sub $8
.asm_2630c
ld [$d652], a
ld a, [$d792]
and a
jr z, .asm_2631b
ld b, a
ld a, [$d793]
inc a
sub b
.asm_2631b
ld [$d651], a
ld a, [$d793]
cp $15
jr c, .asm_2632a
ld a, $14
ld [$d793], a
.asm_2632a
push af
xor a
ld [$d650], a
pop af
sla a
ld c, a
ld b, $0
ld hl, $634a
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_26340
ld hl, $6764
.asm_26340
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld a, $9
call Func_10aa
ret
INCBIN "baserom.gbc",$2634a,$26b7e - $2634a
Func_26b7e: ; 0x26b7e
ld bc, $7f65
ld [$ff8a], a
ld a, Bank(Func_175a4)
ld hl, Func_175a4
call BankSwitch
call Func_26bf7
ld [$ff8a], a
ld a, Bank(Func_e4a1)
ld hl, Func_e4a1
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_17e81)
ld hl, Func_17e81
call BankSwitch
call Func_26ba9
call Func_26c3c
ret
Func_26ba9: ; 0x26ba9
ld de, $d76e
call Func_26bbc
ld de, $d778
call Func_26bbc
ld de, $d782
call Func_26bbc
ret
Func_26bbc: ; 0x26bbc
ld a, [de]
ld hl, hBoardXShift
sub [hl]
ld b, a
inc de
inc de
ld a, [de]
ld hl, hBoardYShift
sub [hl]
ld c, a
dec de
dec de
dec de
dec de
dec de
dec de
ld a, [de]
ld e, a
ld d, $0
ld hl, $6bdf
add hl, de
ld a, [hl]
cp $ff
call nz, Func_1f0b
ret
INCBIN "baserom.gbc",$26bdf,$26bf7 - $26bdf
Func_26bf7: ; 0x26bf7: ; 0x26bf7
ld a, [$d795]
cp $0
ret z
ld de, $d79c
ld a, [de]
ld hl, hBoardXShift
sub [hl]
ld b, a
inc de
inc de
ld a, [de]
ld hl, hBoardYShift
sub [hl]
ld c, a
dec de
dec de
dec de
dec de
dec de
dec de
ld a, [de]
ld e, a
ld d, $0
ld hl, $6c23
add hl, de
ld a, [hl]
cp $ff
call nz, Func_1f0b
ret
INCBIN "baserom.gbc",$26c23,$26c3c - $26c23
Func_26c3c: ; 0x26c3c
ld a, [$d64e]
and a
ret z
ld a, [$d652]
ld hl, hBoardXShift
sub [hl]
ld b, a
xor a
ld hl, hBoardYShift
sub [hl]
ld c, a
ld a, [$d64f]
cp $a
jr c, .asm_26c5b
ld de, $0000
jr .asm_26c5e
.asm_26c5b
ld de, $0001
.asm_26c5e
ld hl, $6c7d
add hl, de
ld a, [hl]
call Func_1f0b
ld hl, $d64f
inc [hl]
ld a, [hl]
cp $14
ret c
ld [hl], $0
ld hl, $d650
inc [hl]
ld a, [hl]
cp $a
ret nz
xor a
ld [$d64e], a
ret
INCBIN "baserom.gbc",$26c7d,$28000 - $26c7d
SECTION "banka", ROMX, BANK[$a]
HandlePokedexScreen: ; 0x28000
ld a, [wScreenState]
rst $18 ; calls JumpToFuncInTable
PointerTable_28004: ; 0x28004
dw LoadPokedexScreen
dw MainPokedexScreen
dw MonInfoPokedexScreen
dw Func_282e9 ; not sure if this is used ever...
dw ExitPokedexScreen
LoadPokedexScreen: ; 0x2800e
ld a, $23
ld [$ff9e], a
ld a, $e4
ld [$d80c], a
ld a, $93
ld [$d80d], a
ld a, $e4
ld [$d80e], a
xor a
ld [hBoardXShift], a
ld a, $8
ld [hBoardYShift], a
ld a, $7
ld [$ffa7], a
ld a, $8c
ld [$ffa6], a
ld a, $3b
ld [$ffa2], a
ld [$ffa8], a
ld [$ffa9], a
ld [$ffaa], a
ld hl, $ff9f
set 6, [hl]
ld hl, $ffff
set 1, [hl]
ld a, $2
ld [$ffb0], a
ld hl, PointerTable_280a2
ld a, [hGameBoyColorFlag]
call LoadVideoData
xor a
ld [$d959], a
ld [$d95a], a
ld [$d95b], a
ld [$d95c], a
ld [$d960], a
ld [$d961], a
ld [$d95e], a
ld a, $1
ld [$d862], a
call ClearOAMBuffer
call Func_285db
call Func_28931
call Func_289c8
call Func_28a15
call Func_28972
call Func_28a8a
call Func_28ad1
call Func_28add
call CountNumSeenOwnedMons
call Func_b66
ld a, $f
call SetSongBank
ld de, $0004
call Func_490
call Func_588
call Func_bbe
ld hl, wScreenState
inc [hl]
ret
PointerTable_280a2: ; 0x280a2
dw Data_280a6
dw Data_280c4
Data_280a6: ; 0x280a6
dw $5800
db $2B
dw vTiles0
dw $6000
dw $5000
db $31
dw $9800
dw $1000
dw $4800
db $31
dw vBGMap1
dw $800
dw $4800
db $31
dw $9e00
dw $800
db $FF, $FF ; terminators
Data_280c4: ; 0x280c4
dw $5800
db $2B
dw vTiles0
dw $6000
dw $5000
db $31
dw $9800
dw $1000
dw $5400
db $31
dw $9800
dw $1002
dw $4800
db $31
dw vBGMap1
dw $800
dw $4800
db $31
dw $9e00
dw $800
dw $4c00
db $31
dw vBGMap1
dw $802
dw $4c00
db $31
dw $9e00
dw $802
dw $4e80
db $37
dw $0000
dw $101
db $FF, $FF ; terminators
MainPokedexScreen: ; 0x280fe
call Func_28513
ld a, [hNewlyPressedButtons]
bit 0, a
jr z, .asm_28142
ld a, [$d95f]
and a
jp nz, .asm_28174
ld a, [$d959]
ld c, a
ld b, $0
ld hl, wPokedexFlags
add hl, bc
ld a, [hl]
and a
jp z, .asm_28174
push hl
ld a, [$d959]
inc a
ld e, a
ld d, $0
call Func_4ef
pop hl
bit 1, [hl]
jp z, .asm_28174
call Func_288c6
call Func_2885c
call Func_926
call Func_2887c
call Func_2885c
ld hl, wScreenState
inc [hl]
ret
.asm_28142
bit 1, a
jr z, .asm_2814f
call Func_285db
ld a, $4
ld [wScreenState], a
ret
.asm_2814f
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_28174
ld a, [hJoypadState]
bit BIT_START, a
jr z, .asm_28168
ld a, [$d960]
and a
ld a, $ff
ld [$d960], a
call z, Func_28add
jr .asm_28174
.asm_28168
ld a, [$d960]
and a
ld a, $0
ld [$d960], a
call nz, Func_28add
.asm_28174
call Func_285db
ret
MonInfoPokedexScreen: ; 0x28178
ld a, [$d956]
bit 0, a
jr z, .asm_28190
ld a, [hNewlyPressedButtons]
bit BIT_A_BUTTON, a
jr z, .asm_2818a
call Func_28912
jr .asm_281a2
.asm_2818a
bit 1, a
jr z, .asm_281a2
jr .asm_28196
.asm_28190
ld a, [hNewlyPressedButtons]
and $3
jr z, .asm_281a2
.asm_28196
call Func_288a2
call Func_285db
ld a, $1
ld [wScreenState], a
ret
.asm_281a2
ld a, [hGameBoyColorFlag]
and a
jr z, .asm_281c7
ld a, [hJoypadState]
bit BIT_START, a
jr z, .asm_281bb
ld a, [$d960]
and a
ld a, $ff
ld [$d960], a
call z, Func_28add
jr .asm_281c7
.asm_281bb
ld a, [$d960]
and a
ld a, $0
ld [$d960], a
call nz, Func_28add
.asm_281c7
call Func_2885c
ret
INCBIN "baserom.gbc",$281cb,$282e9 - $281cb
Func_282e9: ; 0x282e9
ld a, [$d960]
and a
jr z, .asm_28318
ld a, [$d959]
ld c, a
ld b, $0
ld hl, $7429 ; todo
add hl, bc
ld a, $4
call Func_68f
ld c, a
ld a, [$ffb3]
swap a
and $7
cp $7
jr z, .asm_2830d
and $1
jr .asm_2830f
.asm_2830d
ld a, $2
.asm_2830f
add c
add $a5
ld bc, $2030
call LoadOAMData
.asm_28318
ld a, [$daa2]
sla a
ld c, a
ld b, $0
ld hl, $42b9 ; todo
add hl, bc
ld a, [hli]
ld c, a
ld a, [hli]
ld b, a
ld a, $63
call LoadOAMData
call Func_28368
ld a, [hNewlyPressedButtons]
and $6
jr z, .asm_28367
ld a, $31
ld hl, $4800 ; todo
ld de, vBGMap1
ld bc, $0200
call LoadVRAMData
ld a, $1
ld [$ff4f], a
ld a, $31
ld hl, $4c00 ; todo
ld de, vBGMap1
ld bc, $0200
call LoadVRAMData
xor a
ld [$ff4f], a
call Func_28972
call Func_28a8a
call Func_28ad1
ld a, $1
ld [wScreenState], a
.asm_28367
ret
Func_28368: ; 0x28368
ld a, [hJoypadState]
bit BIT_A_BUTTON, a
jr nz, .asm_28371
jp Func_284bc
.asm_28371
ld a, [hPressedButtons]
ld b, a
ld a, [$daa2]
ld e, a
ld d, $0
ld hl, $da8a
add hl, de
ld a, [hl]
bit 5, b
jr z, .asm_28386
dec a
jr .asm_2838a
.asm_28386
bit 4, b
ret z
inc a
.asm_2838a
and $1f
ld [hl], a
push af
sla e
rl d
ld hl, $4289 ; todo
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
pop af
push af
swap a
and $f
call PutTileInVRAM
inc hl
pop af
and $f
call PutTileInVRAM
ld hl, $442c ; todo
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
ld a, [hld]
ld c, a
ld b, $0
sla c
rl b
sla c
rl b
sla c
rl b
sla c
rl b
sla c
rl b
ld a, [hld]
or c
ld c, a
sla c
rl b
sla c
rl b
sla c
rl b
sla c
rl b
sla c
rl b
ld a, [hl]
or c
ld c, a
ld a, [$d960]
and a
jr nz, .asm_283ff
ld hl, $445c ; todo
add hl, de
ld a, [hl]
ld hl, $ff68
call PutTileInVRAM
ld hl, $ff69
ld a, c
call PutTileInVRAM
ld a, b
call PutTileInVRAM
ret
.asm_283ff
ld hl, $445c ; todo
add hl, de
ld a, [hl]
ld hl, $ff68
call PutTileInVRAM
ld hl, $ff69
ld a, c
call PutTileInVRAM
ld a, b
call PutTileInVRAM
ld hl, $448c ; todo
add hl, de
ld a, [hl]
ld hl, $ff6a
call PutTileInVRAM
ld hl, $ff6b
ld a, c
call PutTileInVRAM
ld a, b
call PutTileInVRAM
ret
INCBIN "baserom.gbc",$2842c,$284bc - $2842c
Func_284bc: ; 0x284bc
ld a, [hPressedButtons]
ld b, a
ld a, [$daa2]
bit 5, b
jr z, .asm_284cd
dec a
bit 7, a
jr nz, .asm_284ef
jr .asm_284f5
.asm_284cd
bit 4, b
jr z, .asm_284d8
inc a
cp $18
jr nc, .asm_284f3
jr .asm_284f5
.asm_284d8
bit 6, b
jr z, .asm_284e4
sub $3
bit 7, a
jr nz, .asm_284ef
jr .asm_284f5
.asm_284e4
bit 7, b
ret z
add $3
cp $18
jr nc, .asm_284f3
jr .asm_284f5
.asm_284ef
add $18
jr .asm_284f5
.asm_284f3
sub $18
.asm_284f5
ld [$daa2], a
ret
ExitPokedexScreen: ; 0x284f9
call Func_cb5
call Func_576
ld hl, $ff9f
res 6, [hl]
ld hl, $ffff
res 1, [hl]
ld a, SCREEN_TITLESCREEN
ld [wCurrentScreen], a
xor a
ld [wScreenState], a
ret
Func_28513: ; 0x28513
ld a, [hPressedButtons]
ld hl, $d95e
or [hl]
ld [hl], a
ld a, [$d95c]
and a
ret nz
ld a, [$d95e]
ld b, a
ld a, [$d9f8]
and a
ld a, $96
jr z, .asm_2852d
ld a, $97
.asm_2852d
ld d, a
ld a, [$d959]
bit 6, b
jr z, .asm_28548
and a
jr z, .asm_285a9
dec a
ld [$d959], a
ld a, $4
ld [$d95c], a
ld a, $1
ld [$d95f], a
jr .asm_285a9
.asm_28548
bit 7, b
jr z, .asm_2855f
inc a
cp d
jr z, .asm_285a9
ld [$d959], a
ld a, $4
ld [$d95c], a
ld a, $1
ld [$d95f], a
jr .asm_285a9
.asm_2855f
ld a, d
sub $9
ld d, a
ld a, [$d95a]
ld c, $5
bit 5, b
jr z, .asm_28586
cp $5
jr nc, .asm_28571
ld c, a
.asm_28571
sub c
ld [$d95a], a
ld a, [$d959]
sub c
ld [$d959], a
ld a, $1
ld [$d95f], a
call Func_285ca
jr .asm_285aa
.asm_28586
bit 4, b
jr z, .asm_285ae
cp d
jr c, .asm_28594
push af
cpl
add d
add $5
ld c, a
pop af
.asm_28594
add c
ld [$d95a], a
ld a, [$d959]
add c
ld [$d959], a
ld a, $1
ld [$d95f], a
call Func_285ca
jr .asm_285aa
.asm_285a9
xor a
.asm_285aa
ld [$d95e], a
ret
.asm_285ae
ld a, [$d95f]
and a
ret z
ld de, $0003
call PlaySoundEffect
call Func_28931
call Func_289c8
call Func_28a15
call Func_28add
xor a
ld [$d95f], a
ret
Func_285ca: ; 0x285ca
xor a
ld [$d80a], a
call Func_28972
call Func_28a8a
call Func_28ad1
ld a, [$d80a]
ret
Func_285db: ; 0x285db
ld a, [$d959]
ld c, a
ld b, $0
ld hl, wPokedexFlags
add hl, bc
bit 1, [hl]
call nz, Func_287e7
ld bc, $8c38
ld a, $64
call LoadOAMData
ld bc, $8840
ld a, $65
call LoadOAMData
ld bc, $8888
ld a, $66
call LoadOAMData
call DrawCornerInfoPokedexScreen
ld a, [$d959]
ld c, a
ld b, $0
ld hl, $7136 ; todo
add hl, bc
ld a, [hl]
add $49
ld c, a
ld b, $90
ld a, [$d95b]
srl a
srl a
and $3
ld e, a
ld d, $0
ld hl, $4687 ; todo
add hl, de
ld a, [hl]
call LoadOAMData
ld a, [$d959]
ld hl, $d95a
sub [hl]
jr nc, .asm_2863b
dec [hl]
ld a, $1
ld [$d95d], a
xor a
jr .asm_28647
.asm_2863b
cp $5
jr c, .asm_28647
ld a, $1
ld [$d95d], a
inc [hl]
ld a, $4
.asm_28647
ld c, a
push bc
ld a, [hJoypadState]
and a
ld a, [$d95b]
jr z, .asm_28652
xor a
.asm_28652
inc a
ld [$d95b], a
bit 3, a
jr nz, .asm_28667
swap c
ld a, c
add $40
ld c, a
ld b, $10
ld a, $63
call LoadOAMData
.asm_28667
pop bc
ld a, [$d95c]
and a
ret z
dec a
ld [$d95c], a
sla a
ld e, a
ld d, $0
push hl
ld hl, PointerTable_2867f
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
jp [hl]
PointerTable_2867f: ; 0x2867f
dw Func_286dd
dw Func_28721
dw Func_286dd
dw Func_28765
INCBIN "baserom.gbc",$28687,$2868b - $28687
DrawCornerInfoPokedexScreen: ; 0x2868b
; If player is holding SELECT button, it draws the seen/own count in the top-right corner.
; Otherwise, it draws the word "POKeDEX".
ld a, [hJoypadState]
bit BIT_SELECT, a
jr z, .asm_286c8
ld bc, $6d03
ld a, [wNumPokemonSeen + 1]
call LoadSeenOwnDigitOAM
ld a, [wNumPokemonSeen]
swap a
call LoadSeenOwnDigitOAM
ld a, [wNumPokemonSeen]
call LoadSeenOwnDigitOAM
ld bc, $8202
ld a, $76
call LoadOAMData ; draws the "/" between the seen/owned numbers
ld bc, $8703
ld a, [wNumPokemonOwned + 1]
call LoadSeenOwnDigitOAM
ld a, [wNumPokemonOwned]
swap a
call LoadSeenOwnDigitOAM
ld a, [wNumPokemonOwned]
call LoadSeenOwnDigitOAM
ret
.asm_286c8
ld bc, $6800
ld a, $6a
call LoadOAMData
ret
LoadSeenOwnDigitOAM: ; 0x286d1
and $f
add $6c
call LoadOAMData
ld a, b
add $7 ; adds 7 pixels to the next digit's x position on screen
ld b, a
ret
Func_286dd: ; 0x286dd
pop hl
ld a, [$d862]
and a
jr nz, .asm_286ff
push bc
push hl
ld a, [$d863]
ld e, a
ld a, [$d864]
ld d, a
ld hl, $c010
xor a
ld bc, $00a0
call Func_735
ld a, $1
ld [$d862], a
pop hl
pop bc
.asm_286ff
ld a, [$d95d]
and a
ret z
ld a, [$d95c]
and a
jr nz, .asm_2870d
ld [$d95d], a
.asm_2870d
ld a, c
and a
jr nz, .asm_28719
ld hl, $ffab
dec [hl]
dec [hl]
dec [hl]
dec [hl]
ret
.asm_28719
ld hl, $ffab
inc [hl]
inc [hl]
inc [hl]
inc [hl]
ret
Func_28721: ; 0x28721
pop hl
ld a, [$d95d]
and a
ret z
ld a, c
and a
jr nz, .asm_28747
ld a, [hl]
push af
sla a
and $1e
ld c, a
ld b, $0
ld hl, $47c7
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
pop af
call Func_28aaa
ld hl, $ffab
dec [hl]
dec [hl]
dec [hl]
dec [hl]
ret
.asm_28747
ld a, [hl]
add $5
push af
sla a
and $1e
ld c, a
ld b, $0
ld hl, $47c7
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
pop af
call Func_28aaa
ld hl, $ffab
inc [hl]
inc [hl]
inc [hl]
inc [hl]
ret
Func_28765: ; 0x28765
pop hl
ld a, [$d95d]
and a
ret z
ld a, c
and a
jr nz, .asm_28791
push hl
ld a, [hl]
sla a
and $e
ld c, a
ld b, $0
ld hl, $47b7
add hl, bc
ld a, [hli]
ld e, a
ld a, [hli]
ld d, a
ld hl, $ffab
dec [hl]
dec [hl]
dec [hl]
dec [hl]
pop hl
xor a
ld [$d862], a
ld a, [hl]
call Func_28993
ret
.asm_28791
push hl
ld a, [hl]
add $5
sla a
and $e
ld c, a
ld b, $0
ld hl, $47b7
add hl, bc
ld a, [hli]
ld e, a
ld a, [hli]
ld d, a
ld hl, $ffab
inc [hl]
inc [hl]
inc [hl]
inc [hl]
pop hl
xor a
ld [$d862], a
ld a, [hl]
add $5
call Func_28993
ret
INCBIN "baserom.gbc",$287b7,$287e7 - $287b7
Func_287e7: ; 0x287e7
ld a, [$d960]
and a
ret z
ld a, [$d95f]
and a
ret nz
ld a, [$d959]
ld c, a
ld b, $0
ld hl, $7429 ; todo
add hl, bc
ld a, $4
call Func_68f
bit 7, a
ret nz
ld [$d5bc], a
call Func_28815
ld a, [$d5bd]
add $a5
ld bc, $2030
call LoadOAMData
ret
Func_28815: ; 0x28815
ld a, [$d5be]
dec a
ld [$d5be], a
ret nz
ld a, [$d5bf]
inc a
and $7
ld [$d5bf], a
jr nz, .asm_28836
ld a, [$d5c3]
ld [$d5be], a
xor a
ld [$d5c4], a
ld c, $2
jr .asm_28854
.asm_28836
ld a, [$d5bc]
ld c, a
ld a, [$d5bd]
sub c
cp $1
ld c, $0
jr nc, .asm_28846
ld c, $1
.asm_28846
ld b, $0
ld hl, $d5c1
add hl, bc
ld a, [hl]
ld [$d5be], a
xor a
ld [$d5c4], a
.asm_28854
ld a, [$d5bc]
add c
ld [$d5bd], a
ret
Func_2885c: ; 0x2885c
ld a, [$d959]
ld c, a
ld b, $0
ld hl, wPokedexFlags
add hl, bc
bit 1, [hl]
call nz, Func_287e7
ld bc, $8888
ld a, $66
call LoadOAMData
ld bc, $6800
ld a, $6a
call LoadOAMData
ret
Func_2887c: ; 0x2887c
ld a, $31
ld hl, $5120 ; todo
ld de, $9900
ld bc, $0100
call LoadVRAMData
ld a, $3f
ld [$ffa2], a
ld a, $47
ld [$ffa9], a
ld b, $33
.asm_28894
push bc
ld a, $7a
sub b
ld [$ffa9], a
rst $10
pop bc
dec b
dec b
dec b
jr nz, .asm_28894
ret
Func_288a2: ; 0x288a2
ld b, $33
.asm_288a4
push bc
ld a, $44
add b
ld [$ffa9], a
rst $10
pop bc
dec b
dec b
dec b
jr nz, .asm_288a4
ld a, $3b
ld [$ffa2], a
ld [$ffa9], a
ld a, $31
ld hl, $5100 ; todo
ld de, $9900
ld bc, $0020
call LoadVRAMData
ret
Func_288c6: ; 0x288c6
ld a, [$d959]
ld c, a
ld b, $0
ld hl, wPokedexFlags
add hl, bc
bit 1, [hl]
ld hl, $4000
jr z, .asm_288f4
ld a, [$d959]
ld c, a
ld b, $0
sla c
rl b
ld hl, $4002 ; todo
add hl, bc
ld a, $b
call Func_68f
inc hl
ld c, a
ld a, $b
call Func_68f
ld b, a
ld h, b
ld l, c
.asm_288f4
xor a
ld [$d860], a
ld [$d861], a
ld bc, $906c
ld de, $8900
call Func_28d97
rl a
ld [$d956], a
ld a, l
ld [$d957], a
ld a, h
ld [$d958], a
ret
Func_28912: ; 0x28912
ld bc, $906c
ld de, $8900
ld a, [$d957]
ld l, a
ld a, [$d958]
ld h, a
call Func_28d97
rl a
ld [$d956], a
ld a, l
ld [$d957], a
ld a, h
ld [$d958], a
ret
Func_28931: ; 0x28931
ld a, [$d959]
ld c, a
ld b, $0
ld hl, wPokedexFlags
add hl, bc
ld a, [hl]
and a
ld hl, $4970 ; todo
jr z, .asm_2895d
ld a, [$d959]
ld c, a
ld b, $0
ld h, b
ld l, c
sla l
rl h
sla l
rl h
sla l
rl h
add hl, bc
add hl, bc
add hl, bc
ld bc, $5892
add hl, bc
.asm_2895d
ld a, $ff
ld [$d860], a
xor a
ld [$d861], a
ld bc, $500a
ld de, $9500
call Func_28e09
ret
INCBIN "baserom.gbc",$28970,$28972 - $28970
Func_28972: ; 0x28972
ld a, [$d95a]
ld c, a
ld b, $6
.asm_28978
push bc
ld a, c
sla a
and $e
ld e, a
ld d, $0
ld hl, $47b7 ; todo
add hl, de
ld a, [hli]
ld e, a
ld a, [hl]
ld d, a
ld a, c
call Func_28993
pop bc
inc c
dec b
jr nz, .asm_28978
ret
Func_28993: ; 0x28993
push hl
ld c, a
ld b, $0
ld hl, wPokedexFlags
add hl, bc
ld a, [hl]
and a
ld hl, $49c6 ; todo
jr z, .asm_289b7
ld h, b
ld l, c
sla l
rl h
sla l
rl h
sla l
rl h
add hl, bc
add hl, bc
add hl, bc
ld bc, $5892 ; todo
add hl, bc
.asm_289b7
xor a
ld [$d860], a
ld [$d861], a
ld bc, $500a ; todo
call Func_28e09
pop hl
ret
INCBIN "baserom.gbc",$289c6,$289c8 - $289c6
Func_289c8: ; 0x289c8
ld a, [$d959]
ld c, a
ld b, $0
ld hl, wPokedexFlags
add hl, bc
bit 1, [hl]
ld hl, $4a12 ; todo
jr z, .asm_289fe
ld a, [$d959]
ld c, a
ld b, $0
ld hl, $5f0f ; todo
add hl, bc
ld c, [hl]
ld h, b
ld l, c
sla l
rl h
sla l
rl h
sla l
rl h
add hl, bc
add hl, bc
add hl, bc
sla l
rl h
add hl, bc
ld bc, $5fa6 ; todo
add hl, bc
.asm_289fe
ld a, $ff
ld [$d860], a
ld a, $4
ld [$d861], a
ld bc, $5816
ld de, $95a0
call Func_28e09
ret
INCBIN "baserom.gbc",$28a12,$28a15 - $28a12
Func_28a15: ; 0x28a15
ld a, [$d959]
ld c, a
ld b, $0
ld h, b
ld l, c
sla l
rl h
add hl, bc
sla l
rl h
add hl, bc
sla l
rl h
add hl, bc
ld bc, $685d ; todo
add hl, bc
ld d, h
ld e, l
ld a, $0
ld [$d865], a
push de
ld hl, $9844
call Func_28d71
pop de
inc de
inc de
inc de
inc de
ld a, [$d959]
ld c, a
ld b, $0
ld hl, wPokedexFlags
add hl, bc
bit 1, [hl]
jr nz, .asm_28a54
ld de, $4a7f ; todo
.asm_28a54
push de
ld hl, $98c8
call Func_28d71
pop de
inc de
inc de
inc de
inc de
inc de
push de
ld hl, $98ce
call Func_28d71
pop de
inc de
inc de
inc de
inc de
inc de
ld hl, $98f0
ld a, [$ff40]
bit 7, a
jr nz, .asm_28a7a
ld a, [de]
ld [hl], a
ret
.asm_28a7a
ld a, [de]
call PutTileInVRAM
ret
INCBIN "baserom.gbc",$28a7f,$28a8a - $28a7f
Func_28a8a: ; 0x28a8a
ld a, [$d95a]
ld c, a
ld b, $6
.asm_28a90
push bc
ld a, c
sla a
and $1e
ld e, a
ld d, $0
ld hl, $47c7 ; todo
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
ld a, c
call Func_28aaa
pop bc
inc c
dec b
jr nz, .asm_28a90
ret
Func_28aaa: ; 0x28aaa
push hl
ld c, a
ld b, $0
ld h, b
ld l, c
sla l
rl h
add hl, bc
sla l
rl h
add hl, bc
sla l
rl h
add hl, bc
ld bc, $685d ; todo
add hl, bc
ld d, h
ld e, l
ld a, $23
ld [$d865], a
pop hl
push hl
call Func_28d71
pop hl
ret
Func_28ad1: ; 0x28ad1
ld a, [$d95a]
swap a
and $f0
sub $3c
ld [$ffab], a
ret
Func_28add: ; 0x28add
ld a, [$d959]
ld c, a
ld b, $0
ld hl, wPokedexFlags
add hl, bc
ld a, [hl]
and a
jp z, Func_28b76
dec a
jp z, Func_28baf
ld a, [$d960]
and a
jr z, .asm_28afc
call Func_28cc2
jp z, Func_28bf5
.asm_28afc
ld a, [$d959]
ld c, a
ld b, $0
sla c
rl b
add c
ld c, a
jr nc, .asm_28b0b
inc b
.asm_28b0b
push bc
ld hl, $6b50 ; todo
add hl, bc
ld a, $4
call Func_68f
inc hl
ld c, a
ld a, $4
call Func_68f
inc hl
ld b, a
ld a, $4
call Func_68f
ld h, b
ld l, c
ld de, $9000
ld bc, $0180
call Func_735
call Func_28cd4
pop bc
ld a, [hGameBoyColorFlag]
and a
ret z
push bc
ld hl, $6d15 ; todo
add hl, bc
ld a, $4
call Func_68f
inc hl
ld e, a
ld a, $4
call Func_68f
inc hl
ld d, a
ld a, $4
call Func_68f
ld hl, $9861
call Func_86f
pop bc
ld hl, $6eda
add hl, bc
ld a, $4
call Func_68f
inc hl
ld e, a
ld a, $4
call Func_68f
inc hl
ld d, a
ld a, $4
call Func_68f
ld bc, $10b0
ld hl, $ff68
call Func_8e1
ret
Func_28b76: ; 0x28b76
ld a, $1c
ld hl, $5500
ld de, $9000
ld bc, $0180
call Func_735
call Func_28cd4
ld a, [hGameBoyColorFlag]
and a
ret z
ld a, $a
ld de, $4b97
ld hl, $9861
call Func_86f
ret
INCBIN "baserom.gbc",$28b97,$28baf - $28b97
Func_28baf: ; 0x28baf
ld a, [$d959]
ld c, a
ld b, $0
sla c
rl b
add c
ld c, a
jr nc, .asm_28bbe
inc b
.asm_28bbe
ld hl, $6b50 ; todo
add hl, bc
ld a, $4
call Func_68f
inc hl
ld c, a
ld a, $4
call Func_68f
inc hl
ld b, a
ld a, $4
call Func_68f
ld hl, $0180
add hl, bc
ld de, $9000
ld bc, $0180
call Func_735
call Func_28cd4
ld a, [hGameBoyColorFlag]
and a
ret z
ld a, $a
ld de, $4b97 ; todo
ld hl, $9861
call Func_86f
ret
Func_28bf5: ; 0x28bf5
ld a, [$d959]
ld c, a
ld b, $0
sla c
rl b
add c
ld c, a
jr nc, .asm_28c04
inc b
.asm_28c04
push bc
ld a, $1
ld [$ff4f], a
ld hl, $7264 ; todo
add hl, bc
ld a, $4
call Func_68f
inc hl
ld c, a
ld a, $4
call Func_68f
inc hl
ld b, a
ld a, $4
call Func_68f
ld h, b
ld l, c
ld de, vTiles0
ld bc, $0300
call Func_735
xor a
ld [$ff4f], a
pop bc
push bc
ld a, [$d959]
ld c, a
ld b, $0
ld hl, $561d ; todo
add hl, bc
ld a, $4
call Func_68f
ld c, a
ld b, $0
sla c
rl b
add c
ld c, a
jr nc, .asm_28c4b
inc b
.asm_28c4b
ld hl, $7685 ; todo
add hl, bc
ld a, $4
call Func_68f
ld [$d5c1], a
ld [$d5be], a
inc hl
ld a, $4
call Func_68f
ld [$d5c2], a
inc hl
ld a, $4
call Func_68f
ld [$d5c3], a
ld a, [$d959]
ld c, a
ld b, $0
ld hl, $7429 ; todo
add hl, bc
ld a, $4
call Func_68f
ld [$d5bc], a
ld [$d5bd], a
call Func_28cf8
pop bc
ld a, [hGameBoyColorFlag]
and a
ret z
ld hl, $709f ; todo
add hl, bc
ld a, $4
call Func_68f
inc hl
ld e, a
ld a, $4
call Func_68f
inc hl
ld d, a
ld a, $4
call Func_68f
push af
push de
ld bc, $10b0
ld hl, $ff68
call Func_8e1
pop de
pop af
push af
ld bc, $08d8
ld hl, $ff6a
call Func_8e1
pop af
ld bc, $08e8
ld hl, $ff6a
call Func_8e1
ret
Func_28cc2: ; 0x28cc2
ld a, [$d959]
ld c, a
ld b, $0
ld hl, $7429 ; todo
add hl, bc
ld a, $4
call Func_68f
bit 7, a
ret
Func_28cd4: ; 0x28cd4
xor a
ld hl, $d961
cp [hl]
ret z
ld [hl], a
ld de, .Data_28ce0
jr asm_28d1d
.Data_28ce0: ; 0x28ce0
db $0
db $1
db $2
db $3
db $4
db $5
db $6
db $7
db $8
db $9
db $a
db $b
db $c
db $d
db $e
db $f
db $10
db $11
db $12
db $13
db $14
db $15
db $16
db $17
Func_28cf8: ; 0x28cf8
ld a, $1
ld hl, $d961
cp [hl]
ret z
ld [hl], a
ld de, .data_28d05
jr asm_28d1d
.data_28d05
db $fe
db $fe
db $fe
db $fe
db $fe
db $fe
db $fe
db $fe
db $fe
db $fe
db $fe
db $fe
db $fe
db $fe
db $fe
db $fe
db $fe
db $fe
db $fe
db $fe
db $fe
db $fe
db $fe
db $fe
asm_28d1d
ld hl, $9861
ld b, $4
.asm_28d22
ld c, $6
.asm_28d24
ld a, [de]
call PutTileInVRAM
inc de
inc hl
dec c
jr nz, .asm_28d24
ld a, l
add $1a
ld l, a
dec b
jr nz, .asm_28d22
ret
CountNumSeenOwnedMons: ; 0x28d35
ld hl, wPokedexFlags
ld de, $0000 ; keep a running count: d = owned, e = seen
ld b, NUM_POKEMON
.checkSeen
bit 0, [hl] ; is mon seen?
jr z, .checkOwned
inc e
.checkOwned
bit 1, [hl] ; is mon owned?
jr z, .nextMon
inc d
.nextMon
inc hl
dec b
jr nz, .checkSeen
push de
ld a, d
call ConvertHexByteToDecWord
ld a, e
ld [wNumPokemonSeen], a
ld a, d
ld [wNumPokemonSeen + 1], a
pop de
ld a, e
call ConvertHexByteToDecWord
ld a, e
ld [wNumPokemonOwned], a
ld a, d
ld [wNumPokemonOwned + 1], a
ret
INCBIN "baserom.gbc",$28d66,$28d71 - $28d66
Func_28d71: ; 0x28d71
ld a, [$d865]
ld c, a
ld a, [de]
inc de
and a
ret z
cp $20
jr nz, .asm_28d81
ld a, $ff
jr .asm_28d82
.asm_28d81
add c
.asm_28d82
call Func_28d88
inc hl
jr Func_28d71
Func_28d88: ; 0x28d88
push af
ld a, [$ff40]
bit 7, a
jr nz, .asm_28d92
pop af
ld [hl], a
ret
.asm_28d92
pop af
call PutTileInVRAM
ret
Func_28d97: ; 0x28d97
push de
ld a, b
ld [$ff8c], a
ld [$ff8d], a
ld a, c
ld [$ff8f], a
xor a
ld [$ff8e], a
ld [$ff90], a
ld [$ff91], a
call Func_28e73
.asm_28daa
call Func_2957c
jr nc, .asm_28dcb
push hl
ld [$ff92], a
cp $ff
jr nz, .asm_28dbb
call Func_208c
jr .asm_28dc8
.asm_28dbb
ld c, a
ld b, $0
ld hl, $5792 ; todo
add hl, bc
ld a, [hl]
ld [$ff93], a
call Func_206d
.asm_28dc8
pop hl
jr nc, .asm_28daa
.asm_28dcb
pop de
push af
ld a, e
ld [$d863], a
ld a, d
ld [$d864], a
ld a, [$d862]
and a
jr nz, .asm_28ddd
pop af
ret
.asm_28ddd
push hl
ld a, [$d861]
ld c, a
ld b, $0
bit 7, c
jr z, .asm_28de9
dec b
.asm_28de9
ld hl, $c010
add hl, bc
ld a, [$ff8f]
ld c, a
ld b, $0
sla c
rl b
sla c
rl b
sla c
rl b
sla c
rl b
xor a
call Func_735
pop hl
pop af
ret
Func_28e09: ; 0x28e09
push de
ld a, b
ld [$ff8c], a
ld [$ff8d], a
ld a, c
ld [$ff8f], a
xor a
ld [$ff8e], a
ld [$ff90], a
ld [$ff91], a
call Func_28e73
.asm_28e1c
call Func_295e1
jr nc, .asm_28e35
push hl
ld [$ff92], a
ld c, a
ld b, $0
ld hl, $5792 ; todo
add hl, bc
ld a, [hl]
ld [$ff93], a
call Func_206d
pop hl
jr nc, .asm_28e1c
nop
.asm_28e35
pop de
push af
ld a, e
ld [$d863], a
ld a, d
ld [$d864], a
ld a, [$d862]
and a
jr nz, .asm_28e47
pop af
ret
.asm_28e47
push hl
ld a, [$d861]
ld c, a
ld b, $0
bit 7, c
jr z, .asm_28e53
dec b
.asm_28e53
ld hl, $c010
add hl, bc
ld a, [$ff8f]
ld c, a
ld b, $0
sla c
rl b
sla c
rl b
sla c
rl b
sla c
rl b
xor a
call Func_735
pop hl
pop af
ret
Func_28e73: ; 0x28e73
push hl
ld a, [$ff8f]
ld c, a
ld b, $0
sla c
rl b
sla c
rl b
sla c
rl b
sla c
rl b
ld hl, $5566 ; todo
ld a, l
sub c
ld l, a
ld a, h
sbc b
ld h, a
push hl
ld hl, wc000
ld a, [$d860]
ret
INCBIN "baserom.gbc",$28e9a,$2957c - $28e9a
Func_2957c: ; 0x2957c
ld a, $b
call Func_68f
inc hl
and a
ret z
cp $d
jr nz, .asm_2958c
ld a, $ff
scf
ret
.asm_2958c
cp $30
jr c, .asm_29594
cp $3a
jr c, .asm_295be
.asm_29594
cp $41
jr c, .asm_2959c
cp $5b
jr c, .asm_295c2
.asm_2959c
cp $61
jr c, .asm_295a4
cp $7b
jr c, .asm_295c6
.asm_295a4
cp $20
jr z, .asm_295ca
cp $2c
jr z, .asm_295cd
cp $2e
jr z, .asm_295d1
cp $60
jr z, .asm_295d5
cp $2d
jr z, .asm_295d9
cp $40
jr z, .asm_295dd
and a
ret
.asm_295be
sub $88
scf
ret
.asm_295c2
sub $8e
scf
ret
.asm_295c6
sub $94
scf
ret
.asm_295ca
xor a
scf
ret
.asm_295cd
ld a, $f3
scf
ret
.asm_295d1
ld a, $f4
scf
ret
.asm_295d5
ld a, $fa
scf
ret
.asm_295d9
ld a, $b2
scf
ret
.asm_295dd
ld a, $f9
scf
ret
Func_295e1: ; 0x295e1
ld a, [hli]
and a
ret z
cp $80
jr nc, .asm_295ed
ld c, a
ld b, $0
jr .asm_295f0
.asm_295ed
ld b, a
ld a, [hli]
ld c, a
.asm_295f0
ld a, b
and a
jr nz, .asm_295f9
ld a, c
sub $20
scf
ret
.asm_295f9
push hl
call Func_29605
ld c, a
ld b, $0
add hl, bc
ld a, [hl]
pop hl
scf
ret
Func_29605: ; 0x29605
ld a, b
cp $81
jr nz, .asm_29611
ld hl, $562f ; todo
ld a, c
sub $40
ret
.asm_29611
cp $83
jr nz, .asm_2961c
ld hl, $573b ; todo
ld a, c
sub $40
ret
.asm_2961c
ld a, c
cp $9f
jr nc, .asm_29628
ld hl, $569c ; todo
ld a, c
sub $4f
ret
.asm_29628
ld hl, $56e8 ; todo
ld a, c
sub $9f
ret
INCBIN "baserom.gbc",$2962f,$2c000 - $2962f
SECTION "bankb", ROMX, BANK[$b]
INCBIN "baserom.gbc",$2c000,$30000 - $2c000 ; 0x2c000
SECTION "bankc", ROMX, BANK[$c]
InitRedField: ; 0x30000
ld a, [$d7c1]
and a
ret nz
xor a
ld hl, $d46f
ld [hld], a
ld [hld], a
ld [hld], a
ld [hld], a
ld [hld], a
ld [hl], a
ld [wNumPartyMons], a
ld [$d49b], a
ld [$d4c9], a
ld [wBallType], a
ld [$d4c8], a
ld hl, $d624
ld [hli], a
ld [hli], a
ld [hli], a
ld [$d7ac], a
ld [$d7be], a
ld [wCurrentMap], a ; PALLET_TOWN
ld a, $1
ld [$d49d], a
ld [$d482], a
ld a, $2
ld [wRightAlleyCount], a
ld a, $3
ld [$d49e], a
ld [$d610], a
ld [$d498], a
ld [$d499], a
ld a, $4
ld [$d4af], a
ld [$d7ad], a
ld a, $80
ld [$d52f], a
ld [$d532], a
ld a, $82
ld [$d530], a
ld [$ff8a], a
ld a, Bank(Func_dbba)
ld hl, Func_dbba
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_16f95)
ld hl, Func_16f95
call BankSwitch
ld a, $f
call SetSongBank
ld de, $0001
call Func_490
ret
StartBallRedField: ; 0x3007d
ld a, [$d496]
and a
jp nz, StartBallAfterBonusStageRedField
ld a, $0
ld [wBallXPos], a
ld a, $a7
ld [wBallXPos + 1], a
ld a, $0
ld [wBallYPos], a
ld a, $98
ld [wBallYPos + 1], a
xor a
ld [$d549], a
ld [$d580], a
ld a, [$d7ad]
bit 7, a
jr z, .asm_300ae
ld a, [$d4af]
res 0, a
ld [$d7ad], a
.asm_300ae
ld a, [$d4af]
and $1
ld [$d4af], a
ld a, [$d4c9]
and a
ret z
xor a
ld [$d4c9], a
xor a
ld [$d50b], a
ld [$d50c], a
ld [$d51d], a
ld [$d517], a
ld [$d51e], a
ld hl, $d50f
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [wLeftMapMoveCounter], a
ld [wRightMapMoveCounter], a
ld hl, $d5f9
ld [hli], a
ld [hli], a
ld [hli], a
ld [wBallType], a
ld [$d611], a
ld [$d612], a
ld [$d628], a
ld [$d629], a
ld [$d62a], a
ld [$d62b], a
ld [$d62c], a
ld [$d62d], a
ld [$d62e], a
ld [$d613], a
inc a
ld [$d482], a
ld [$d4ef], a
ld [$d4f1], a
ld a, $3
ld [$d610], a
ld [$ff8a], a
ld a, Bank(Func_16f95)
ld hl, Func_16f95
call BankSwitch
ld a, $f
call SetSongBank
ld de, $0001
call Func_490
ret
StartBallAfterBonusStageRedField: ; 0x30128
ld a, $0
ld [wBallXPos], a
ld a, $50
ld [wBallXPos + 1], a
ld a, $0
ld [wBallYPos], a
ld a, $16
ld [wBallYPos + 1], a
xor a
ld [wBallYVelocity], a
ld [wBallYVelocity + 1], a
ld [wBallXVelocity], a
ld [wBallXVelocity + 1], a
ld [$d496], a
ld [$d7ab], a
ld [$d7be], a
ld a, [wBallTypeBackup]
ld [wBallType], a
ld a, $f
call SetSongBank
ld de, $0001
call Func_490
ret
Func_30164: ; 0x30164
ld a, [$d49b]
inc a
cp $b
jr z, .asm_30175
ld [$d49b], a
ld a, $1
ld [$d4ca], a
ret
.asm_30175
ld bc, $34f4
ld [$ff8a], a
ld a, Bank(Func_8588)
ld hl, Func_8588
call BankSwitch
ld a, $2
ld [$d4ca], a
ret
Func_30188: ; 0x30188
ld a, [$d5ca]
and a
ret nz
ld a, [$d4ca]
and a
ret z
cp $1
jr nz, .asm_301a7
call Func_30e8
call Func_30db
ld hl, $d5cc
ld de, $2974
call Func_32aa
jr .asm_301c9
.asm_301a7
ld bc, $1000
ld de, $0000
push bc
push de
call Func_30e8
call Func_30db
ld hl, $d5d4
ld de, $29a6
call Func_32cc
pop de
pop bc
ld hl, $d5cc
ld de, $2986
call Func_32aa
.asm_301c9
xor a
ld [$d4ca], a
ret
INCBIN "baserom.gbc",$301ce,$301ec - $301ce
StartMapMoveMode: ; 0x301ec
ld a, [wSpecialMode]
and a
ret nz
ld a, $1
ld [wSpecialMode], a
ld a, $2
ld [$d550], a
xor a
ld [$d54d], a
ld bc, $0030 ; 30 seconds
ld [$ff8a], a
ld a, Bank(StartTimer)
ld hl, StartTimer
call BankSwitch
ld a, [wCurrentStage]
bit 0, a
jr z, .asm_3021b
ld a, [$d55a]
add $12
call Func_30256
.asm_3021b
ld a, [wCurrentStage]
rst $18 ; calls JumpToFuncInTable
CallTable_3021f: ; 0x3021f
; STAGE_RED_FIELD_TOP
dw Func_311b4
; STAGE_RED_FIELD_BOTTOM
dw Func_311b4
dw Func_31324
dw Func_31324
; STAGE_BLUE_FIELD_TOP
dw Func_31326
; STAGE_BLUE_FIELD_BOTTOM
dw Func_31326
Func_3022b: ; 0x3022b
xor a
ld [$d5ca], a
call Func_30e8
xor a
ld [wSpecialMode], a
ld [$d550], a
ld [$ff8a], a
ld a, Bank(Func_86d2)
ld hl, Func_86d2
call BankSwitch
ld a, [wCurrentStage]
rst $18 ; calls JumpToFuncInTable
CallTable_30247: ; 0x30247
; STAGE_RED_FIELD_TOP
dw Func_31234
; STAGE_RED_FIELD_BOTTOM
dw Func_31234
dw Func_31325
dw Func_31325
; STAGE_BLUE_FIELD_TOP
dw Func_313c3
; STAGE_BLUE_FIELD_TOP
dw Func_313c3
INCBIN "baserom.gbc",$30253,$30253 - $30253
Func_30253: ; 0x30253
ld a, [wCurrentMap]
; fall through
Func_30256: ; 0x30256
sla a
ld c, a
ld b, $0
push bc
ld hl, PointerTable_3027a
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld a, $c
call Func_10aa
pop bc
ld a, [hGameBoyColorFlag]
and a
ret z
ld hl, PointerTable_30ceb
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld a, $c
call Func_10aa
ret
PointerTable_3027a: ; 0x3027a
dw Data_302b0
dw Data_302c1
dw Data_302d2
dw Data_302e3
dw Data_302f4
dw Data_30305
dw Data_30316
dw Data_30327
dw Data_30338
dw Data_30349
dw Data_3035a
dw Data_3036b
dw Data_3037c
dw Data_3038d
dw Data_3039e
dw Data_303af
dw Data_303c0
dw Data_303d1
dw Data_303e2
dw Data_303f3
dw Data_30404
dw Data_30415
dw Data_30426
dw Data_30437
dw Data_30448
dw Data_30459
dw Data_3046a
Data_302b0: ; 0x302b0
db $08, $7B, $44, $85, $44, $8F, $44, $99, $44, $A3, $44, $AD, $44, $B7, $44, $C1, $44
Data_302c1: ; 0x302c1
db $08, $CB, $44, $D5, $44, $DF, $44, $E9, $44, $F3, $44, $FD, $44, $07, $45, $11, $45
Data_302d2: ; 0x302d2
db $08, $1B, $45, $25, $45, $2F, $45, $39, $45, $43, $45, $4D, $45, $57, $45, $61, $45
Data_302e3: ; 0x302e3
db $08, $6B, $45, $75, $45, $7F, $45, $89, $45, $93, $45, $9D, $45, $A7, $45, $B1, $45
Data_302f4: ; 0x302f4
db $08, $BB, $45, $C5, $45, $CF, $45, $D9, $45, $E3, $45, $ED, $45, $F7, $45, $01, $46
Data_30305: ; 0x30305
db $08, $0B, $46, $15, $46, $1F, $46, $29, $46, $33, $46, $3D, $46, $47, $46, $51, $46
Data_30316: ; 0x30316
db $08, $5B, $46, $65, $46, $6F, $46, $79, $46, $83, $46, $8D, $46, $97, $46, $A1, $46
Data_30327: ; 0x30327
db $08, $AB, $46, $B5, $46, $BF, $46, $C9, $46, $D3, $46, $DD, $46, $E7, $46, $F1, $46
Data_30338: ; 0x30338
db $08, $FB, $46, $05, $47, $0F, $47, $19, $47, $23, $47, $2D, $47, $37, $47, $41, $47
Data_30349: ; 0x30349
db $08, $4B, $47, $55, $47, $5F, $47, $69, $47, $73, $47, $7D, $47, $87, $47, $91, $47
Data_3035a: ; 0x3035a
db $08, $9B, $47, $A5, $47, $AF, $47, $B9, $47, $C3, $47, $CD, $47, $D7, $47, $E1, $47
Data_3036b: ; 0x3036b
db $08, $EB, $47, $F5, $47, $FF, $47, $09, $48, $13, $48, $1D, $48, $27, $48, $31, $48
Data_3037c: ; 0x3037c
db $08, $3B, $48, $45, $48, $4F, $48, $59, $48, $63, $48, $6D, $48, $77, $48, $81, $48
Data_3038d: ; 0x3038d
db $08, $8B, $48, $95, $48, $9F, $48, $A9, $48, $B3, $48, $BD, $48, $C7, $48, $D1, $48
Data_3039e: ; 0x3039e
db $08, $DB, $48, $E5, $48, $EF, $48, $F9, $48, $03, $49, $0D, $49, $17, $49, $21, $49
Data_303af: ; 0x303af
db $08, $2B, $49, $35, $49, $3F, $49, $49, $49, $53, $49, $5D, $49, $67, $49, $71, $49
Data_303c0: ; 0x303c0
db $08, $7B, $49, $85, $49, $8F, $49, $99, $49, $A3, $49, $AD, $49, $B7, $49, $C1, $49
Data_303d1: ; 0x303d1
db $08, $CB, $49, $D5, $49, $DF, $49, $E9, $49, $F3, $49, $FD, $49, $07, $4A, $11, $4A
Data_303e2: ; 0x303e2
db $08, $1B, $4A, $25, $4A, $2F, $4A, $39, $4A, $43, $4A, $4D, $4A, $57, $4A, $61, $4A
Data_303f3: ; 0x303f3
db $08, $6B, $4A, $75, $4A, $7F, $4A, $89, $4A, $93, $4A, $9D, $4A, $A7, $4A, $B1, $4A
Data_30404: ; 0x30404
db $08, $BB, $4A, $C5, $4A, $CF, $4A, $D9, $4A, $E3, $4A, $ED, $4A, $F7, $4A, $01, $4B
Data_30415: ; 0x30415
db $08, $0B, $4B, $15, $4B, $1F, $4B, $29, $4B, $33, $4B, $3D, $4B, $47, $4B, $51, $4B
Data_30426: ; 0x30426
db $08, $5B, $4B, $65, $4B, $6F, $4B, $79, $4B, $83, $4B, $8D, $4B, $97, $4B, $A1, $4B
Data_30437: ; 0x30437
db $08, $AB, $4B, $B5, $4B, $BF, $4B, $C9, $4B, $D3, $4B, $DD, $4B, $E7, $4B, $F1, $4B
Data_30448: ; 0x30448
db $08, $FB, $4B, $05, $4C, $0F, $4C, $19, $4C, $23, $4C, $2D, $4C, $37, $4C, $41, $4C
Data_30459: ; 0x30459
db $08, $4B, $4C, $55, $4C, $5F, $4C, $69, $4C, $73, $4C, $7D, $4C, $87, $4C, $91, $4C
Data_3046a: ; 0x3046a
db $08, $9B, $4C, $A5, $4C, $AF, $4C, $B9, $4C, $C3, $4C, $CD, $4C, $D7, $4C, $E1, $4C
INCBIN "baserom.gbc",$3047b,$30ceb - $3047b
PointerTable_30ceb: ; 0x30ceb
dw Data_30d21
dw Data_30d26
dw Data_30d2b
dw Data_30d30
dw Data_30d35
dw Data_30d3a
dw Data_30d3f
dw Data_30d44
dw Data_30d49
dw Data_30d4e
dw Data_30d53
dw Data_30d58
dw Data_30d5d
dw Data_30d62
dw Data_30d67
dw Data_30d6c
dw Data_30d71
dw Data_30d76
dw Data_30d7b
dw Data_30d80
dw Data_30d85
dw Data_30d8a
dw Data_30d8f
dw Data_30d94
dw Data_30d99
dw Data_30d9e
dw Data_30da3
Data_30d21: ; 0x30d21
db $02, $A8, $4D, $B1, $4D
Data_30d26: ; 0x30d26
db $02, $CD, $4D, $D6, $4D
Data_30d2b: ; 0x30d2b
db $02, $F2, $4D, $FB, $4D
Data_30d30: ; 0x30d30
db $02, $17, $4E, $20, $4E
Data_30d35: ; 0x30d35
db $02, $3C, $4E, $45, $4E
Data_30d3a: ; 0x30d3a
db $02, $61, $4E, $6A, $4E
Data_30d3f: ; 0x30d3f
db $02, $86, $4E, $8F, $4E
Data_30d44: ; 0x30d44
db $02, $AB, $4E, $B4, $4E
Data_30d49: ; 0x30d49
db $02, $D0, $4E, $D9, $4E
Data_30d4e: ; 0x30d4e
db $02, $F5, $4E, $FE, $4E
Data_30d53: ; 0x30d53
db $02, $1A, $4F, $23, $4F
Data_30d58: ; 0x30d58
db $02, $3F, $4F, $48, $4F
Data_30d5d: ; 0x30d5d
db $02, $64, $4F, $6D, $4F
Data_30d62: ; 0x30d62
db $02, $89, $4F, $92, $4F
Data_30d67: ; 0x30d67
db $02, $AE, $4F, $B7, $4F
Data_30d6c: ; 0x30d6c
db $02, $D3, $4F, $DC, $4F
Data_30d71: ; 0x30d71
db $02, $F8, $4F, $01, $50
Data_30d76: ; 0x30d76
db $02, $1D, $50, $26, $50
Data_30d7b: ; 0x30d7b
db $02, $42, $50, $4B, $50
Data_30d80: ; 0x30d80
db $02, $67, $50, $70, $50
Data_30d85: ; 0x30d85
db $02, $8C, $50, $95, $50
Data_30d8a: ; 0x30d8a
db $02, $B1, $50, $BA, $50
Data_30d8f: ; 0x30d8f
db $02, $D6, $50, $DF, $50
Data_30d94: ; 0x30d94
db $02, $FB, $50, $04, $51
Data_30d99: ; 0x30d99
db $02, $20, $51, $29, $51
Data_30d9e: ; 0x30d9e
db $02, $45, $51, $4E, $51
Data_30da3: ; 0x30da3
db $02, $6A, $51, $73, $51
INCBIN "baserom.gbc",$30da8,$3118f - $30da8
Func_3118f: ; 0x3118f
push bc
call Func_30e8
call Func_30db
ld a, [wCurrentMap]
sla a
ld c, a
ld b, $0
ld hl, $2ce3 ; todo
add hl, bc
ld a, [hli]
ld e, a
ld a, [hli]
ld d, a
ld hl, $d5d4
call Func_32aa
pop de
ld hl, $d5cc
call Func_32aa
ret
Func_311b4: ; 0x311b4
ld a, [$d55a]
and a
jr nz, .asm_311ce
ld a, $80
ld [$d52f], a
ld [$d531], a
xor a
ld [$d530], a
ld [$d532], a
ld [$d533], a
jr .asm_311e2
.asm_311ce
ld a, $80
ld [$d530], a
ld [$d532], a
xor a
ld [$d52f], a
ld [$d531], a
ld [$d533], a
jr .asm_311e2
.asm_311e2
ld a, $2
ld [$ff8a], a
ld a, Bank(Func_149d9)
ld hl, Func_149d9
call BankSwitch
ld a, $5
ld [$ff8a], a
ld a, Bank(Func_149d9)
ld hl, Func_149d9
call BankSwitch
ld a, $6a
ld [$c7f0], a
ld a, $6b
ld [$c810], a
ld a, $66
ld [$c7e3], a
ld a, $67
ld [$c803], a
ld [$ff8a], a
ld a, Bank(Func_107b0)
ld hl, Func_107b0
call BankSwitch
ld a, $4
ld [$d7ad], a
ld de, $0003
call Func_490
ld a, [wCurrentStage]
bit 0, a
ret z
ld [$ff8a], a
ld a, Bank(Func_14135)
ld hl, Func_14135
call BankSwitch
ret
Func_31234: ; 0x31234
ld [$ff8a], a
ld a, Bank(Func_107a5)
ld hl, Func_107a5
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_107c2)
ld hl, Func_107c2
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_107c8)
ld hl, Func_107c8
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_107e9)
ld hl, Func_107e9
call BankSwitch
ld a, [wCurrentStage]
bit 0, a
ret z
ld [$ff8a], a
ld a, Bank(Func_14135)
ld hl, Func_14135
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_16425)
ld hl, Func_16425
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_30253)
ld hl, Func_30253
call BankSwitch
ret
INCBIN "baserom.gbc",$31281,$31324 - $31281
Func_31324: ; 0x31324
ret
Func_31325: ; 0x31325
ret
INCBIN "baserom.gbc",$31326,$31326 - $31326
Func_31326: ; 0x31326
ld a, [$d55a]
and a
jr nz, .asm_3134c
ld a, $80
ld [$d52f], a
ld [$d531], a
xor a
ld [$d530], a
ld [$d532], a
ld [$d533], a
ld a, $3
ld [$ff8a], a
ld a, Bank(Func_1de4b)
ld hl, Func_1de4b
call BankSwitch
jr .asm_31382
.asm_3134c
ld a, $80
ld [$d530], a
ld [$d532], a
xor a
ld [$d52f], a
ld [$d531], a
ld [$d533], a
ld a, $1
ld [$ff8a], a
ld a, Bank(Func_1de4b)
ld hl, Func_1de4b
call BankSwitch
ld a, $6
ld [$ff8a], a
ld a, Bank(Func_1de4b)
ld hl, Func_1de4b
call BankSwitch
ld a, $7 ; TODO: this might be the bank of Func_1de6f
ld [$ff8a], a
ld a, Bank(Func_1de6f)
ld hl, Func_1de6f
call BankSwitch
.asm_31382
ld a, [wCurrentStage]
bit 0, a
jr z, .asm_3139d
ld a, $54
ld [$c7e3], a
ld a, $55
ld [$c803], a
ld a, $52
ld [$c7f0], a
ld a, $53
ld [$c810], a
.asm_3139d
ld a, $1
ld [$d644], a
ld [$ff8a], a
ld a, Bank(Func_1f2ed)
ld hl, Func_1f2ed
call BankSwitch
ld de, $0003
call Func_490
ld a, [wCurrentStage]
bit 0, a
ret z
ld [$ff8a], a
ld a, Bank(Func_1c2cb)
ld hl, Func_1c2cb
call BankSwitch
ret
Func_313c3: ; 0x313c3
ld [$ff8a], a
ld a, Bank(Func_107a5)
ld hl, Func_107a5
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_107c2)
ld hl, Func_107c2
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_1f2ff)
ld hl, Func_1f2ff
call BankSwitch
ld a, $0
ld [$d644], a
ld a, [wCurrentStage]
bit 0, a
ret z
ld [$ff8a], a
ld a, Bank(Func_1c2cb)
ld hl, Func_1c2cb
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_1e8f6)
ld hl, Func_1e8f6
call BankSwitch
ld [$ff8a], a
ld a, Bank(Func_30253)
ld hl, Func_30253
call BankSwitch
ret
INCBIN "baserom.gbc",$3140b,$34000 - $3140b
SECTION "bankd", ROMX, BANK[$d]
SlotOnPic: ; 0x34000
INCBIN "gfx/billboard/slot/slot_on.2bpp"
SlotOffPic: ; 0x34180
INCBIN "gfx/billboard/slot/slot_off.2bpp"
INCBIN "baserom.gbc",$34300,$38000 - $34300 ; 0x34000
SECTION "banke", ROMX, BANK[$e]
INCBIN "baserom.gbc",$38000,$3c000 - $38000 ; 0x38000
SECTION "bankf", ROMX, BANK[$f]
INCBIN "baserom.gbc",$3c000,$3cca2 - $3c000
SongHeaderPointers0F: ; 0x3cca2
dw Music_Nothing0F
dw Music_BlueField
dw Music_CatchEmRed
dw Music_HurryUpRed
dw Music_Pokedex
dw Music_GastlyInTheGraveyard
dw Music_HaunterInTheGraveyard
dw Music_GengarInTheGraveyard
; 0x3ccb2
INCLUDE "audio/music/nothing0f.asm"
INCLUDE "audio/music/bluefield.asm"
INCLUDE "audio/music/catchemred.asm"
INCLUDE "audio/music/pokedex.asm"
INCLUDE "audio/music/hurryupred.asm"
INCLUDE "audio/music/gastlyinthegraveyard.asm"
INCLUDE "audio/music/haunterinthegraveyard.asm"
INCLUDE "audio/music/gengarinthegraveyard.asm"
INCBIN "baserom.gbc",$3e3ce,$40000 - $3e3ce
SECTION "bank10", ROMX, BANK[$10]
INCBIN "baserom.gbc",$40000,$40ca2 - $40000
SongHeaderPointers10: ; 0x40ca2
dw Music_Nothing10
dw Music_RedField
dw Music_CatchEmBlue
dw Music_HurryUpBlue
dw Music_HiScore
dw Music_GameOver
; 0x40cae
INCLUDE "audio/music/nothing10.asm"
INCLUDE "audio/music/redfield.asm"
INCLUDE "audio/music/catchemblue.asm"
INCLUDE "audio/music/hiscore.asm"
INCLUDE "audio/music/gameover.asm"
INCLUDE "audio/music/hurryupblue.asm"
INCBIN "baserom.gbc",$4255b,$44000 - $4255b
SECTION "bank11", ROMX, BANK[$11]
INCBIN "baserom.gbc",$44000,$44ca2 - $44000
SongHeaderPointers11: ; 0x44ca2
dw Music_Nothing11
dw Music_WhackTheDiglett
dw Music_WhackTheDugtrio
dw Music_SeelStage
dw Music_Title
; 0x44cac
INCLUDE "audio/music/nothing11.asm"
INCLUDE "audio/music/whackthediglett.asm"
INCLUDE "audio/music/whackthedugtrio.asm"
INCLUDE "audio/music/seelstage.asm"
INCLUDE "audio/music/title.asm"
INCBIN "baserom.gbc",$462d3,$48000 - $462d3
SECTION "bank12", ROMX, BANK[$12]
INCBIN "baserom.gbc",$48000,$48ca2 - $48000
SongHeaderPointers12: ; 0x48ca2
dw Music_Nothing12
dw Music_MewtwoStage
dw Music_Options
dw Music_FieldSelect
dw Music_MeowthStage
; 0x48cac
INCLUDE "audio/music/nothing12.asm"
INCLUDE "audio/music/mewtwostage.asm"
INCLUDE "audio/music/options.asm"
INCLUDE "audio/music/fieldselect.asm"
INCLUDE "audio/music/meowthstage.asm"
INCBIN "baserom.gbc",$49c04,$4c000 - $49c04
SECTION "bank13", ROMX, BANK[$13]
INCBIN "baserom.gbc",$4c000,$4cca2 - $4c000
SongHeaderPointers13: ; 0x4cca2
dw Music_Nothing13
dw Music_EndCredits
dw Music_NameEntry
; 0x4cca8
INCLUDE "audio/music/nothing13.asm"
INCLUDE "audio/music/endcredits.asm"
INCLUDE "audio/music/nameentry.asm"
INCBIN "baserom.gbc",$4def4,$50000 - $4def4
SECTION "bank14", ROMX, BANK[$14]
Func_50000: ; 0x50000
sla a
ld c, a
ld b, $0
ld hl, $4076 ; todo
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
push hl
di
ld b, $4
.asm_50010
ld a, [$ff44]
and a
jr nz, .asm_50010
dec b
jr nz, .asm_50010
xor a
ld [$ff24], a
ld [$ff25], a
ld a, $80
ld [$ff26], a
xor a
ld [$ff1a], a
ld hl, $d84b
ld c, $30
ld b, $10
.asm_5002b
ld a, [$ff00+c]
ld [hli], a
ld a, $ff
ld [$ff00+c], a
inc c
dec b
jr nz, .asm_5002b
ld a, $80
ld [$ff1a], a
ld a, $ff
ld [$ff1b], a
ld a, $20
ld [$ff1c], a
ld a, $ff
ld [$ff1d], a
ld a, $87
ld [$ff1e], a
ld a, $77
ld [$ff24], a
ld a, $44
ld [$ff25], a
pop hl
call Func_51f56
xor a
ld [$ff24], a
ld [$ff25], a
ld [$ff26], a
ld hl, $d84b
ld c, $30
ld b, $10
.asm_50062
ld a, [hli]
ld [$ff00+c], a
inc c
dec b
jr nz, .asm_50062
ld a, $77
ld [$ff24], a
ld a, $ff
ld [$ff25], a
ld a, $80
ld [$ff26], a
ei
ret
INCBIN "baserom.gbc",$50076,$51f56 - $50076
Func_51f56: ; 0x51f56
ld a, [hli]
ld c, a
ld a, [hli]
ld b, a
.asm_51f5a
ld a, [hli]
ld d, a
ld a, $3
.asm_51f5e
dec a
jr nz, .asm_51f5e
call Func_51f94
call Func_51fa0
call Func_51f94
call Func_51fa0
call Func_51f94
call Func_51fa0
call Func_51f94
call Func_51fa0
call Func_51f94
call Func_51fa0
call Func_51f94
call Func_51fa0
call Func_51f94
call Func_51fa0
call Func_51f94
dec bc
ld a, c
or b
jr nz, .asm_51f5a
ret
Func_51f94: ; 0x51f94
ld a, d
and $80
srl a
srl a
ld [$ff1c], a
sla d
ret
Func_51fa0: ; 0x51fa0
ld a, $3
.asm_51fa2
dec a
jr nz, .asm_51fa2
ret
INCBIN "baserom.gbc",$51fa6,$54000 - $51fa6
SECTION "bank15", ROMX, BANK[$15]
INCBIN "baserom.gbc",$54000,$58000 - $54000 ; 0x54000
SECTION "bank16", ROMX, BANK[$16]
BallSaver30SecondsOnPic: ; 0x58000
INCBIN "gfx/billboard/slot/30secondballsaver_on.2bpp"
BallSaver30SecondsOffPic: ; 0x58180
INCBIN "gfx/billboard/slot/30secondballsaver_off.2bpp"
BallSaver60SecondsOnPic: ; 0x58300
INCBIN "gfx/billboard/slot/60secondballsaver_on.2bpp"
BallSaver60SecondsOffPic: ; 0x580480
INCBIN "gfx/billboard/slot/60secondballsaver_off.2bpp"
BallSaver90SecondsOnPic: ; 0x58600
INCBIN "gfx/billboard/slot/90secondballsaver_on.2bpp"
BallSaver90SecondsOffPic: ; 0x58780
INCBIN "gfx/billboard/slot/90secondballsaver_off.2bpp"
PikachuSaverOnPic: ; 0x58900
INCBIN "gfx/billboard/slot/pikachusaver_on.2bpp"
PikachuSaverOffPic: ; 0x58a80
INCBIN "gfx/billboard/slot/pikachusaver_off.2bpp"
ExtraBallOnPic: ; 0x58c00
INCBIN "gfx/billboard/slot/extraball_on.2bpp"
ExtraBallOffPic: ; 0x58d80
INCBIN "gfx/billboard/slot/extraball_off.2bpp"
SmallRewardOnPic: ; 0x58f00
INCBIN "gfx/billboard/slot/small_on.2bpp"
SmallRewardOffPic: ; 0x59080
INCBIN "gfx/billboard/slot/small_off.2bpp"
BigRewardOnPic: ; 0x59200
INCBIN "gfx/billboard/slot/big_on.2bpp"
BigRewardOffPic: ; 0x59380
INCBIN "gfx/billboard/slot/big_off.2bpp"
CatchEmModeOnPic: ; 0x59500
INCBIN "gfx/billboard/slot/catchem_on.2bpp"
CatchEmModeOffPic: ; 0x59680
INCBIN "gfx/billboard/slot/catchem_off.2bpp"
EvolutionModeOnPic: ; 0x59800
INCBIN "gfx/billboard/slot/evolution_on.2bpp"
EvolutionModeOffPic: ; 0x59980
INCBIN "gfx/billboard/slot/evolution_off.2bpp"
GreatBallOnPic: ; 0x59b00
INCBIN "gfx/billboard/slot/greatball_on.2bpp"
GreatBallOffPic: ; 0x59c80
INCBIN "gfx/billboard/slot/greatball_off.2bpp"
UltraBallOnPic: ; 0x59e00
INCBIN "gfx/billboard/slot/ultraball_on.2bpp"
UltraBallOffPic: ; 0x59f80
INCBIN "gfx/billboard/slot/ultraball_off.2bpp"
MasterBallOnPic: ; 0x5a100
INCBIN "gfx/billboard/slot/masterball_on.2bpp"
MasterBallOffPic: ; 0x5a280
INCBIN "gfx/billboard/slot/masterball_off.2bpp"
BonusMultiplierOnPic: ; 0x5a400
INCBIN "gfx/billboard/slot/bonusmultiplier_on.2bpp"
BonusMultiplierOffPic: ; 0x5a580
INCBIN "gfx/billboard/slot/bonusmultiplier_off.2bpp"
HurryUpOnPic: ; 0x5a700
INCBIN "gfx/billboard/hurryup_on.2bpp"
HurryUpOffPic: ; 0x5a880
INCBIN "gfx/billboard/hurryup_off.2bpp"
HurryUp2OnPic: ; 0x5aa00
INCBIN "gfx/billboard/hurryup2_on.2bpp"
HurryUp2OffPic: ; 0x5ab80
INCBIN "gfx/billboard/hurryup2_off.2bpp"
GoToNextOnPic: ; 0x5ad00
INCBIN "gfx/billboard/gotonext_on.2bpp"
GoToNextOffPic: ; 0x5ae80
INCBIN "gfx/billboard/gotonext_off.2bpp"
GoToGengarBonusOnPic: ; 0x5b000
INCBIN "gfx/billboard/bonus_stages/gotogengarbonus_on.2bpp"
GoToGengarBonusOffPic: ; 0x5b180
INCBIN "gfx/billboard/bonus_stages/gotogengarbonus_off.2bpp"
GoToMewtwoBonusOnPic: ; 0x5b300
INCBIN "gfx/billboard/bonus_stages/gotomewtwobonus_on.2bpp"
GoToMewtwoBonusOffPic: ; 0x5b480
INCBIN "gfx/billboard/bonus_stages/gotomewtwobonus_off.2bpp"
GoToMeowthBonusOnPic: ; 0x5b600
INCBIN "gfx/billboard/bonus_stages/gotomeowthbonus_on.2bpp"
GoToMeowthBonusOffPic: ; 0x5b780
INCBIN "gfx/billboard/bonus_stages/gotomeowthbonus_off.2bpp"
GoToDiglettBonusOnPic: ; 0x5b900
INCBIN "gfx/billboard/bonus_stages/gotodiglettbonus_on.2bpp"
GoToDiglettBonusOffPic: ; 0x5ba80
INCBIN "gfx/billboard/bonus_stages/gotodiglettbonus_off.2bpp"
GoToSeelBonusOnPic: ; 0x5bc00
INCBIN "gfx/billboard/bonus_stages/gotoseelbonus_on.2bpp"
GoToSeelBonusOffPic: ; 0x5bd80
INCBIN "gfx/billboard/bonus_stages/gotoseelbonus_off.2bpp"
ChanseyBillboardBGPalette1: ; 0x5bf00
RGB 31, 31, 31
RGB 31, 15, 20
RGB 27, 5, 7
RGB 0, 0, 0
ChanseyBillboardBGPalette2: ; 0x5bf08
RGB 31, 31, 31
RGB 31, 15, 20
RGB 27, 5, 7
RGB 0, 0, 0
TangelaBillboardBGPalette1: ; 0x5bf10
RGB 31, 31, 31
RGB 15, 21, 29
RGB 4, 8, 18
RGB 0, 0, 0
TangelaBillboardBGPalette2: ; 0x5bf18
RGB 31, 31, 31
RGB 15, 21, 29
RGB 4, 8, 18
RGB 0, 0, 0
KangaskhanBillboardBGPalette1: ; 0x5bf20
RGB 31, 31, 31
RGB 31, 18, 9
RGB 17, 10, 4
RGB 0, 0, 0
KangaskhanBillboardBGPalette2: ; 0x5bf28
RGB 31, 31, 31
RGB 31, 18, 9
RGB 17, 10, 4
RGB 0, 0, 0
HorseaBillboardBGPalette1: ; 0x5bf30
RGB 31, 31, 31
RGB 12, 19, 31
RGB 4, 7, 22
RGB 0, 0, 0
HorseaBillboardBGPalette2: ; 0x5bf38
RGB 31, 31, 31
RGB 25, 26, 3
RGB 4, 7, 22
RGB 0, 0, 0
SeadraBillboardBGPalette1: ; 0x5bf40
RGB 31, 31, 31
RGB 12, 19, 31
RGB 4, 7, 22
RGB 0, 0, 0
SeadraBillboardBGPalette2: ; 0x5bf48
RGB 31, 31, 31
RGB 12, 19, 31
RGB 4, 7, 22
RGB 0, 0, 0
GoldeenBillboardBGPalette1: ; 0x5bf50
RGB 31, 31, 31
RGB 30, 16, 4
RGB 29, 3, 0
RGB 0, 0, 0
GoldeenBillboardBGPalette2: ; 0x5bf58
RGB 31, 31, 31
RGB 30, 16, 4
RGB 29, 3, 0
RGB 0, 0, 0
SeakingBillboardBGPalette1: ; 0x5bf60
RGB 31, 31, 31
RGB 29, 17, 5
RGB 31, 5, 0
RGB 0, 0, 0
SeakingBillboardBGPalette2: ; 0x5bf68
RGB 31, 31, 31
RGB 29, 17, 5
RGB 31, 5, 0
RGB 0, 0, 0
StaryuBillboardBGPalette1: ; 0x5bf70
RGB 31, 31, 31
RGB 31, 20, 0
RGB 19, 3, 6
RGB 0, 0, 0
StaryuBillboardBGPalette2: ; 0x5bf78
RGB 31, 31, 31
RGB 31, 16, 8
RGB 25, 3, 2
RGB 0, 0, 0
StarmieBillboardBGPalette1: ; 0x5bf80
RGB 31, 31, 31
RGB 31, 17, 0
RGB 15, 8, 16
RGB 0, 0, 0
StarmieBillboardBGPalette2: ; 0x5bf88
RGB 31, 31, 31
RGB 31, 16, 8
RGB 25, 3, 2
RGB 0, 0, 0
MrMimeBillboardBGPalette1: ; 0x5bf90
RGB 31, 31, 31
RGB 31, 17, 19
RGB 28, 6, 4
RGB 0, 0, 0
MrMimeBillboardBGPalette2: ; 0x5bf98
RGB 31, 31, 31
RGB 31, 17, 19
RGB 28, 6, 4
RGB 0, 0, 0
ScytherBillboardBGPalette1: ; 0x5bfa0
RGB 31, 31, 31
RGB 17, 31, 4
RGB 4, 16, 4
RGB 0, 0, 0
ScytherBillboardBGPalette2: ; 0x5bfa8
RGB 31, 31, 31
RGB 17, 31, 4
RGB 4, 16, 4
RGB 0, 0, 0
JynxBillboardBGPalette1: ; 0x5bfb0
RGB 31, 31, 31
RGB 29, 13, 15
RGB 30, 6, 1
RGB 0, 0, 0
JynxBillboardBGPalette2: ; 0x5bfb8
RGB 31, 31, 31
RGB 31, 21, 0
RGB 30, 6, 1
RGB 0, 0, 0
ElectabuzzBillboardBGPalette1: ; 0x5bfc0
RGB 31, 31, 31
RGB 31, 27, 0
RGB 19, 11, 0
RGB 0, 0, 0
ElectabuzzBillboardBGPalette2: ; 0x5bfc8
RGB 31, 31, 31
RGB 31, 27, 0
RGB 19, 11, 0
RGB 0, 0, 0
MagmarBillboardBGPalette1: ; 0x5bfd0
RGB 31, 31, 31
RGB 31, 27, 0
RGB 28, 6, 0
RGB 0, 0, 0
MagmarBillboardBGPalette2: ; 0x5bfd8
RGB 31, 31, 31
RGB 31, 27, 0
RGB 28, 6, 0
RGB 0, 0, 0
PinsirBillboardBGPalette1: ; 0x5bfe0
RGB 31, 31, 31
RGB 17, 23, 10
RGB 21, 10, 3
RGB 0, 0, 0
PinsirBillboardBGPalette2: ; 0x5bfe8
RGB 31, 31, 31
RGB 31, 19, 8
RGB 21, 10, 3
RGB 0, 0, 0
TaurosBillboardBGPalette1: ; 0x5bff0
RGB 31, 31, 31
RGB 31, 18, 7
RGB 17, 9, 0
RGB 0, 0, 0
TaurosBillboardBGPalette2: ; 0x5bff8
RGB 31, 31, 31
RGB 14, 16, 20
RGB 17, 9, 0
RGB 0, 0, 0
SECTION "bank17", ROMX, BANK[$17]
SmallReward100PointsOnPic: ; 0x5c000
INCBIN "gfx/billboard/slot/100points_on.2bpp"
SmallReward100PointsOffPic: ; 0x5c180
INCBIN "gfx/billboard/slot/100points_off.2bpp"
SmallReward200PointsOnPic: ; 0x5c300
INCBIN "gfx/billboard/slot/200points_on.2bpp"
SmallReward200PointsOffPic: ; 0x54800
INCBIN "gfx/billboard/slot/200points_off.2bpp"
SmallReward300PointsOnPic: ; 0x5c600
INCBIN "gfx/billboard/slot/300points_on.2bpp"
SmallReward300PointsOffPic: ; 0x5c780
INCBIN "gfx/billboard/slot/300points_off.2bpp"
SmallReward400PointsOnPic: ; 0x5c900
INCBIN "gfx/billboard/slot/400points_on.2bpp"
SmallReward400PointsOffPic: ; 0x5ca80
INCBIN "gfx/billboard/slot/400points_off.2bpp"
SmallReward500PointsOnPic: ; 0x5cc00
INCBIN "gfx/billboard/slot/500points_on.2bpp"
SmallReward500PointsOffPic: ; 0x5cd80
INCBIN "gfx/billboard/slot/500points_off.2bpp"
SmallReward600PointsOnPic: ; 0x5cf00
INCBIN "gfx/billboard/slot/600points_on.2bpp"
SmallReward600PointsOffPic: ; 0x5d080
INCBIN "gfx/billboard/slot/600points_off.2bpp"
SmallReward700PointsOnPic: ; 0x5d200
INCBIN "gfx/billboard/slot/700points_on.2bpp"
SmallReward700PointsOffPic: ; 0x5d380
INCBIN "gfx/billboard/slot/700points_off.2bpp"
SmallReward800PointsOnPic: ; 0x5d500
INCBIN "gfx/billboard/slot/800points_on.2bpp"
SmallReward800PointsOffPic: ; 0x5d680
INCBIN "gfx/billboard/slot/800points_off.2bpp"
SmallReward900PointsOnPic: ; 0x5d800
INCBIN "gfx/billboard/slot/900points_on.2bpp"
SmallReward900PointsOffPic: ; 0x5d980
INCBIN "gfx/billboard/slot/900points_off.2bpp"
BigReward1000000PointsOnPic: ; 0x5db00
INCBIN "gfx/billboard/slot/1000000points_on.2bpp"
BigReward1000000PointsOffPic: ; 0x5dc80
INCBIN "gfx/billboard/slot/1000000points_off.2bpp"
BigReward2000000PointsOnPic: ; 0x5de00
INCBIN "gfx/billboard/slot/2000000points_on.2bpp"
BigReward2000000PointsOffPic: ; 0x5df80
INCBIN "gfx/billboard/slot/2000000points_off.2bpp"
BigReward3000000PointsOnPic: ; 0x5e100
INCBIN "gfx/billboard/slot/3000000points_on.2bpp"
BigReward3000000PointsOffPic: ; 0x5e280
INCBIN "gfx/billboard/slot/3000000points_off.2bpp"
BigReward4000000PointsOnPic: ; 0x5e400
INCBIN "gfx/billboard/slot/4000000points_on.2bpp"
BigReward4000000PointsOffPic: ; 0x5e580
INCBIN "gfx/billboard/slot/4000000points_off.2bpp"
BigReward5000000PointsOnPic: ; 0x5e700
INCBIN "gfx/billboard/slot/5000000points_on.2bpp"
BigReward5000000PointsOffPic: ; 0x5e880
INCBIN "gfx/billboard/slot/5000000points_off.2bpp"
BigReward6000000PointsOnPic: ; 0x5ea00
INCBIN "gfx/billboard/slot/6000000points_on.2bpp"
BigReward6000000PointsOffPic: ; 0x5eb80
INCBIN "gfx/billboard/slot/6000000points_off.2bpp"
BigReward7000000PointsOnPic: ; 0x5ed00
INCBIN "gfx/billboard/slot/7000000points_on.2bpp"
BigReward7000000PointsOffPic: ; 0x5ee80
INCBIN "gfx/billboard/slot/7000000points_off.2bpp"
BigReward8000000PointsOnPic: ; 0x5f000
INCBIN "gfx/billboard/slot/8000000points_on.2bpp"
BigReward8000000PointsOffPic: ; 0x5f180
INCBIN "gfx/billboard/slot/8000000points_off.2bpp"
BigReward9000000PointsOnPic: ; 0x5f300
INCBIN "gfx/billboard/slot/9000000points_on.2bpp"
BigReward9000000PointsOffPic: ; 0x5f480
INCBIN "gfx/billboard/slot/9000000points_off.2bpp"
INCBIN "baserom.gbc",$5f600,$60000 - $5f600 ; 0x5f600
SECTION "bank18", ROMX, BANK[$18]
VenomothPic: ; 0x60000
INCBIN "gfx/billboard/mon_pics/venomoth.2bpp"
VenomothSilhouettePic: ; 0x60180
INCBIN "gfx/billboard/mon_silhouettes/venomoth.2bpp"
DiglettPic: ; 0x60300
INCBIN "gfx/billboard/mon_pics/diglett.2bpp"
DiglettSilhouettePic: ; 0x60480
INCBIN "gfx/billboard/mon_silhouettes/diglett.2bpp"
DugtrioPic: ; 0x60600
INCBIN "gfx/billboard/mon_pics/dugtrio.2bpp"
DugtrioSilhouettePic: ; 0x60780
INCBIN "gfx/billboard/mon_silhouettes/dugtrio.2bpp"
MeowthPic: ; 0x60900
INCBIN "gfx/billboard/mon_pics/meowth.2bpp"
MeowthSilhouettePic: ; 0x60a80
INCBIN "gfx/billboard/mon_silhouettes/meowth.2bpp"
PersianPic: ; 0x60c00
INCBIN "gfx/billboard/mon_pics/persian.2bpp"
PersianSilhouettePic: ; 0x60d80
INCBIN "gfx/billboard/mon_silhouettes/persian.2bpp"
PsyduckPic: ; 0x60f00
INCBIN "gfx/billboard/mon_pics/psyduck.2bpp"
PsyduckSilhouettePic: ; 0x61080
INCBIN "gfx/billboard/mon_silhouettes/psyduck.2bpp"
GolduckPic: ; 0x61200
INCBIN "gfx/billboard/mon_pics/golduck.2bpp"
GolduckSilhouettePic: ; 0x61380
INCBIN "gfx/billboard/mon_silhouettes/golduck.2bpp"
MankeyPic: ; 0x61500
INCBIN "gfx/billboard/mon_pics/mankey.2bpp"
MankeySilhouettePic: ; 0x61680
INCBIN "gfx/billboard/mon_silhouettes/mankey.2bpp"
PrimeapePic: ; 0x61800
INCBIN "gfx/billboard/mon_pics/primeape.2bpp"
PrimeapeSilhouettePic: ; 0x61980
INCBIN "gfx/billboard/mon_silhouettes/primeape.2bpp"
GrowlithePic: ; 0x61b00
INCBIN "gfx/billboard/mon_pics/growlithe.2bpp"
GrowlitheSilhouettePic: ; 0x61c80
INCBIN "gfx/billboard/mon_silhouettes/growlithe.2bpp"
ArcaninePic: ; 0x61e00
INCBIN "gfx/billboard/mon_pics/arcanine.2bpp"
ArcanineSilhouettePic: ; 0x61f80
INCBIN "gfx/billboard/mon_silhouettes/arcanine.2bpp"
PoliwagPic: ; 0x62100
INCBIN "gfx/billboard/mon_pics/poliwag.2bpp"
PoliwagSilhouettePic: ; 0x62280
INCBIN "gfx/billboard/mon_silhouettes/poliwag.2bpp"
PoliwhirlPic: ; 0x62400
INCBIN "gfx/billboard/mon_pics/poliwhirl.2bpp"
PoliwhirlSilhouettePic: ; 0x62580
INCBIN "gfx/billboard/mon_silhouettes/poliwhirl.2bpp"
PoliwrathPic: ; 0x62700
INCBIN "gfx/billboard/mon_pics/poliwrath.2bpp"
PoliwrathSilhouettePic: ; 0x62880
INCBIN "gfx/billboard/mon_silhouettes/poliwrath.2bpp"
AbraPic: ; 0x62a00
INCBIN "gfx/billboard/mon_pics/abra.2bpp"
AbraSilhouettePic: ; 0x62b80
INCBIN "gfx/billboard/mon_silhouettes/abra.2bpp"
KadabraPic: ; 0x62d00
INCBIN "gfx/billboard/mon_pics/kadabra.2bpp"
KadabraSilhouettePic: ; 0x62e80
INCBIN "gfx/billboard/mon_silhouettes/kadabra.2bpp"
StageRedFieldTopStatusBarSymbolsGfx_GameBoy: ; 0x63000
INCBIN "gfx/stage/red_top/status_bar_symbols_gameboy.2bpp"
INCBIN "baserom.gbc",$63100,$632a0 - $63100
StageRedFieldTopBaseGameBoyGfx: ; 0x632a0
INCBIN "gfx/stage/red_top/red_top_base_gameboy.2bpp"
SECTION "bank19", ROMX, BANK[$19]
NidorinoPic: ; 0x64000
INCBIN "gfx/billboard/mon_pics/nidorino.2bpp"
NidorinoSilhouettePic: ; 0x64180
INCBIN "gfx/billboard/mon_silhouettes/nidorino.2bpp"
NidokingPic: ; 0x64300
INCBIN "gfx/billboard/mon_pics/nidoking.2bpp"
NidokingSilhouettePic: ; 0x64480
INCBIN "gfx/billboard/mon_silhouettes/nidoking.2bpp"
ClefairyPic: ; 0x64600
INCBIN "gfx/billboard/mon_pics/clefairy.2bpp"
ClefairySilhouettePic: ; 0x64780
INCBIN "gfx/billboard/mon_silhouettes/clefairy.2bpp"
ClefablePic: ; 0x64900
INCBIN "gfx/billboard/mon_pics/clefable.2bpp"
ClefableSilhouettePic: ; 0x64a80
INCBIN "gfx/billboard/mon_silhouettes/clefable.2bpp"
VulpixPic: ; 0x64c00
INCBIN "gfx/billboard/mon_pics/vulpix.2bpp"
VulpixSilhouettePic: ; 0x64d80
INCBIN "gfx/billboard/mon_silhouettes/vulpix.2bpp"
NinetalesPic: ; 0x64f00
INCBIN "gfx/billboard/mon_pics/ninetales.2bpp"
NinetalesSilhouettePic: ; 0x65080
INCBIN "gfx/billboard/mon_silhouettes/ninetales.2bpp"
JigglypuffPic: ; 0x65200
INCBIN "gfx/billboard/mon_pics/jigglypuff.2bpp"
JigglypuffSilhouettePic: ; 0x65380
INCBIN "gfx/billboard/mon_silhouettes/jigglypuff.2bpp"
WigglytuffPic: ; 0x65500
INCBIN "gfx/billboard/mon_pics/wigglytuff.2bpp"
WigglytuffSilhouettePic: ; 0x65680
INCBIN "gfx/billboard/mon_silhouettes/wigglytuff.2bpp"
ZubatPic: ; 0x65800
INCBIN "gfx/billboard/mon_pics/zubat.2bpp"
ZubatSilhouettePic: ; 0x65980
INCBIN "gfx/billboard/mon_silhouettes/zubat.2bpp"
GolbatPic: ; 0x65b00
INCBIN "gfx/billboard/mon_pics/golbat.2bpp"
GolbatSilhouettePic: ; 0x65c80
INCBIN "gfx/billboard/mon_silhouettes/golbat.2bpp"
OddishPic: ; 0x65e00
INCBIN "gfx/billboard/mon_pics/oddish.2bpp"
OddishSilhouettePic: ; 0x65f80
INCBIN "gfx/billboard/mon_silhouettes/oddish.2bpp"
GloomPic: ; 0x66100
INCBIN "gfx/billboard/mon_pics/gloom.2bpp"
GloomSilhouettePic: ; 0x66280
INCBIN "gfx/billboard/mon_silhouettes/gloom.2bpp"
VileplumePic: ; 0x66400
INCBIN "gfx/billboard/mon_pics/vileplume.2bpp"
VileplumeSilhouettePic: ; 0x66580
INCBIN "gfx/billboard/mon_silhouettes/vileplume.2bpp"
ParasPic: ; 0x66700
INCBIN "gfx/billboard/mon_pics/paras.2bpp"
ParasSilhouettePic: ; 0x66880
INCBIN "gfx/billboard/mon_silhouettes/paras.2bpp"
ParasectPic: ; 0x66a00
INCBIN "gfx/billboard/mon_pics/parasect.2bpp"
ParasectSilhouettePic: ; 0x66b80
INCBIN "gfx/billboard/mon_silhouettes/parasect.2bpp"
VenonatPic: ; 0x66d00
INCBIN "gfx/billboard/mon_pics/venonat.2bpp"
VenonatSilhouettePic: ; 0x66e80
INCBIN "gfx/billboard/mon_silhouettes/venonat.2bpp"
INCBIN "baserom.gbc",$67000,$68000 - $67000 ; 0x67000
SECTION "bank1a", ROMX, BANK[$1a]
ChanseyPic: ; 0x68000
INCBIN "gfx/billboard/mon_pics/chansey.2bpp"
ChanseySilhouettePic: ; 0x68180
INCBIN "gfx/billboard/mon_silhouettes/chansey.2bpp"
TangelaPic: ; 0x68300
INCBIN "gfx/billboard/mon_pics/tangela.2bpp"
TangelaSilhouettePic: ; 0x68480
INCBIN "gfx/billboard/mon_silhouettes/tangela.2bpp"
KangaskhanPic: ; 0x68600
INCBIN "gfx/billboard/mon_pics/kangaskhan.2bpp"
KangaskhanSilhouettePic: ; 0x68780
INCBIN "gfx/billboard/mon_silhouettes/kangaskhan.2bpp"
HorseaPic: ; 0x68900
INCBIN "gfx/billboard/mon_pics/horsea.2bpp"
HorseaSilhouettePic: ; 0x68a80
INCBIN "gfx/billboard/mon_silhouettes/horsea.2bpp"
SeadraPic: ; 0x68c00
INCBIN "gfx/billboard/mon_pics/seadra.2bpp"
SeadraSilhouettePic: ; 0x68d80
INCBIN "gfx/billboard/mon_silhouettes/seadra.2bpp"
GoldeenPic: ; 0x68f00
INCBIN "gfx/billboard/mon_pics/goldeen.2bpp"
GoldeenSilhouettePic: ; 0x69080
INCBIN "gfx/billboard/mon_silhouettes/goldeen.2bpp"
SeakingPic: ; 0x69200
INCBIN "gfx/billboard/mon_pics/seaking.2bpp"
SeakingSilhouettePic: ; 0x69380
INCBIN "gfx/billboard/mon_silhouettes/seaking.2bpp"
StaryuPic: ; 0x69500
INCBIN "gfx/billboard/mon_pics/staryu.2bpp"
StaryuSilhouettePic: ; 0x69680
INCBIN "gfx/billboard/mon_silhouettes/staryu.2bpp"
StarmiePic: ; 0x69800
INCBIN "gfx/billboard/mon_pics/starmie.2bpp"
StarmieSilhouettePic: ; 0x69980
INCBIN "gfx/billboard/mon_silhouettes/starmie.2bpp"
Mr_MimePic: ; 0x69b00
INCBIN "gfx/billboard/mon_pics/mr_mime.2bpp"
Mr_MimeSilhouettePic: ; 0x69c80
INCBIN "gfx/billboard/mon_silhouettes/mr_mime.2bpp"
ScytherPic: ; 0x69e00
INCBIN "gfx/billboard/mon_pics/scyther.2bpp"
ScytherSilhouettePic: ; 0x69f80
INCBIN "gfx/billboard/mon_silhouettes/scyther.2bpp"
JynxPic: ; 0x6a100
INCBIN "gfx/billboard/mon_pics/jynx.2bpp"
JynxSilhouettePic: ; 0x6a280
INCBIN "gfx/billboard/mon_silhouettes/jynx.2bpp"
ElectabuzzPic: ; 0x6a400
INCBIN "gfx/billboard/mon_pics/electabuzz.2bpp"
ElectabuzzSilhouettePic: ; 0x6a580
INCBIN "gfx/billboard/mon_silhouettes/electabuzz.2bpp"
MagmarPic: ; 0x6a700
INCBIN "gfx/billboard/mon_pics/magmar.2bpp"
MagmarSilhouettePic: ; 0x6a880
INCBIN "gfx/billboard/mon_silhouettes/magmar.2bpp"
PinsirPic: ; 0x6aa00
INCBIN "gfx/billboard/mon_pics/pinsir.2bpp"
PinsirSilhouettePic: ; 0x6ab80
INCBIN "gfx/billboard/mon_silhouettes/pinsir.2bpp"
TaurosPic: ; 0x6ad00
INCBIN "gfx/billboard/mon_pics/tauros.2bpp"
TaurosSilhouettePic: ; 0x6ae80
INCBIN "gfx/billboard/mon_silhouettes/tauros.2bpp"
INCBIN "baserom.gbc",$6b000,$6c000 - $6b000 ; 0x6b000
SECTION "bank1b", ROMX, BANK[$1b]
MagikarpPic: ; 0x6c000
INCBIN "gfx/billboard/mon_pics/magikarp.2bpp"
MagikarpSilhouettePic: ; 0x6c180
INCBIN "gfx/billboard/mon_silhouettes/magikarp.2bpp"
GyaradosPic: ; 0x6c300
INCBIN "gfx/billboard/mon_pics/gyarados.2bpp"
GyaradosSilhouettePic: ; 0x6c480
INCBIN "gfx/billboard/mon_silhouettes/gyarados.2bpp"
LaprasPic: ; 0x6c600
INCBIN "gfx/billboard/mon_pics/lapras.2bpp"
LaprasSilhouettePic: ; 0x6c780
INCBIN "gfx/billboard/mon_silhouettes/lapras.2bpp"
DittoPic: ; 0x6c900
INCBIN "gfx/billboard/mon_pics/ditto.2bpp"
DittoSilhouettePic: ; 0x6ca80
INCBIN "gfx/billboard/mon_silhouettes/ditto.2bpp"
EeveePic: ; 0x6cc00
INCBIN "gfx/billboard/mon_pics/eevee.2bpp"
EeveeSilhouettePic: ; 0x6cd80
INCBIN "gfx/billboard/mon_silhouettes/eevee.2bpp"
VaporeonPic: ; 0x6cf00
INCBIN "gfx/billboard/mon_pics/vaporeon.2bpp"
VaporeonSilhouettePic: ; 0x6d080
INCBIN "gfx/billboard/mon_silhouettes/vaporeon.2bpp"
JolteonPic: ; 0x6d200
INCBIN "gfx/billboard/mon_pics/jolteon.2bpp"
JolteonSilhouettePic: ; 0x6d380
INCBIN "gfx/billboard/mon_silhouettes/jolteon.2bpp"
FlareonPic: ; 0x6d500
INCBIN "gfx/billboard/mon_pics/flareon.2bpp"
FlareonSilhouettePic: ; 0x6d680
INCBIN "gfx/billboard/mon_silhouettes/flareon.2bpp"
PorygonPic: ; 0x6d800
INCBIN "gfx/billboard/mon_pics/porygon.2bpp"
PorygonSilhouettePic: ; 0x6d980
INCBIN "gfx/billboard/mon_silhouettes/porygon.2bpp"
OmanytePic: ; 0x6db00
INCBIN "gfx/billboard/mon_pics/omanyte.2bpp"
OmanyteSilhouettePic: ; 0x6dc80
INCBIN "gfx/billboard/mon_silhouettes/omanyte.2bpp"
OmastarPic: ; 0x6de00
INCBIN "gfx/billboard/mon_pics/omastar.2bpp"
OmastarSilhouettePic: ; 0x6df80
INCBIN "gfx/billboard/mon_silhouettes/omastar.2bpp"
KabutoPic: ; 0x6e100
INCBIN "gfx/billboard/mon_pics/kabuto.2bpp"
KabutoSilhouettePic: ; 0x6e280
INCBIN "gfx/billboard/mon_silhouettes/kabuto.2bpp"
KabutopsPic: ; 0x6e400
INCBIN "gfx/billboard/mon_pics/kabutops.2bpp"
KabutopsSilhouettePic: ; 0x6e580
INCBIN "gfx/billboard/mon_silhouettes/kabutops.2bpp"
AerodactylPic: ; 0x6e700
INCBIN "gfx/billboard/mon_pics/aerodactyl.2bpp"
AerodactylSilhouettePic: ; 0x6e880
INCBIN "gfx/billboard/mon_silhouettes/aerodactyl.2bpp"
SnorlaxPic: ; 0x6ea00
INCBIN "gfx/billboard/mon_pics/snorlax.2bpp"
SnorlaxSilhouettePic: ; 0x6eb80
INCBIN "gfx/billboard/mon_silhouettes/snorlax.2bpp"
ArticunoPic: ; 0x6ed00
INCBIN "gfx/billboard/mon_pics/articuno.2bpp"
ArticunoSilhouettePic: ; 0x6ee80
INCBIN "gfx/billboard/mon_silhouettes/articuno.2bpp"
INCBIN "baserom.gbc",$6f000,$70000 - $6f000 ; 0x6f000
SECTION "bank1c", ROMX, BANK[$1c]
ZapdosPic: ; 0x70000
INCBIN "gfx/billboard/mon_pics/zapdos.2bpp"
ZapdosSilhouettePic: ; 0x70180
INCBIN "gfx/billboard/mon_silhouettes/zapdos.2bpp"
MoltresPic: ; 0x70300
INCBIN "gfx/billboard/mon_pics/moltres.2bpp"
MoltresSilhouettePic: ; 0x70480
INCBIN "gfx/billboard/mon_silhouettes/moltres.2bpp"
DratiniPic: ; 0x70600
INCBIN "gfx/billboard/mon_pics/dratini.2bpp"
DratiniSilhouettePic: ; 0x70780
INCBIN "gfx/billboard/mon_silhouettes/dratini.2bpp"
DragonairPic: ; 0x70900
INCBIN "gfx/billboard/mon_pics/dragonair.2bpp"
DragonairSilhouettePic: ; 0x70a80
INCBIN "gfx/billboard/mon_silhouettes/dragonair.2bpp"
DragonitePic: ; 0x70c00
INCBIN "gfx/billboard/mon_pics/dragonite.2bpp"
DragoniteSilhouettePic: ; 0x70d80
INCBIN "gfx/billboard/mon_silhouettes/dragonite.2bpp"
MewtwoPic: ; 0x70f00
INCBIN "gfx/billboard/mon_pics/mewtwo.2bpp"
MewtwoSilhouettePic: ; 0x71080
INCBIN "gfx/billboard/mon_silhouettes/mewtwo.2bpp"
MewPic: ; 0x71200
INCBIN "gfx/billboard/mon_pics/mew.2bpp"
MewSilhouettePic: ; 0x71380
INCBIN "gfx/billboard/mon_silhouettes/mew.2bpp"
INCBIN "baserom.gbc",$71500,$74000 - $71500 ; 0x71500
SECTION "bank1d", ROMX, BANK[$1d]
PidgeottoPic: ; 0x74000
INCBIN "gfx/billboard/mon_pics/pidgeotto.2bpp"
PidgeottoSilhouettePic: ; 0x74180
INCBIN "gfx/billboard/mon_silhouettes/pidgeotto.2bpp"
PidgeotPic: ; 0x74300
INCBIN "gfx/billboard/mon_pics/pidgeot.2bpp"
PidgeotSilhouettePic: ; 0x74480
INCBIN "gfx/billboard/mon_silhouettes/pidgeot.2bpp"
RattataPic: ; 0x74600
INCBIN "gfx/billboard/mon_pics/rattata.2bpp"
RattataSilhouettePic: ; 0x74780
INCBIN "gfx/billboard/mon_silhouettes/rattata.2bpp"
RaticatePic: ; 0x74900
INCBIN "gfx/billboard/mon_pics/raticate.2bpp"
RaticateSilhouettePic: ; 0x74a80
INCBIN "gfx/billboard/mon_silhouettes/raticate.2bpp"
SpearowPic: ; 0x74c00
INCBIN "gfx/billboard/mon_pics/spearow.2bpp"
SpearowSilhouettePic: ; 0x74d80
INCBIN "gfx/billboard/mon_silhouettes/spearow.2bpp"
FearowPic: ; 0x74f00
INCBIN "gfx/billboard/mon_pics/fearow.2bpp"
FearowSilhouettePic: ; 0x75080
INCBIN "gfx/billboard/mon_silhouettes/fearow.2bpp"
EkansPic: ; 0x75200
INCBIN "gfx/billboard/mon_pics/ekans.2bpp"
EkansSilhouettePic: ; 0x75380
INCBIN "gfx/billboard/mon_silhouettes/ekans.2bpp"
ArbokPic: ; 0x75500
INCBIN "gfx/billboard/mon_pics/arbok.2bpp"
ArbokSilhouettePic: ; 0x75680
INCBIN "gfx/billboard/mon_silhouettes/arbok.2bpp"
PikachuPic: ; 0x75800
INCBIN "gfx/billboard/mon_pics/pikachu.2bpp"
PikachuSilhouettePic: ; 0x75980
INCBIN "gfx/billboard/mon_silhouettes/pikachu.2bpp"
RaichuPic: ; 0x75b00
INCBIN "gfx/billboard/mon_pics/raichu.2bpp"
RaichuSilhouettePic: ; 0x75c80
INCBIN "gfx/billboard/mon_silhouettes/raichu.2bpp"
SandshrewPic: ; 0x75e00
INCBIN "gfx/billboard/mon_pics/sandshrew.2bpp"
SandshrewSilhouettePic: ; 0x75f80
INCBIN "gfx/billboard/mon_silhouettes/sandshrew.2bpp"
SandslashPic: ; 0x76100
INCBIN "gfx/billboard/mon_pics/sandslash.2bpp"
SandslashSilhouettePic: ; 0x76280
INCBIN "gfx/billboard/mon_silhouettes/sandslash.2bpp"
Nidoran_FPic: ; 0x76400
INCBIN "gfx/billboard/mon_pics/nidoran_f.2bpp"
Nidoran_FSilhouettePic: ; 0x76580
INCBIN "gfx/billboard/mon_silhouettes/nidoran_f.2bpp"
NidorinaPic: ; 0x76700
INCBIN "gfx/billboard/mon_pics/nidorina.2bpp"
NidorinaSilhouettePic: ; 0x76880
INCBIN "gfx/billboard/mon_silhouettes/nidorina.2bpp"
NidoqueenPic: ; 0x76a00
INCBIN "gfx/billboard/mon_pics/nidoqueen.2bpp"
NidoqueenSilhouettePic: ; 0x76b80
INCBIN "gfx/billboard/mon_silhouettes/nidoqueen.2bpp"
Nidoran_MPic: ; 0x76d00
INCBIN "gfx/billboard/mon_pics/nidoran_m.2bpp"
Nidoran_MSilhouettePic: ; 0x76e80
INCBIN "gfx/billboard/mon_silhouettes/nidoran_m.2bpp"
StageRedFieldBottomBaseGameBoyGfx: ; 0x77000
INCBIN "gfx/stage/red_bottom/red_bottom_base_gameboy.2bpp"
SECTION "bank1e", ROMX, BANK[$1e]
BulbasaurPic: ; 0x78000
INCBIN "gfx/billboard/mon_pics/bulbasaur.2bpp"
BulbasaurSilhouettePic: ; 0x78180
INCBIN "gfx/billboard/mon_silhouettes/bulbasaur.2bpp"
IvysaurPic: ; 0x78300
INCBIN "gfx/billboard/mon_pics/ivysaur.2bpp"
IvysaurSilhouettePic: ; 0x78480
INCBIN "gfx/billboard/mon_silhouettes/ivysaur.2bpp"
VenusaurPic: ; 0x78600
INCBIN "gfx/billboard/mon_pics/venusaur.2bpp"
VenusaurSilhouettePic: ; 0x78780
INCBIN "gfx/billboard/mon_silhouettes/venusaur.2bpp"
CharmanderPic: ; 0x78900
INCBIN "gfx/billboard/mon_pics/charmander.2bpp"
CharmanderSilhouettePic: ; 0x78a80
INCBIN "gfx/billboard/mon_silhouettes/charmander.2bpp"
CharmeleonPic: ; 0x78c00
INCBIN "gfx/billboard/mon_pics/charmeleon.2bpp"
CharmeleonSilhouettePic: ; 0x78d80
INCBIN "gfx/billboard/mon_silhouettes/charmeleon.2bpp"
CharizardPic: ; 0x78f00
INCBIN "gfx/billboard/mon_pics/charizard.2bpp"
CharizardSilhouettePic: ; 0x79080
INCBIN "gfx/billboard/mon_silhouettes/charizard.2bpp"
SquirtlePic: ; 0x79200
INCBIN "gfx/billboard/mon_pics/squirtle.2bpp"
SquirtleSilhouettePic: ; 0x79380
INCBIN "gfx/billboard/mon_silhouettes/squirtle.2bpp"
WartortlePic: ; 0x79500
INCBIN "gfx/billboard/mon_pics/wartortle.2bpp"
WartortleSilhouettePic: ; 0x79680
INCBIN "gfx/billboard/mon_silhouettes/wartortle.2bpp"
BlastoisePic: ; 0x79800
INCBIN "gfx/billboard/mon_pics/blastoise.2bpp"
BlastoiseSilhouettePic: ; 0x79980
INCBIN "gfx/billboard/mon_silhouettes/blastoise.2bpp"
CaterpiePic: ; 0x79b00
INCBIN "gfx/billboard/mon_pics/caterpie.2bpp"
CaterpieSilhouettePic: ; 0x79c80
INCBIN "gfx/billboard/mon_silhouettes/caterpie.2bpp"
MetapodPic: ; 0x79e00
INCBIN "gfx/billboard/mon_pics/metapod.2bpp"
MetapodSilhouettePic: ; 0x79f80
INCBIN "gfx/billboard/mon_silhouettes/metapod.2bpp"
ButterfreePic: ; 0x7a100
INCBIN "gfx/billboard/mon_pics/butterfree.2bpp"
ButterfreeSilhouettePic: ; 0x7a280
INCBIN "gfx/billboard/mon_silhouettes/butterfree.2bpp"
WeedlePic: ; 0x7a400
INCBIN "gfx/billboard/mon_pics/weedle.2bpp"
WeedleSilhouettePic: ; 0x7a580
INCBIN "gfx/billboard/mon_silhouettes/weedle.2bpp"
KakunaPic: ; 0x7a700
INCBIN "gfx/billboard/mon_pics/kakuna.2bpp"
KakunaSilhouettePic: ; 0x7a880
INCBIN "gfx/billboard/mon_silhouettes/kakuna.2bpp"
BeedrillPic: ; 0x7aa00
INCBIN "gfx/billboard/mon_pics/beedrill.2bpp"
BeedrillSilhouettePic: ; 0x7ab80
INCBIN "gfx/billboard/mon_silhouettes/beedrill.2bpp"
PidgeyPic: ; 0x7ad00
INCBIN "gfx/billboard/mon_pics/pidgey.2bpp"
PidgeySilhouettePic: ; 0x7ae80
INCBIN "gfx/billboard/mon_silhouettes/pidgey.2bpp"
BonusMultiplierX1OnPic: ; 0x7b000
INCBIN "gfx/billboard/slot/bonusmultiplierX1_on.2bpp"
BonusMultiplierX1OffPic: ; 0x7b180
INCBIN "gfx/billboard/slot/bonusmultiplierX1_off.2bpp"
BonusMultiplierX2OnPic: ; 0x7b300
INCBIN "gfx/billboard/slot/bonusmultiplierX2_on.2bpp"
BonusMultiplierX2OffPic: ; 0x7b480
INCBIN "gfx/billboard/slot/bonusmultiplierX2_off.2bpp"
BonusMultiplierX3OnPic: ; 0x7b600
INCBIN "gfx/billboard/slot/bonusmultiplierX3_on.2bpp"
BonusMultiplierX3OffPic: ; 0x7b780
INCBIN "gfx/billboard/slot/bonusmultiplierX3_off.2bpp"
BonusMultiplierX4OnPic: ; 0x7b900
INCBIN "gfx/billboard/slot/bonusmultiplierX4_on.2bpp"
BonusMultiplierX4OffPic: ; 0x7ba80
INCBIN "gfx/billboard/slot/bonusmultiplierX4_off.2bpp"
BonusMultiplierX5OnPic: ; 0x7bc00
INCBIN "gfx/billboard/slot/bonusmultiplierX5_on.2bpp"
BonusMultiplierX5OffPic: ; 0x7bd80
INCBIN "gfx/billboard/slot/bonusmultiplierX5_off.2bpp"
MagikarpBillboardBGPalette1: ; 0x7bf00
RGB 31, 31, 31
RGB 29, 28, 4
RGB 31, 7, 0
RGB 0, 0, 0
MagikarpBillboardBGPalette2: ; 0x7bf08
RGB 31, 31, 31
RGB 31, 14, 12
RGB 31, 7, 0
RGB 0, 0, 0
GyaradosBillboardBGPalette1: ; 0x7bf10
RGB 31, 31, 31
RGB 12, 18, 31
RGB 3, 9, 14
RGB 0, 0, 0
GyaradosBillboardBGPalette2: ; 0x7bf18
RGB 31, 31, 31
RGB 31, 14, 16
RGB 15, 3, 0
RGB 0, 0, 0
LaprasBillboardBGPalette1: ; 0x7bf20
RGB 31, 31, 31
RGB 12, 19, 31
RGB 5, 8, 19
RGB 0, 0, 0
LaprasBillboardBGPalette2: ; 0x7bf28
RGB 31, 31, 31
RGB 12, 19, 31
RGB 5, 8, 19
RGB 0, 0, 0
DittoBillboardBGPalette1: ; 0x7bf30
RGB 31, 31, 31
RGB 26, 9, 21
RGB 15, 2, 10
RGB 0, 0, 0
DittoBillboardBGPalette2: ; 0x7bf38
RGB 31, 31, 31
RGB 26, 9, 21
RGB 15, 2, 10
RGB 0, 0, 0
EeveeBillboardBGPalette1: ; 0x7bf40
RGB 31, 31, 31
RGB 25, 16, 4
RGB 12, 7, 0
RGB 0, 0, 0
EeveeBillboardBGPalette2: ; 0x7bf48
RGB 31, 31, 31
RGB 25, 16, 4
RGB 12, 7, 0
RGB 0, 0, 0
VaporeonBillboardBGPalette1: ; 0x7bf50
RGB 31, 31, 31
RGB 10, 18, 29
RGB 4, 6, 14
RGB 0, 0, 0
VaporeonBillboardBGPalette2: ; 0x7bf58
RGB 31, 31, 31
RGB 31, 28, 7
RGB 4, 6, 14
RGB 0, 0, 0
JolteonBillboardBGPalette1: ; 0x7bf60
RGB 31, 31, 31
RGB 31, 26, 0
RGB 15, 10, 0
RGB 0, 0, 0
JolteonBillboardBGPalette2: ; 0x7bf68
RGB 31, 31, 31
RGB 31, 26, 0
RGB 15, 10, 0
RGB 0, 0, 0
FlareonBillboardBGPalette1: ; 0x7bf70
RGB 31, 31, 31
RGB 31, 27, 0
RGB 31, 6, 0
RGB 0, 0, 0
FlareonBillboardBGPalette2: ; 0x7bf78
RGB 31, 31, 31
RGB 31, 27, 0
RGB 31, 6, 0
RGB 0, 0, 0
PorygonBillboardBGPalette1: ; 0x7bf80
RGB 31, 31, 31
RGB 29, 12, 13
RGB 2, 10, 17
RGB 0, 0, 0
PorygonBillboardBGPalette2: ; 0x7bf88
RGB 31, 31, 31
RGB 5, 23, 31
RGB 2, 10, 17
RGB 0, 0, 0
OmanyteBillboardBGPalette1: ; 0x7bf90
RGB 31, 31, 31
RGB 22, 21, 14
RGB 0, 15, 25
RGB 0, 0, 0
OmanyteBillboardBGPalette2: ; 0x7bf98
RGB 31, 31, 31
RGB 11, 26, 29
RGB 0, 15, 25
RGB 0, 0, 0
OmastarBillboardBGPalette1: ; 0x7bfa0
RGB 31, 31, 31
RGB 22, 21, 14
RGB 0, 15, 25
RGB 0, 0, 0
OmastarBillboardBGPalette2: ; 0x7bfa8
RGB 31, 31, 31
RGB 11, 26, 29
RGB 0, 15, 25
RGB 0, 0, 0
KabutoBillboardBGPalette1: ; 0x7bfb0
RGB 31, 31, 31
RGB 29, 18, 0
RGB 14, 6, 0
RGB 0, 0, 0
KabutoBillboardBGPalette2: ; 0x7bfb8
RGB 31, 6, 0
RGB 29, 18, 0
RGB 14, 6, 0
RGB 0, 0, 0
KabutopsBillboardBGPalette1: ; 0x7bfc0
RGB 31, 31, 31
RGB 31, 22, 13
RGB 19, 12, 0
RGB 0, 0, 0
KabutopsBillboardBGPalette2: ; 0x7bfc8
RGB 31, 31, 31
RGB 16, 25, 12
RGB 19, 12, 0
RGB 0, 0, 0
AerodactylBillboardBGPalette1: ; 0x7bfd0
RGB 31, 31, 31
RGB 20, 18, 31
RGB 8, 6, 15
RGB 0, 0, 0
AerodactylBillboardBGPalette2: ; 0x7bfd8
RGB 31, 31, 31
RGB 20, 18, 31
RGB 17, 3, 25
RGB 0, 0, 0
SnorlaxBillboardBGPalette1: ; 0x7bfe0
RGB 31, 31, 31
RGB 31, 27, 9
RGB 5, 6, 14
RGB 0, 0, 0
SnorlaxBillboardBGPalette2: ; 0x7bfe8
RGB 31, 31, 31
RGB 31, 27, 9
RGB 28, 6, 2
RGB 0, 0, 0
ArticunoBillboardBGPalette1: ; 0x7bff0
RGB 31, 31, 31
RGB 13, 27, 29
RGB 5, 13, 24
RGB 0, 0, 0
ArticunoBillboardBGPalette2: ; 0x7bff8
RGB 31, 31, 31
RGB 13, 27, 29
RGB 5, 13, 24
RGB 0, 0, 0
SECTION "bank1f", ROMX, BANK[$1f]
SlowpokeAnimatedPic: ; 0x7c000
INCBIN "gfx/billboard/mon_animated/slowpoke.w32.interleave.2bpp"
MagnemiteAnimatedPic: ; 0x7c300
INCBIN "gfx/billboard/mon_animated/magnemite.w32.interleave.2bpp"
Farfetch_DAnimatedPic: ; 0x7c600
INCBIN "gfx/billboard/mon_animated/farfetch_d.w32.interleave.2bpp"
DoduoAnimatedPic: ; 0x7c900
INCBIN "gfx/billboard/mon_animated/doduo.w32.interleave.2bpp"
SeelAnimatedPic: ; 0x7cc00
INCBIN "gfx/billboard/mon_animated/seel.w32.interleave.2bpp"
GrimerAnimatedPic: ; 0x7cf00
INCBIN "gfx/billboard/mon_animated/grimer.w32.interleave.2bpp"
ShellderAnimatedPic: ; 0x7d200
INCBIN "gfx/billboard/mon_animated/shellder.w32.interleave.2bpp"
GastlyAnimatedPic: ; 0x7d500
INCBIN "gfx/billboard/mon_animated/gastly.w32.interleave.2bpp"
OnixAnimatedPic: ; 0x7d800
INCBIN "gfx/billboard/mon_animated/onix.w32.interleave.2bpp"
DrowzeeAnimatedPic: ; 0x7db00
INCBIN "gfx/billboard/mon_animated/drowzee.w32.interleave.2bpp"
KrabbyAnimatedPic: ; 0x7de00
INCBIN "gfx/billboard/mon_animated/krabby.w32.interleave.2bpp"
VoltorbAnimatedPic: ; 0x7e100
INCBIN "gfx/billboard/mon_animated/voltorb.w32.interleave.2bpp"
ExeggcuteAnimatedPic: ; 0x7e400
INCBIN "gfx/billboard/mon_animated/exeggcute.w32.interleave.2bpp"
CuboneAnimatedPic: ; 0x7e700
INCBIN "gfx/billboard/mon_animated/cubone.w32.interleave.2bpp"
HitmonleeAnimatedPic: ; 0x7ea00
INCBIN "gfx/billboard/mon_animated/hitmonlee.w32.interleave.2bpp"
HitmonchanAnimatedPic: ; 0x7ed00
INCBIN "gfx/billboard/mon_animated/hitmonchan.w32.interleave.2bpp"
INCBIN "baserom.gbc",$7f000,$7fd00 - $7f000
EraseAllDataGfx: ; 0x7fd00: ; 0x7fd00
INCBIN "gfx/erase_all_data.2bpp"
SECTION "bank20", ROMX, BANK[$20]
LickitungAnimatedPic: ; 0x80000
INCBIN "gfx/billboard/mon_animated/lickitung.w32.interleave.2bpp"
KoffingAnimatedPic: ; 0x80300
INCBIN "gfx/billboard/mon_animated/koffing.w32.interleave.2bpp"
RhyhornAnimatedPic: ; 0x80600
INCBIN "gfx/billboard/mon_animated/rhyhorn.w32.interleave.2bpp"
ChanseyAnimatedPic: ; 0x80900
INCBIN "gfx/billboard/mon_animated/chansey.w32.interleave.2bpp"
TangelaAnimatedPic: ; 0x80c00
INCBIN "gfx/billboard/mon_animated/tangela.w32.interleave.2bpp"
KangaskhanAnimatedPic: ; 0x80f00
INCBIN "gfx/billboard/mon_animated/kangaskhan.w32.interleave.2bpp"
HorseaAnimatedPic: ; 0x81200
INCBIN "gfx/billboard/mon_animated/horsea.w32.interleave.2bpp"
GoldeenAnimatedPic: ; 0x81500
INCBIN "gfx/billboard/mon_animated/goldeen.w32.interleave.2bpp"
StaryuAnimatedPic: ; 0x81800
INCBIN "gfx/billboard/mon_animated/staryu.w32.interleave.2bpp"
Mr_MimeAnimatedPic: ; 0x81b00
INCBIN "gfx/billboard/mon_animated/mr_mime.w32.interleave.2bpp"
ScytherAnimatedPic: ; 0x81e00
INCBIN "gfx/billboard/mon_animated/scyther.w32.interleave.2bpp"
JynxAnimatedPic: ; 0x82100
INCBIN "gfx/billboard/mon_animated/jynx.w32.interleave.2bpp"
ElectabuzzAnimatedPic: ; 0x82400
INCBIN "gfx/billboard/mon_animated/electabuzz.w32.interleave.2bpp"
MagmarAnimatedPic: ; 0x82700
INCBIN "gfx/billboard/mon_animated/magmar.w32.interleave.2bpp"
PinsirAnimatedPic: ; 0x82a00
INCBIN "gfx/billboard/mon_animated/pinsir.w32.interleave.2bpp"
TaurosAnimatedPic: ; 0x82d00
INCBIN "gfx/billboard/mon_animated/tauros.w32.interleave.2bpp"
INCBIN "baserom.gbc",$83000,$84000 - $83000 ; 0x83000
SECTION "bank21", ROMX, BANK[$21]
MagikarpAnimatedPic: ; 0x84000
INCBIN "gfx/billboard/mon_animated/magikarp.w32.interleave.2bpp"
LaprasAnimatedPic: ; 0x84300
INCBIN "gfx/billboard/mon_animated/lapras.w32.interleave.2bpp"
DittoAnimatedPic: ; 0x84600
INCBIN "gfx/billboard/mon_animated/ditto.w32.interleave.2bpp"
EeveeAnimatedPic: ; 0x84900
INCBIN "gfx/billboard/mon_animated/eevee.w32.interleave.2bpp"
PorygonAnimatedPic: ; 0x84c00
INCBIN "gfx/billboard/mon_animated/porygon.w32.interleave.2bpp"
OmanyteAnimatedPic: ; 0x84f00
INCBIN "gfx/billboard/mon_animated/omanyte.w32.interleave.2bpp"
KabutoAnimatedPic: ; 0x85200
INCBIN "gfx/billboard/mon_animated/kabuto.w32.interleave.2bpp"
AerodactylAnimatedPic: ; 0x85500
INCBIN "gfx/billboard/mon_animated/aerodactyl.w32.interleave.2bpp"
SnorlaxAnimatedPic: ; 0x85800
INCBIN "gfx/billboard/mon_animated/snorlax.w32.interleave.2bpp"
ArticunoAnimatedPic: ; 0x85b00
INCBIN "gfx/billboard/mon_animated/articuno.w32.interleave.2bpp"
ZapdosAnimatedPic: ; 0x85e00
INCBIN "gfx/billboard/mon_animated/zapdos.w32.interleave.2bpp"
MoltresAnimatedPic: ; 0x86100
INCBIN "gfx/billboard/mon_animated/moltres.w32.interleave.2bpp"
DratiniAnimatedPic: ; 0x86400
INCBIN "gfx/billboard/mon_animated/dratini.w32.interleave.2bpp"
MewtwoAnimatedPic: ; 0x86700
INCBIN "gfx/billboard/mon_animated/mewtwo.w32.interleave.2bpp"
MewAnimatedPic: ; 0x86a00
INCBIN "gfx/billboard/mon_animated/mew.w32.interleave.2bpp"
INCBIN "baserom.gbc",$86d00,$88000 - $86d00 ; 0x86d00
SECTION "bank22", ROMX, BANK[$22]
ZubatAnimatedPic: ; 0x88000
INCBIN "gfx/billboard/mon_animated/zubat.w32.interleave.2bpp"
OddishAnimatedPic: ; 0x88300
INCBIN "gfx/billboard/mon_animated/oddish.w32.interleave.2bpp"
ParasAnimatedPic: ; 0x88600
INCBIN "gfx/billboard/mon_animated/paras.w32.interleave.2bpp"
VenonatAnimatedPic: ; 0x88900
INCBIN "gfx/billboard/mon_animated/venonat.w32.interleave.2bpp"
DiglettAnimatedPic: ; 0x88c00
INCBIN "gfx/billboard/mon_animated/diglett.w32.interleave.2bpp"
MeowthAnimatedPic: ; 0x88f00
INCBIN "gfx/billboard/mon_animated/meowth.w32.interleave.2bpp"
PsyduckAnimatedPic: ; 0x89200
INCBIN "gfx/billboard/mon_animated/psyduck.w32.interleave.2bpp"
MankeyAnimatedPic: ; 0x89500
INCBIN "gfx/billboard/mon_animated/mankey.w32.interleave.2bpp"
GrowlitheAnimatedPic: ; 0x89800
INCBIN "gfx/billboard/mon_animated/growlithe.w32.interleave.2bpp"
PoliwagAnimatedPic: ; 0x89b00
INCBIN "gfx/billboard/mon_animated/poliwag.w32.interleave.2bpp"
AbraAnimatedPic: ; 0x89e00
INCBIN "gfx/billboard/mon_animated/abra.w32.interleave.2bpp"
MachopAnimatedPic: ; 0x8a100
INCBIN "gfx/billboard/mon_animated/machop.w32.interleave.2bpp"
BellsproutAnimatedPic: ; 0x8a400
INCBIN "gfx/billboard/mon_animated/bellsprout.w32.interleave.2bpp"
TentacoolAnimatedPic: ; 0x8a700
INCBIN "gfx/billboard/mon_animated/tentacool.w32.interleave.2bpp"
GeodudeAnimatedPic: ; 0x8aa00
INCBIN "gfx/billboard/mon_animated/geodude.w32.interleave.2bpp"
PonytaAnimatedPic: ; 0x8ad00
INCBIN "gfx/billboard/mon_animated/ponyta.w32.interleave.2bpp"
FieldSelectScreenGfx:
FieldSelectBlinkingBorderGfx: ; 0x8b000
INCBIN "gfx/field_select/blinking_border.2bpp"
FieldSelectGfx: ; 0x8b100
INCBIN "gfx/field_select/field_select_tiles.2bpp"
INCBIN "baserom.gbc",$8bd00,$8bf00 - $8bd00 ; 0x8bd00
BulbasaurBillboardBGPalette1: ; 0x8bf00
RGB 31, 31, 31
RGB 0, 19, 13
RGB 26, 1, 0
RGB 0, 0, 0
BulbasaurBillboardBGPalette2: ; 0x8bf08
RGB 31, 31, 31
RGB 0, 19, 13
RGB 0, 9, 0
RGB 0, 0, 0
IvysaurBillboardBGPalette1: ; 0x8bf10
RGB 31, 31, 31
RGB 0, 19, 13
RGB 0, 12, 6
RGB 0, 0, 0
IvysaurBillboardBGPalette2: ; 0x8bf18
RGB 31, 31, 31
RGB 25, 17, 3
RGB 0, 12, 6
RGB 0, 0, 0
VenusaurBillboardBGPalette1: ; 0x8bf20
RGB 31, 31, 31
RGB 0, 19, 13
RGB 26, 1, 0
RGB 0, 0, 0
VenusaurBillboardBGPalette2: ; 0x8bf28
RGB 31, 31, 31
RGB 0, 19, 13
RGB 5, 15, 0
RGB 0, 0, 0
CharmanderBillboardBGPalette1: ; 0x8bf30
RGB 31, 31, 31
RGB 31, 17, 1
RGB 26, 0, 0
RGB 3, 2, 0
CharmanderBillboardBGPalette2: ; 0x8bf38
RGB 31, 31, 31
RGB 31, 17, 1
RGB 26, 0, 0
RGB 3, 2, 0
CharmeleonBillboardBGPalette1: ; 0x8bf40
RGB 31, 31, 31
RGB 31, 17, 1
RGB 26, 4, 0
RGB 3, 2, 0
CharmeleonBillboardBGPalette2: ; 0x8bf48
RGB 31, 31, 31
RGB 31, 17, 1
RGB 26, 4, 0
RGB 3, 2, 0
CharizardBillboardBGPalette1: ; 0x8bf50
RGB 31, 31, 31
RGB 31, 17, 1
RGB 26, 4, 0
RGB 3, 2, 0
CharizardBillboardBGPalette2: ; 0x8bf58
RGB 31, 31, 31
RGB 31, 17, 1
RGB 26, 4, 0
RGB 3, 2, 0
SquirtleBillboardBGPalette1: ; 0x8bf60
RGB 31, 31, 31
RGB 26, 23, 0
RGB 0, 16, 31
RGB 0, 0, 0
SquirtleBillboardBGPalette2: ; 0x8bf68
RGB 31, 31, 31
RGB 14, 27, 31
RGB 0, 16, 31
RGB 0, 1, 3
WartortleBillboardBGPalette1: ; 0x8bf70
RGB 31, 31, 31
RGB 29, 23, 0
RGB 0, 16, 31
RGB 0, 0, 0
WartortleBillboardBGPalette2: ; 0x8bf78
RGB 31, 31, 31
RGB 14, 27, 31
RGB 0, 16, 31
RGB 0, 1, 3
BlastoiseBillboardBGPalette1: ; 0x8bf80
RGB 31, 31, 31
RGB 27, 20, 10
RGB 12, 6, 3
RGB 0, 0, 0
BlastoiseBillboardBGPalette2: ; 0x8bf88
RGB 31, 31, 31
RGB 11, 18, 31
RGB 2, 6, 19
RGB 0, 0, 0
CaterpieBillboardBGPalette1: ; 0x8bf90
RGB 31, 31, 31
RGB 23, 27, 5
RGB 3, 17, 0
RGB 0, 0, 0
CaterpieBillboardBGPalette2: ; 0x8bf98
RGB 31, 31, 31
RGB 23, 27, 5
RGB 3, 17, 0
RGB 0, 0, 0
MetapodBillboardBGPalette1: ; 0x8bfa0
RGB 31, 31, 31
RGB 23, 27, 5
RGB 7, 18, 0
RGB 0, 0, 0
MetapodBillboardBGPalette2: ; 0x8bfa8
RGB 31, 31, 31
RGB 23, 27, 5
RGB 7, 18, 0
RGB 0, 0, 0
ButterfreeBillboardBGPalette1: ; 0x8bfb0
RGB 31, 31, 31
RGB 31, 15, 0
RGB 31, 0, 1
RGB 3, 2, 0
ButterfreeBillboardBGPalette2: ; 0x8bfb8
RGB 31, 31, 31
RGB 11, 13, 31
RGB 9, 8, 18
RGB 0, 0, 0
WeedleBillboardBGPalette1: ; 0x8bfc0
RGB 31, 31, 31
RGB 29, 25, 0
RGB 25, 6, 7
RGB 3, 2, 0
WeedleBillboardBGPalette2: ; 0x8bfc8
RGB 31, 31, 31
RGB 29, 25, 0
RGB 25, 6, 7
RGB 3, 2, 0
KakunaBillboardBGPalette1: ; 0x8bfd0
RGB 31, 31, 31
RGB 28, 24, 0
RGB 18, 12, 0
RGB 3, 2, 0
KakunaBillboardBGPalette2: ; 0x8bfd8
RGB 31, 31, 31
RGB 28, 24, 0
RGB 18, 12, 0
RGB 3, 2, 0
BeedrillBillboardBGPalette1: ; 0x8bfe0
RGB 31, 31, 31
RGB 30, 27, 0
RGB 21, 7, 0
RGB 3, 2, 0
BeedrillBillboardBGPalette2: ; 0x8bfe8
RGB 31, 31, 31
RGB 30, 27, 0
RGB 21, 7, 0
RGB 3, 2, 0
PidgeyBillboardBGPalette1: ; 0x8bff0
RGB 31, 31, 31
RGB 30, 25, 1
RGB 26, 9, 3
RGB 3, 2, 0
PidgeyBillboardBGPalette2: ; 0x8bff8
RGB 31, 31, 31
RGB 30, 25, 1
RGB 26, 9, 3
RGB 3, 2, 0
SECTION "bank23", ROMX, BANK[$23]
BulbasaurAnimatedPic: ; 0x8c000
INCBIN "gfx/billboard/mon_animated/bulbasaur.w32.interleave.2bpp"
CharmanderAnimatedPic: ; 0x8c300
INCBIN "gfx/billboard/mon_animated/charmander.w32.interleave.2bpp"
SquirtleAnimatedPic: ; 0x8c600
INCBIN "gfx/billboard/mon_animated/squirtle.w32.interleave.2bpp"
CaterpieAnimatedPic: ; 0x8c900
INCBIN "gfx/billboard/mon_animated/caterpie.w32.interleave.2bpp"
WeedleAnimatedPic: ; 0x8cc00
INCBIN "gfx/billboard/mon_animated/weedle.w32.interleave.2bpp"
PidgeyAnimatedPic: ; 0x8cf00
INCBIN "gfx/billboard/mon_animated/pidgey.w32.interleave.2bpp"
RattataAnimatedPic: ; 0x8d200
INCBIN "gfx/billboard/mon_animated/rattata.w32.interleave.2bpp"
SpearowAnimatedPic: ; 0x8d500
INCBIN "gfx/billboard/mon_animated/spearow.w32.interleave.2bpp"
EkansAnimatedPic: ; 0x8d800
INCBIN "gfx/billboard/mon_animated/ekans.w32.interleave.2bpp"
PikachuAnimatedPic: ; 0x8db00
INCBIN "gfx/billboard/mon_animated/pikachu.w32.interleave.2bpp"
SandshrewAnimatedPic: ; 0x8de00
INCBIN "gfx/billboard/mon_animated/sandshrew.w32.interleave.2bpp"
Nidoran_FAnimatedPic: ; 0x8e100
INCBIN "gfx/billboard/mon_animated/nidoran_f.w32.interleave.2bpp"
Nidoran_MAnimatedPic: ; 0x8e400
INCBIN "gfx/billboard/mon_animated/nidoran_m.w32.interleave.2bpp"
ClefairyAnimatedPic: ; 0x8e700
INCBIN "gfx/billboard/mon_animated/clefairy.w32.interleave.2bpp"
VulpixAnimatedPic: ; 0x8ea00
INCBIN "gfx/billboard/mon_animated/vulpix.w32.interleave.2bpp"
JigglypuffAnimatedPic: ; 0x8ed00
INCBIN "gfx/billboard/mon_animated/jigglypuff.w32.interleave.2bpp"
INCBIN "baserom.gbc",$8f000,$8ff00 - $8f000 ; 0x8f000
PalletTownBillboardBGPalette1: ; 0x8ff00
RGB 31, 31, 31
RGB 22, 18, 17
RGB 0, 19, 0
RGB 0, 0, 0
PalletTownBillboardBGPalette2: ; 0x8ff08
RGB 31, 31, 31
RGB 24, 9, 3
RGB 0, 4, 25
RGB 0, 0, 0
ViridianCityBillboardBGPalette1: ; 0x8ff10
RGB 31, 31, 31
RGB 0, 14, 31
RGB 0, 22, 0
RGB 0, 0, 0
ViridianCityBillboardBGPalette2: ; 0x8ff18
RGB 31, 31, 31
RGB 26, 15, 3
RGB 0, 22, 0
RGB 0, 0, 0
ViridianForestBillboardBGPalette1: ; 0x8ff20
RGB 31, 31, 31
RGB 31, 20, 3
RGB 2, 16, 1
RGB 0, 0, 0
ViridianForestBillboardBGPalette2: ; 0x8ff28
RGB 31, 31, 31
RGB 31, 20, 3
RGB 24, 6, 0
RGB 0, 0, 0
PewterCityBillboardBGPalette1: ; 0x8ff30
RGB 31, 31, 31
RGB 27, 20, 10
RGB 2, 16, 1
RGB 0, 0, 0
PewterCityBillboardBGPalette2: ; 0x8ff38
RGB 31, 31, 31
RGB 5, 17, 31
RGB 26, 3, 1
RGB 0, 0, 0
MtMoonBillboardBGPalette1: ; 0x8ff40
RGB 31, 28, 2
RGB 19, 20, 27
RGB 2, 7, 20
RGB 0, 0, 0
MtMoonBillboardBGPalette2: ; 0x8ff48
RGB 31, 28, 2
RGB 19, 20, 27
RGB 2, 7, 20
RGB 0, 0, 0
CeruleanCityBillboardBGPalette1: ; 0x8ff50
RGB 31, 22, 5
RGB 16, 22, 4
RGB 1, 15, 0
RGB 0, 0, 0
CeruleanCityBillboardBGPalette2: ; 0x8ff58
RGB 31, 31, 31
RGB 16, 22, 31
RGB 3, 11, 31
RGB 0, 0, 0
VermilionSeasideBillboardBGPalette1: ; 0x8ff60
RGB 31, 31, 31
RGB 8, 20, 31
RGB 2, 8, 23
RGB 0, 0, 0
VermilionSeasideBillboardBGPalette2: ; 0x8ff68
RGB 31, 31, 31
RGB 22, 22, 22
RGB 21, 8, 0
RGB 0, 0, 0
VermilionStreetsBillboardBGPalette1: ; 0x8ff70
RGB 31, 31, 31
RGB 20, 22, 25
RGB 31, 8, 0
RGB 0, 0, 0
VermilionStreetsBillboardBGPalette2: ; 0x8ff78
RGB 31, 31, 31
RGB 20, 22, 25
RGB 7, 8, 13
RGB 0, 0, 0
RockMountainBillboardBGPalette1: ; 0x8ff80
RGB 31, 31, 31
RGB 27, 13, 4
RGB 21, 5, 0
RGB 0, 0, 0
RockMountainBillboardBGPalette2: ; 0x8ff88
RGB 3, 18, 31
RGB 27, 13, 4
RGB 2, 16, 1
RGB 0, 0, 0
LavenderTownBillboardBGPalette1: ; 0x8ff90
RGB 31, 31, 10
RGB 11, 18, 31
RGB 2, 6, 19
RGB 0, 0, 0
LavenderTownBillboardBGPalette2: ; 0x8ff98
RGB 31, 31, 31
RGB 11, 18, 31
RGB 2, 6, 19
RGB 0, 0, 0
CeladonCityBillboardBGPalette1: ; 0x8ffa0
RGB 31, 31, 31
RGB 11, 19, 31
RGB 29, 8, 4
RGB 0, 0, 0
CeladonCityBillboardBGPalette2: ; 0x8ffa8
RGB 31, 31, 31
RGB 31, 9, 9
RGB 16, 2, 2
RGB 0, 0, 0
CyclingRoadBillboardBGPalette1: ; 0x8ffb0
RGB 31, 24, 15
RGB 11, 21, 5
RGB 31, 9, 5
RGB 0, 0, 0
CyclingRoadBillboardBGPalette2: ; 0x8ffb8
RGB 31, 22, 13
RGB 11, 21, 5
RGB 0, 15, 0
RGB 0, 0, 0
FuchsiaCityBillboardBGPalette1: ; 0x8ffc0
RGB 31, 31, 31
RGB 10, 25, 31
RGB 26, 3, 1
RGB 0, 0, 0
FuchsiaCityBillboardBGPalette2: ; 0x8ffc8
RGB 31, 31, 31
RGB 27, 23, 6
RGB 28, 6, 3
RGB 0, 0, 0
SafariZoneBillboardBGPalette1: ; 0x8ffd0
RGB 31, 31, 31
RGB 13, 27, 31
RGB 4, 19, 27
RGB 0, 0, 0
SafariZoneBillboardBGPalette2: ; 0x8ffd8
RGB 29, 21, 17
RGB 13, 19, 5
RGB 0, 14, 0
RGB 0, 0, 0
SaffronCityBillboardBGPalette1: ; 0x8ffe0
RGB 31, 31, 31
RGB 8, 19, 31
RGB 2, 7, 26
RGB 0, 0, 0
SaffronCityBillboardBGPalette2: ; 0x8ffe8
RGB 31, 31, 31
RGB 27, 28, 1
RGB 24, 7, 5
RGB 0, 0, 0
SeafoamIslandsBillboardBGPalette1: ; 0x8fff0
RGB 24, 27, 30
RGB 31, 24, 1
RGB 2, 15, 1
RGB 0, 0, 0
SeafoamIslandsBillboardBGPalette2: ; 0x8fff8
RGB 24, 27, 30
RGB 0, 14, 31
RGB 0, 9, 23
RGB 0, 0, 0
SECTION "bank24", ROMX, BANK[$24]
HypnoPic: ; 0x90000
INCBIN "gfx/billboard/mon_pics/hypno.2bpp"
HypnoSilhouettePic: ; 0x90180
INCBIN "gfx/billboard/mon_silhouettes/hypno.2bpp"
KrabbyPic: ; 0x90300
INCBIN "gfx/billboard/mon_pics/krabby.2bpp"
KrabbySilhouettePic: ; 0x90480
INCBIN "gfx/billboard/mon_silhouettes/krabby.2bpp"
KinglerPic: ; 0x90600
INCBIN "gfx/billboard/mon_pics/kingler.2bpp"
KinglerSilhouettePic: ; 0x90780
INCBIN "gfx/billboard/mon_silhouettes/kingler.2bpp"
VoltorbPic: ; 0x90900
INCBIN "gfx/billboard/mon_pics/voltorb.2bpp"
VoltorbSilhouettePic: ; 0x90a80
INCBIN "gfx/billboard/mon_silhouettes/voltorb.2bpp"
ElectrodePic: ; 0x90c00
INCBIN "gfx/billboard/mon_pics/electrode.2bpp"
ElectrodeSilhouettePic: ; 0x90d80
INCBIN "gfx/billboard/mon_silhouettes/electrode.2bpp"
ExeggcutePic: ; 0x90f00
INCBIN "gfx/billboard/mon_pics/exeggcute.2bpp"
ExeggcuteSilhouettePic: ; 0x91080
INCBIN "gfx/billboard/mon_silhouettes/exeggcute.2bpp"
ExeggutorPic: ; 0x91200
INCBIN "gfx/billboard/mon_pics/exeggutor.2bpp"
ExeggutorSilhouettePic: ; 0x91380
INCBIN "gfx/billboard/mon_silhouettes/exeggutor.2bpp"
CubonePic: ; 0x91500
INCBIN "gfx/billboard/mon_pics/cubone.2bpp"
CuboneSilhouettePic: ; 0x91680
INCBIN "gfx/billboard/mon_silhouettes/cubone.2bpp"
MarowakPic: ; 0x91800
INCBIN "gfx/billboard/mon_pics/marowak.2bpp"
MarowakSilhouettePic: ; 0x91980
INCBIN "gfx/billboard/mon_silhouettes/marowak.2bpp"
HitmonleePic: ; 0x91b00
INCBIN "gfx/billboard/mon_pics/hitmonlee.2bpp"
HitmonleeSilhouettePic: ; 0x91c80
INCBIN "gfx/billboard/mon_silhouettes/hitmonlee.2bpp"
HitmonchanPic: ; 0x91e00
INCBIN "gfx/billboard/mon_pics/hitmonchan.2bpp"
HitmonchanSilhouettePic: ; 0x91f80
INCBIN "gfx/billboard/mon_silhouettes/hitmonchan.2bpp"
LickitungPic: ; 0x92100
INCBIN "gfx/billboard/mon_pics/lickitung.2bpp"
LickitungSilhouettePic: ; 0x92280
INCBIN "gfx/billboard/mon_silhouettes/lickitung.2bpp"
KoffingPic: ; 0x92400
INCBIN "gfx/billboard/mon_pics/koffing.2bpp"
KoffingSilhouettePic: ; 0x92580
INCBIN "gfx/billboard/mon_silhouettes/koffing.2bpp"
WeezingPic: ; 0x92700
INCBIN "gfx/billboard/mon_pics/weezing.2bpp"
WeezingSilhouettePic: ; 0x92880
INCBIN "gfx/billboard/mon_silhouettes/weezing.2bpp"
RhyhornPic: ; 0x92a00
INCBIN "gfx/billboard/mon_pics/rhyhorn.2bpp"
RhyhornSilhouettePic: ; 0x92b80
INCBIN "gfx/billboard/mon_silhouettes/rhyhorn.2bpp"
RhydonPic: ; 0x92d00
INCBIN "gfx/billboard/mon_pics/rhydon.2bpp"
RhydonSilhouettePic: ; 0x92e80
INCBIN "gfx/billboard/mon_silhouettes/rhydon.2bpp"
INCBIN "baserom.gbc",$93000,$93c00 - $93000
CinnabarIslandBillboardBGPaletteMap: ; 0x93c00
db $6, $6, $6, $6, $6, $6
db $6, $6, $7, $7, $6, $6
db $6, $6, $7, $7, $7, $6
db $6, $6, $6, $6, $6, $6
IndigoPlateauBillboardBGPaletteMap: ; 0x93c18
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $7, $7, $7, $7, $7, $7
INCBIN "baserom.gbc",$93c39,$94000 - $93c39
SECTION "bank25", ROMX, BANK[$25]
MagnemitePic: ; 0x94000
INCBIN "gfx/billboard/mon_pics/magnemite.2bpp"
MagnemiteSilhouettePic: ; 0x94180
INCBIN "gfx/billboard/mon_silhouettes/magnemite.2bpp"
MagnetonPic: ; 0x94300
INCBIN "gfx/billboard/mon_pics/magneton.2bpp"
MagnetonSilhouettePic: ; 0x94480
INCBIN "gfx/billboard/mon_silhouettes/magneton.2bpp"
Farfetch_dPic: ; 0x94600
INCBIN "gfx/billboard/mon_pics/farfetch_d.2bpp"
Farfetch_dSilhouettePic: ; 0x94780
INCBIN "gfx/billboard/mon_silhouettes/farfetch_d.2bpp"
DoduoPic: ; 0x94900
INCBIN "gfx/billboard/mon_pics/doduo.2bpp"
DoduoSilhouettePic: ; 0x94a80
INCBIN "gfx/billboard/mon_silhouettes/doduo.2bpp"
DodrioPic: ; 0x94c00
INCBIN "gfx/billboard/mon_pics/dodrio.2bpp"
DodrioSilhouettePic: ; 0x94d80
INCBIN "gfx/billboard/mon_silhouettes/dodrio.2bpp"
SeelPic: ; 0x94f00
INCBIN "gfx/billboard/mon_pics/seel.2bpp"
SeelSilhouettePic: ; 0x95080
INCBIN "gfx/billboard/mon_silhouettes/seel.2bpp"
DewgongPic: ; 0x95200
INCBIN "gfx/billboard/mon_pics/dewgong.2bpp"
DewgongSilhouettePic: ; 0x95380
INCBIN "gfx/billboard/mon_silhouettes/dewgong.2bpp"
GrimerPic: ; 0x95500
INCBIN "gfx/billboard/mon_pics/grimer.2bpp"
GrimerSilhouettePic: ; 0x95680
INCBIN "gfx/billboard/mon_silhouettes/grimer.2bpp"
MukPic: ; 0x95800
INCBIN "gfx/billboard/mon_pics/muk.2bpp"
MukSilhouettePic: ; 0x95980
INCBIN "gfx/billboard/mon_silhouettes/muk.2bpp"
ShellderPic: ; 0x95b00
INCBIN "gfx/billboard/mon_pics/shellder.2bpp"
ShellderSilhouettePic: ; 0x95c80
INCBIN "gfx/billboard/mon_silhouettes/shellder.2bpp"
CloysterPic: ; 0x95e00
INCBIN "gfx/billboard/mon_pics/cloyster.2bpp"
CloysterSilhouettePic: ; 0x95f80
INCBIN "gfx/billboard/mon_silhouettes/cloyster.2bpp"
GastlyPic: ; 0x96100
INCBIN "gfx/billboard/mon_pics/gastly.2bpp"
GastlySilhouettePic: ; 0x96280
INCBIN "gfx/billboard/mon_silhouettes/gastly.2bpp"
HaunterPic: ; 0x96400
INCBIN "gfx/billboard/mon_pics/haunter.2bpp"
HaunterSilhouettePic: ; 0x96580
INCBIN "gfx/billboard/mon_silhouettes/haunter.2bpp"
GengarPic: ; 0x96700
INCBIN "gfx/billboard/mon_pics/gengar.2bpp"
GengarSilhouettePic: ; 0x96880
INCBIN "gfx/billboard/mon_silhouettes/gengar.2bpp"
OnixPic: ; 0x96a00
INCBIN "gfx/billboard/mon_pics/onix.2bpp"
OnixSilhouettePic: ; 0x96b80
INCBIN "gfx/billboard/mon_silhouettes/onix.2bpp"
DrowzeePic: ; 0x96d00
INCBIN "gfx/billboard/mon_pics/drowzee.2bpp"
DrowzeeSilhouettePic: ; 0x96e80
INCBIN "gfx/billboard/mon_silhouettes/drowzee.2bpp"
INCBIN "baserom.gbc",$97000,$97a00 - $97000
StageRedFieldTopGfx3: ; 0x97a00
INCBIN "gfx/stage/red_top/red_top_3.2bpp"
StageRedFieldTopGfx1: ; 0x97ba0
INCBIN "gfx/stage/red_top/red_top_1.2bpp"
StageRedFieldTopGfx2: ; 0x97e00
INCBIN "gfx/stage/red_top/red_top_2.2bpp"
SECTION "bank26", ROMX, BANK[$26]
AlakazamPic: ; 0x98000
INCBIN "gfx/billboard/mon_pics/alakazam.2bpp"
AlakazamSilhouettePic: ; 0x98180
INCBIN "gfx/billboard/mon_silhouettes/alakazam.2bpp"
MachopPic: ; 0x98300
INCBIN "gfx/billboard/mon_pics/machop.2bpp"
MachopSilhouettePic: ; 0x98480
INCBIN "gfx/billboard/mon_silhouettes/machop.2bpp"
MachokePic: ; 0x98600
INCBIN "gfx/billboard/mon_pics/machoke.2bpp"
MachokeSilhouettePic: ; 0x98780
INCBIN "gfx/billboard/mon_silhouettes/machoke.2bpp"
MachampPic: ; 0x98900
INCBIN "gfx/billboard/mon_pics/machamp.2bpp"
MachampSilhouettePic: ; 0x98a80
INCBIN "gfx/billboard/mon_silhouettes/machamp.2bpp"
BellsproutPic: ; 0x98c00
INCBIN "gfx/billboard/mon_pics/bellsprout.2bpp"
BellsproutSilhouettePic: ; 0x98d80
INCBIN "gfx/billboard/mon_silhouettes/bellsprout.2bpp"
WeepinbellPic: ; 0x98f00
INCBIN "gfx/billboard/mon_pics/weepinbell.2bpp"
WeepinbellSilhouettePic: ; 0x97080
INCBIN "gfx/billboard/mon_silhouettes/weepinbell.2bpp"
VictreebellPic: ; 0x97200
INCBIN "gfx/billboard/mon_pics/victreebell.2bpp"
VictreebellSilhouettePic: ; 0x97380
INCBIN "gfx/billboard/mon_silhouettes/victreebell.2bpp"
TentacoolPic: ; 0x97500
INCBIN "gfx/billboard/mon_pics/tentacool.2bpp"
TentacoolSilhouettePic: ; 0x97680
INCBIN "gfx/billboard/mon_silhouettes/tentacool.2bpp"
TentacruelPic: ; 0x97800
INCBIN "gfx/billboard/mon_pics/tentacruel.2bpp"
TentacruelSilhouettePic: ; 0x97980
INCBIN "gfx/billboard/mon_silhouettes/tentacruel.2bpp"
GeodudePic: ; 0x97b00
INCBIN "gfx/billboard/mon_pics/geodude.2bpp"
GeodudeSilhouettePic: ; 0x97c80
INCBIN "gfx/billboard/mon_silhouettes/geodude.2bpp"
GravelerPic: ; 0x97e00
INCBIN "gfx/billboard/mon_pics/graveler.2bpp"
GravelerSilhouettePic: ; 0x97f80
INCBIN "gfx/billboard/mon_silhouettes/graveler.2bpp"
GolemPic: ; 0x9a100
INCBIN "gfx/billboard/mon_pics/golem.2bpp"
GolemSilhouettePic: ; 0x9a280
INCBIN "gfx/billboard/mon_silhouettes/golem.2bpp"
PonytaPic: ; 0x9a400
INCBIN "gfx/billboard/mon_pics/ponyta.2bpp"
PonytaSilhouettePic: ; 0x9a580
INCBIN "gfx/billboard/mon_silhouettes/ponyta.2bpp"
RapidashPic: ; 0x9a700
INCBIN "gfx/billboard/mon_pics/rapidash.2bpp"
RapidashSilhouettePic: ; 0x9a880
INCBIN "gfx/billboard/mon_silhouettes/rapidash.2bpp"
SlowpokePic: ; 0x9aa00
INCBIN "gfx/billboard/mon_pics/slowpoke.2bpp"
SlowpokeSilhouettePic: ; 0x9ab80
INCBIN "gfx/billboard/mon_silhouettes/slowpoke.2bpp"
SlowbroPic: ; 0x9ad00
INCBIN "gfx/billboard/mon_pics/slowbro.2bpp"
SlowbroSilhouettePic: ; 0x9ae80
INCBIN "gfx/billboard/mon_silhouettes/slowbro.2bpp"
INCBIN "baserom.gbc",$9b000,$9c000 - $9b000 ; 0x9b000
SECTION "bank27", ROMX, BANK[$27]
StageRedFieldTopStatusBarSymbolsGfx_GameBoyColor: ; 0x9c000
INCBIN "gfx/stage/red_top/status_bar_symbols_gameboycolor.2bpp"
INCBIN "baserom.gbc",$9c100,$9c2a0 - $9c100
StageRedFieldTopBaseGameBoyColorGfx: ; 0x9c2a0
INCBIN "gfx/stage/red_top/red_top_base_gameboycolor.2bpp"
StageRedFieldTopGfx4: ; 0x9d000
INCBIN "gfx/stage/red_top/red_top_4.2bpp"
INCBIN "baserom.gbc",$9e000,$a0000 - $9e000
SECTION "bank28", ROMX, BANK[$28]
INCBIN "baserom.gbc",$a0000,$a2000 - $a0000
StageRedFieldBottomBaseGameBoyColorGfx: ; 0xa2000
INCBIN "gfx/stage/red_bottom/red_bottom_base_gameboycolor.2bpp"
StageRedFieldBottomGfx5: ; 0xa3000
INCBIN "gfx/stage/red_bottom/red_bottom_5.2bpp"
SECTION "bank29", ROMX, BANK[$29]
INCBIN "baserom.gbc",$a4000,$a6000 - $a4000 ; 0xa4000
PalletTownPic: ; 0xa6000
INCBIN "gfx/billboard/maps/pallettown.2bpp"
ViridianCityPic: ; 0xa6180
INCBIN "gfx/billboard/maps/viridiancity.2bpp"
ViridianForestPic: ; 0xa6300
INCBIN "gfx/billboard/maps/viridianforest.2bpp"
PewterCityPic: ; 0xa6480
INCBIN "gfx/billboard/maps/pewtercity.2bpp"
MtMoonPic: ; 0xa6600
INCBIN "gfx/billboard/maps/mtmoon.2bpp"
CeruleanCityPic: ; 0xa6780
INCBIN "gfx/billboard/maps/ceruleancity.2bpp"
VermilionCitySeasidePic: ; 0xa6900
INCBIN "gfx/billboard/maps/vermilioncityseaside.2bpp"
VermilionCityStreetsPic: ; 0xa6a80
INCBIN "gfx/billboard/maps/vermilioncitystreets.2bpp"
RockMountainPic: ; 0xa6c00
INCBIN "gfx/billboard/maps/rockmountain.2bpp"
LavenderTownPic: ; 0xa6d80
INCBIN "gfx/billboard/maps/lavendertown.2bpp"
CeladonCityPic: ; 0xa6f00
INCBIN "gfx/billboard/maps/celadoncity.2bpp"
CyclingRoadPic: ; 0xa7080
INCBIN "gfx/billboard/maps/cyclingroad.2bpp"
FuchsiaCityPic: ; 0xa7200
INCBIN "gfx/billboard/maps/fuchsiacity.2bpp"
SafariZonePic: ; 0xa7380
INCBIN "gfx/billboard/maps/safarizone.2bpp"
SaffronCityPic: ; 0xa7500
INCBIN "gfx/billboard/maps/saffroncity.2bpp"
SeafoamIslandsPic: ; 0xa7680
INCBIN "gfx/billboard/maps/seafoamislands.2bpp"
CinnabarIslandPic: ; 0xa7800
INCBIN "gfx/billboard/maps/cinnabarisland.2bpp"
IndigoPlateauPic: ; 0xa7980
INCBIN "gfx/billboard/maps/indigoplateau.2bpp"
INCBIN "baserom.gbc",$a7b00,$a8000 - $a7b00 ; 0xa7b00
SECTION "bank2a", ROMX, BANK[$2a]
INCBIN "baserom.gbc",$a8000,$a82c0 - $a8000
PinballGreatballShakeGfx: ; 0xa82c0
INCBIN "gfx/stage/ball_greatball_shake.w16.interleave.2bpp"
PinballUltraballShakeGfx: ; 0xa8300
INCBIN "gfx/stage/ball_ultraball_shake.w16.interleave.2bpp"
PinballMasterballShakeGfx: ; 0xa8340
INCBIN "gfx/stage/ball_masterball_shake.w16.interleave.2bpp"
PinballPokeballShakeGfx: ; 0xa8380
INCBIN "gfx/stage/ball_pokeball_shake.w16.interleave.2bpp"
StageRedFieldBottomGfx4: ; 0xa83c0
INCBIN "gfx/stage/red_bottom/red_bottom_4.2bpp"
PinballPokeballGfx: ; 0xa8400
INCBIN "gfx/stage/ball_pokeball.w32.interleave.2bpp"
FlipperGfx: ; 0xa8600
INCBIN "gfx/stage/flipper.2bpp"
PikachuSaverGfx: ; 0xa8720
INCBIN "gfx/stage/pikachu_saver.2bpp"
INCBIN "baserom.gbc",$a8800,$a8a00 - $a8800
PinballGreatballGfx: ; 0xa8a00
INCBIN "gfx/stage/ball_greatball.w32.interleave.2bpp"
PinballUltraballGfx: ; 0xa8c00
INCBIN "gfx/stage/ball_ultraball.w32.interleave.2bpp"
PinballMasterballGfx: ; 0xa8e00
INCBIN "gfx/stage/ball_masterball.w32.interleave.2bpp"
PinballPokeballMiniGfx: ; 0xa9000
INCBIN "gfx/stage/ball_pokeball_mini.w32.interleave.2bpp"
PinballGreatballMiniGfx: ; 0xa9200
INCBIN "gfx/stage/ball_greatball_mini.w32.interleave.2bpp"
PinballUltraballMiniGfx: ; 0xa9400
INCBIN "gfx/stage/ball_ultraball_mini.w32.interleave.2bpp"
PinballMasterballMiniGfx: ; 0xa9600
INCBIN "gfx/stage/ball_masterball_mini.w32.interleave.2bpp"
PinballBallMiniGfx: ; 0xa9800
INCBIN "gfx/stage/ball_mini.w32.interleave.2bpp"
INCBIN "baserom.gbc",$a9a00,$abb00 - $a9a00
PaletteTownBillboardBGPaletteMap: ; 0xabb00
db $6, $7, $7, $7, $7, $7
db $6, $6, $6, $6, $6, $7
db $6, $6, $6, $6, $6, $6
db $6, $6, $7, $7, $7, $7
ViridianCityBillboardBGPaletteMap: ; 0xabb18
db $6, $6, $6, $6, $7, $6
db $6, $6, $6, $6, $7, $6
db $7, $7, $7, $7, $7, $6
db $7, $7, $7, $7, $7, $6
ViridianForestBillboardBGPaletteMap: ; 0xabb30
db $6, $7, $6, $6, $7, $6
db $7, $7, $7, $7, $7, $6
db $6, $7, $6, $6, $7, $6
db $6, $7, $7, $7, $7, $6
PewterCityBillboardBGPaletteMap: ; 0xabb48
db $7, $7, $7, $7, $7, $7
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
MtMoonBillboardBGPaletteMap: ; 0xabb60
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
CeruleanCityBillboardBGPaletteMap: ; 0xabb78
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
VermilionSeasideBillboardBGPaletteMap: ; 0xabb90
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $7, $7, $7, $6, $6, $6
VermilionStreetsBillboardBGPaletteMap: ; 0xabba8
db $6, $6, $6, $6, $6, $7
db $6, $6, $7, $7, $7, $7
db $6, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
RockMountainBillboardBGPaletteMap: ; 0xabbc0
db $7, $7, $7, $7, $7, $7
db $6, $6, $7, $7, $7, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
LavenderTownBillboardBGPaletteMap: ; 0xabbd8
db $6, $7, $7, $6, $6, $6
db $6, $7, $7, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
CeladonCityBillboardBGPaletteMap: ; 0xabbf0
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $7, $7, $7, $7
db $6, $6, $7, $7, $7, $7
CyclingRoadBillboardBGPaletteMap: ; 0xabc08
db $7, $7, $7, $7, $6, $6
db $7, $6, $6, $6, $6, $7
db $6, $6, $6, $6, $6, $7
db $6, $6, $6, $6, $7, $7
FuchsiaCityBillboardBGPaletteMap: ; 0xabc20
db $7, $6, $6, $6, $6, $6
db $7, $6, $6, $6, $6, $6
db $7, $7, $7, $6, $6, $7
db $7, $7, $7, $7, $7, $7
SafariZoneBillboardBGPaletteMap: ; 0xabc38
db $6, $6, $6, $6, $6, $6
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
SaffronCityBillboardBGPaletteMap: ; 0xabc50
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $7, $7, $7, $6, $7, $7
db $7, $7, $7, $7, $7, $7
SeafoamIslandsBillboardBGPaletteMap: ; 0xabc68
db $7, $7, $7, $7, $7, $7
db $7, $7, $6, $7, $7, $7
db $7, $7, $7, $6, $7, $7
db $7, $7, $7, $7, $7, $7
INCBIN "baserom.gbc",$abc80,$abf00 - $abc80
BulbasaurAnimatedObjPalette1: ; 0xabf00
RGB 31, 31, 31
RGB 5, 21, 30
RGB 1, 3, 22
RGB 0, 0, 0
BulbasaurAnimatedObjPalette2: ; 0xabf08
RGB 31, 31, 31
RGB 0, 21, 15
RGB 0, 12, 6
RGB 0, 0, 0
CharmanderAnimatedObjPalette1: ; 0xabf10
RGB 31, 31, 31
RGB 31, 17, 0
RGB 26, 1, 0
RGB 0, 0, 0
CharmanderAnimatedObjPalette2: ; 0xabf18
RGB 31, 31, 31
RGB 31, 17, 0
RGB 26, 1, 0
RGB 0, 0, 0
SquirtleAnimatedObjPalette1: ; 0xabf20
RGB 31, 31, 31
RGB 4, 19, 31
RGB 1, 5, 17
RGB 0, 0, 0
SquirtleAnimatedObjPalette2: ; 0xabf28
RGB 31, 31, 31
RGB 31, 20, 11
RGB 14, 9, 3
RGB 0, 0, 0
CaterpieAnimatedObjPalette1: ; 0xabf30
RGB 31, 31, 31
RGB 0, 25, 9
RGB 27, 13, 0
RGB 0, 0, 0
CaterpieAnimatedObjPalette2: ; 0xabf38
RGB 31, 31, 31
RGB 0, 25, 9
RGB 27, 13, 0
RGB 0, 0, 0
WeedleAnimatedObjPalette1: ; 0xabf40
RGB 31, 31, 31
RGB 31, 25, 3
RGB 25, 9, 7
RGB 0, 0, 0
WeedleAnimatedObjPalette2: ; 0xabf48
RGB 31, 31, 31
RGB 31, 25, 3
RGB 25, 9, 7
RGB 0, 0, 0
PidgeyAnimatedObjPalette1: ; 0xabf50
RGB 31, 31, 31
RGB 31, 20, 11
RGB 21, 10, 4
RGB 0, 0, 0
PidgeyAnimatedObjPalette2: ; 0xabf58
RGB 31, 31, 31
RGB 31, 20, 11
RGB 21, 10, 4
RGB 0, 0, 0
RattataAnimatedObjPalette1: ; 0xabf60
RGB 31, 31, 31
RGB 30, 12, 23
RGB 20, 4, 8
RGB 0, 0, 0
RattataAnimatedObjPalette2: ; 0xabf68
RGB 31, 31, 31
RGB 30, 12, 23
RGB 20, 4, 8
RGB 0, 0, 0
SpearowAnimatedObjPalette1: ; 0xabf70
RGB 31, 31, 31
RGB 31, 22, 14
RGB 24, 4, 2
RGB 0, 0, 0
SpearowAnimatedObjPalette2: ; 0xabf78
RGB 31, 31, 31
RGB 31, 22, 14
RGB 24, 4, 2
RGB 0, 0, 0
EkansAnimatedObjPalette1: ; 0xabf80
RGB 31, 31, 31
RGB 30, 26, 12
RGB 20, 7, 12
RGB 0, 0, 0
EkansAnimatedObjPalette2: ; 0xabf88
RGB 31, 31, 31
RGB 30, 26, 12
RGB 20, 7, 12
RGB 0, 0, 0
PikachuAnimatedObjPalette1: ; 0xabf90
RGB 31, 31, 31
RGB 31, 29, 0
RGB 23, 10, 0
RGB 3, 3, 0
PikachuAnimatedObjPalette2: ; 0xabf98
RGB 31, 31, 31
RGB 31, 29, 0
RGB 23, 10, 0
RGB 3, 3, 0
SandshrewAnimatedObjPalette1: ; 0xabfa0
RGB 31, 31, 31
RGB 30, 25, 3
RGB 19, 11, 0
RGB 0, 0, 0
SandshrewAnimatedObjPalette2: ; 0xabfa8
RGB 31, 31, 31
RGB 30, 25, 3
RGB 19, 11, 0
RGB 0, 0, 0
NidoranFAnimatedObjPalette1: ; 0xabfb0
RGB 31, 31, 31
RGB 19, 23, 30
RGB 8, 8, 24
RGB 0, 0, 0
NidoranFAnimatedObjPalette2: ; 0xabfb8
RGB 31, 31, 31
RGB 19, 23, 30
RGB 8, 8, 24
RGB 0, 0, 0
NidoranMAnimatedObjPalette1: ; 0xabfc0
RGB 31, 31, 31
RGB 28, 16, 25
RGB 20, 5, 12
RGB 0, 0, 0
NidoranMAnimatedObjPalette2: ; 0xabfc8
RGB 31, 31, 31
RGB 28, 16, 25
RGB 20, 5, 12
RGB 0, 0, 0
ClefairyAnimatedObjPalette1: ; 0xabfd0
RGB 31, 31, 31
RGB 31, 20, 20
RGB 23, 5, 6
RGB 0, 0, 0
ClefairyAnimatedObjPalette2: ; 0xabfd8
RGB 31, 31, 31
RGB 31, 20, 20
RGB 23, 5, 6
RGB 0, 0, 0
VulpixAnimatedObjPalette1: ; 0xabfe0
RGB 31, 31, 31
RGB 30, 20, 13
RGB 27, 8, 0
RGB 0, 0, 0
VulpixAnimatedObjPalette2: ; 0xabfe8
RGB 31, 31, 31
RGB 30, 20, 13
RGB 27, 8, 0
RGB 0, 0, 0
JigglypuffAnimatedObjPalette1: ; 0xabff0
RGB 31, 31, 31
RGB 31, 18, 18
RGB 7, 6, 27
RGB 0, 0, 0
JigglypuffAnimatedObjPalette2: ; 0xabff8
RGB 31, 31, 31
RGB 31, 18, 18
RGB 7, 6, 27
RGB 0, 0, 0
SECTION "bank2b", ROMX, BANK[$2b]
TitlescreenFadeInGfx: ; 0xac000
INCBIN "gfx/titlescreen/titlescreen_fade_in.2bpp"
INCBIN "baserom.gbc",$ad800,$b0000 - $ad800
SECTION "bank2c", ROMX, BANK[$2c]
INCBIN "baserom.gbc",$b0000,$b3800 - $b0000 ; 0xb0000
FieldSelectTilemap: ; 0xb3800
INCBIN "gfx/tilemaps/field_select.map"
INCBIN "baserom.gbc",$b3c00,$b4000 - $b3c00 ; 0xb3c00
SECTION "bank2d", ROMX, BANK[$2d]
TitlescreenGfx: ; 0xb4000
INCBIN "gfx/titlescreen/titlescreen.2bpp"
OptionMenuAndKeyConfigGfx:
OptionMenuBlankGfx: ; 0xb5800
INCBIN "gfx/option_menu/blank.2bpp"
OptionMenuArrowGfx: ; 0xb5a00
INCBIN "gfx/option_menu/arrow.2bpp"
OptionMenuPikaBubbleGfx: ; 0xb5a20
INCBIN "gfx/option_menu/pika_bubble.2bpp"
OptionMenuBouncingPokeballGfx: ; 0xb5a80
INCBIN "gfx/option_menu/bouncing_pokeball.2bpp"
OptionMenuRumblePikachuAnimationGfx: ; 0xb5b40
INCBIN "gfx/option_menu/rumble_pikachu_animation.2bpp"
OptionMenuPsyduckGfx: ; 0xb5c00
INCBIN "gfx/option_menu/psyduck.2bpp"
OptionMenuBoldArrowGfx: ; 0xb5fc0
INCBIN "gfx/option_menu/bold_arrow.2bpp"
OptionMenuUnknownGfx: ; 0xb5fd0
INCBIN "baserom.gbc",$b5fd0,$b6020 - $b5fd0
OptionMenuOptionTextGfx: ; 0xb6020
INCBIN "gfx/option_menu/option_text.2bpp"
OptionMenuPikachuGfx: ; 0xb6080
INCBIN "gfx/option_menu/pikachu.2bpp"
OptionMenuPsyduckFeetGfx: ; 0xb6170
INCBIN "gfx/option_menu/psyduck_feet.2bpp"
OptionMenuUnknown2Gfx: ; 0xb6200
INCBIN "baserom.gbc",$b6200,$b6250 - $b6200
OptionMenuRumbleTextGfx: ; 0xb6250
INCBIN "gfx/option_menu/rumble_text.2bpp"
OptionMenuUnknown3Gfx: ; 0xb62b0
INCBIN "baserom.gbc",$b62b0,$b6320 - $b62b0
OptionMenuKeyCoTextGfx: ; 0xb6320
INCBIN "gfx/option_menu/key_co_text.2bpp"
OptionMenuSoundTestDigitsGfx: ; 0xb6370
INCBIN "gfx/option_menu/sound_test_digits.2bpp"
OptionMenuNfigTextGfx: ; 0xb6470
INCBIN "gfx/option_menu/nfig_text.2bpp"
OptionMenuUnknown4Gfx: ; 0xb64a0
INCBIN "baserom.gbc",$b64a0,$b6500 - $b64a0
KeyConfigResetTextGfx: ; 0xb6500
INCBIN "gfx/key_config/reset_text.2bpp"
KeyConfigBallStartTextGfx: ; 0xb6560
INCBIN "gfx/key_config/ball_start_text.2bpp"
KeyConfigLeftFlipperTextGfx: ; 0xb65f0
INCBIN "gfx/key_config/left_flipper_text.2bpp"
KeyConfigRightFlipperTextGfx: ; 0xb6680
INCBIN "gfx/key_config/right_flipper_text.2bpp"
KeyConfigTiltTextGfx: ; 0xb6710
INCBIN "gfx/key_config/tilt_text.2bpp"
KeyConfigMenuTextGfx: ; 0xb6810
INCBIN "gfx/key_config/menu_text.2bpp"
KeyConfigKeyConfigTextGfx: ; 0xb6880
INCBIN "gfx/key_config/key_config_text.2bpp"
KeyConfigIconsGfx: ; 0xb6900
INCBIN "gfx/key_config/icons.2bpp"
OptionMenuSoundTextTextGfx: ; 0xb6a40
INCBIN "gfx/option_menu/sound_test_text.2bpp"
OptionMenuOnOffTextGfx: ; 0xb6ad0
INCBIN "gfx/option_menu/on_off_text.2bpp"
OptionMenuBGMSETextGfx: ; 0xb6b10
INCBIN "gfx/option_menu/bgm_se_text.2bpp"
INCBIN "baserom.gbc",$b6c00,$b7c00 - $b6c00 ; 0xb6c00
PidgeottoBillboardBGPaletteMap: ; 0xb7c00
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
PidgeotBillboardBGPaletteMap: ; 0xb7c18
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
RattataBillboardBGPaletteMap: ; 0xb7c30
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
RaticateBillboardBGPaletteMap: ; 0xb7c48
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
SpearowBillboardBGPaletteMap: ; 0xb7c60
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
FearowBillboardBGPaletteMap: ; 0xb7c78
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
EkansBillboardBGPaletteMap: ; 0xb7c90
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
ArbokBillboardBGPaletteMap: ; 0xb7ca8
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
PikachuBillboardBGPaletteMap: ; 0xb7cc0
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
RaichuBillboardBGPaletteMap: ; 0xb7cd8
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
SandshrewBillboardBGPaletteMap: ; 0xb7cf0
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
SandslashBillboardBGPaletteMap: ; 0xb7d08
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
NidoranfBillboardBGPaletteMap: ; 0xb7d20
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
NidorinaBillboardBGPaletteMap: ; 0xb7d38
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
NidoqueenBillboardBGPaletteMap: ; 0xb7d50
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
NidoranmBillboardBGPaletteMap: ; 0xb7d68
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
INCBIN "baserom.gbc",$b7d80,$b8000 - $b7d80 ; 0xb7d80
SECTION "bank2e", ROMX, BANK[$2e]
INCBIN "baserom.gbc",$b8000,$ba000 - $b8000
StageRedFieldTopTilemap_GameBoy: ; 0xba000
INCBIN "gfx/tilemaps/stage_red_field_top_gameboy.map"
INCBIN "baserom.gbc",$ba400,$ba800 - $ba400
StageRedFieldBottomTilemap_GameBoy: ; 0xba800
INCBIN "gfx/tilemaps/stage_red_field_bottom_gameboy.map"
INCBIN "baserom.gbc",$bac00,$bc000 - $bac00
SECTION "bank2f", ROMX, BANK[$2f]
INCBIN "baserom.gbc",$bc000,$bd800 - $bc000
StageRedFieldBottomCollisionAttributes: ; 0xbd800
INCBIN "data/collision/red_stage_bottom.collision"
INCBIN "baserom.gbc",$bdc00,$be000 - $bdc00
StageRedFieldTopTilemap_GameBoyColor: ; 0xbe000
INCBIN "gfx/tilemaps/stage_red_field_top_gameboycolor.map"
StageRedFieldTopTilemap2_GameBoyColor: ; 0xbe400
INCBIN "gfx/tilemaps/stage_red_field_top_gameboycolor_2.map"
StageRedFieldBottomTilemap_GameBoyColor: ; 0xbe800
INCBIN "gfx/tilemaps/stage_red_field_bottom_gameboycolor.map"
StageRedFieldBottomTilemap2_GameBoyColor: ; 0xbec00
INCBIN "gfx/tilemaps/stage_red_field_bottom_gameboycolor_2.map"
INCBIN "baserom.gbc",$bf000,$bf800 - $bf000
EraseAllDataTilemap: ; 0xbf800
INCBIN "gfx/tilemaps/erase_all_data.map"
INCBIN "baserom.gbc",$bfc00,$c0000 - $bfc00
SECTION "bank30", ROMX, BANK[$30]
INCBIN "baserom.gbc",$c0000,$c3800 - $c0000 ; 0xc0000
OptionMenuTilemap: ; 0xc3800
INCBIN "gfx/tilemaps/option_menu.map"
INCBIN "baserom.gbc",$c3a40,$c4000 - $c3a40 ; 0xc3a40
SECTION "bank31", ROMX, BANK[$31]
INCBIN "baserom.gbc",$c4000,$c5800 - $c4000 ; 0xc4000
TitlescreenTilemap: ; 0xc5800
INCBIN "gfx/tilemaps/titlescreen.map"
INCBIN "baserom.gbc",$c5c00,$c6000 - $c5c00 ; 0xc4000
CopyrightScreenTilemap: ; 0xc6000
INCBIN "gfx/tilemaps/copyright_screen.map"
INCBIN "baserom.gbc",$c6400,$c8000 - $c6400 ; 0xc6400
SECTION "bank32", ROMX, BANK[$32]
INCBIN "baserom.gbc",$c8000,$cc000 - $c8000 ; 0xc8000
SECTION "bank33", ROMX, BANK[$33]
INCBIN "baserom.gbc",$cc000,$d0000 - $cc000 ; 0xcc000
SECTION "bank34", ROMX, BANK[$34]
INCBIN "baserom.gbc",$d0000,$d4000 - $d0000 ; 0xd0000
SECTION "bank35", ROMX, BANK[$35]
INCBIN "baserom.gbc",$d4000,$d6000 - $d4000
Alphabet1Gfx: ; 0xd6000
INCBIN "gfx/stage/alphabet_1.2bpp"
INCBIN "baserom.gbc",$d61a0,$d6200 - $d61a0
Alphabet2Gfx: ; 0xd6200
INCBIN "gfx/stage/alphabet_2.2bpp"
INCBIN "baserom.gbc",$d63a0,$d6450 - $d63a0
InGameMenuSymbolsGfx: ; 0xd6450
INCBIN "gfx/stage/menu_symbols.2bpp"
INCBIN "baserom.gbc",$d6490,$d6c00 - $d6490
StageRedJapaneseCharactersGfx: ; 0xd6c00
INCBIN "gfx/stage/red_bottom/japanese_characters.2bpp"
StageRedJapaneseCharactersGfx2: ; 0xd7000
INCBIN "gfx/stage/red_bottom/japanese_characters_2.2bpp"
NidorinoBillboardBGPaletteMap: ; 0xd7200
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
NidokingBillboardBGPaletteMap: ; 0xd7218
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
ClefairyBillboardBGPaletteMap: ; 0xd7230
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
ClefableBillboardBGPaletteMap: ; 0xd7248
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
VulpixBillboardBGPaletteMap: ; 0xd7260
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
NinetalesBillboardBGPaletteMap: ; 0xd7278
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
JigglypuffBillboardBGPaletteMap: ; 0xd7290
db $6, $6, $6, $6, $6, $6
db $6, $7, $7, $7, $7, $6
db $6, $7, $7, $7, $7, $6
db $6, $6, $6, $6, $6, $6
WigglytuffBillboardBGPaletteMap: ; 0xd72a8
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $7, $6, $6
db $6, $7, $6, $7, $6, $6
db $6, $6, $6, $6, $6, $6
ZubatBillboardBGPaletteMap: ; 0xd72c0
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
GolbatBillboardBGPaletteMap: ; 0xd72d8
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
OddishBillboardBGPaletteMap: ; 0xd72f0
db $6, $6, $6, $6, $6, $6
db $6, $6, $7, $7, $6, $6
db $6, $7, $7, $7, $7, $6
db $6, $7, $7, $7, $7, $6
GloomBillboardBGPaletteMap: ; 0xd7308
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $7, $7, $7, $7, $6
db $7, $7, $7, $7, $7, $7
VileplumeBillboardBGPaletteMap: ; 0xd7320
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $7, $7, $7, $7, $6
db $6, $6, $7, $7, $7, $6
ParasBillboardBGPaletteMap: ; 0xd7338
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
ParasectBillboardBGPaletteMap: ; 0xd7350
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
VenonatBillboardBGPaletteMap: ; 0xd7368
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
INCBIN "baserom.gbc",$d7380,$d7600 - $d7380
VenomothBillboardBGPaletteMap: ; 0xd7600
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
DiglettBillboardBGPaletteMap: ; 0xd7618
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $7, $7, $6, $6
db $6, $6, $7, $7, $6, $6
DugtrioBillboardBGPaletteMap: ; 0xd7630
db $6, $6, $6, $6, $6, $6
db $6, $6, $7, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
MeowthBillboardBGPaletteMap: ; 0xd7648
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $7, $7, $6, $6
PersianBillboardBGPaletteMap: ; 0xd7660
db $6, $6, $6, $6, $6, $6
db $7, $7, $7, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
PsyduckBillboardBGPaletteMap: ; 0xd7678
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
GolduckBillboardBGPaletteMap: ; 0xd7690
db $6, $7, $7, $7, $6, $6
db $6, $7, $7, $7, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
MankeyBillboardBGPaletteMap: ; 0xd76a8
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
PrimeapeBillboardBGPaletteMap: ; 0xd76c0
db $6, $6, $6, $6, $6, $6
db $7, $6, $6, $6, $6, $7
db $7, $6, $6, $6, $6, $7
db $6, $6, $6, $6, $6, $6
GrowlitheBillboardBGPaletteMap: ; 0xd76d8
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $7, $7, $6, $6, $6
ArcanineBillboardBGPaletteMap: ; 0xd76f0
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
PoliwagBillboardBGPaletteMap: ; 0xd7708
db $6, $6, $6, $6, $6, $6
db $6, $6, $7, $6, $6, $6
db $6, $6, $7, $6, $6, $6
db $6, $6, $6, $6, $6, $6
PoliwhirlBillboardBGPaletteMap: ; 0xd7720
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
PoliwrathBillboardBGPaletteMap: ; 0xd7738
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
AbraBillboardBGPaletteMap: ; 0xd7750
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
KadabraBillboardBGPaletteMap: ; 0xd7768
db $6, $6, $6, $6, $6, $6
db $6, $7, $6, $6, $6, $6
db $6, $7, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
INCBIN "baserom.gbc",$d7780,$d7a00 - $d7780
AlakazamBillboardBGPaletteMap: ; 0xd7a00
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $7, $6, $6, $7, $6
db $6, $6, $6, $6, $6, $6
MachopBillboardBGPaletteMap: ; 0xd7a18
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $7
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
MachokeBillboardBGPaletteMap: ; 0xd7a30
db $6, $6, $6, $6, $6, $6
db $6, $6, $7, $7, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
MachampBillboardBGPaletteMap: ; 0xd7a48
db $6, $6, $6, $6, $6, $6
db $6, $6, $7, $7, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
BellsproutBillboardBGPaletteMap: ; 0xd7a60
db $6, $6, $6, $6, $7, $7
db $6, $7, $7, $6, $7, $7
db $6, $7, $7, $6, $6, $7
db $6, $6, $6, $6, $7, $7
WeepinbellBillboardBGPaletteMap: ; 0xd7a78
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $7, $7, $7, $6, $6, $6
db $7, $7, $7, $6, $6, $6
VictreebellBillboardBGPaletteMap: ; 0xd7a90
db $6, $6, $6, $6, $6, $6
db $6, $6, $7, $6, $6, $6
db $6, $6, $7, $7, $7, $7
db $6, $6, $6, $6, $6, $6
TentacoolBillboardBGPaletteMap: ; 0xd7aa8
db $6, $7, $6, $6, $7, $6
db $6, $6, $7, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
TentacruelBillboardBGPaletteMap: ; 0xd7ac0
db $6, $6, $7, $6, $7, $6
db $6, $6, $6, $7, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
GeodudeBillboardBGPaletteMap: ; 0xd7ad8
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
GravelerBillboardBGPaletteMap: ; 0xd7af0
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
GolemBillboardBGPaletteMap: ; 0xd7b08
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $7, $7, $6, $6, $6
db $6, $7, $7, $6, $6, $6
PonytaBillboardBGPaletteMap: ; 0xd7b20
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $6, $6, $7
db $6, $6, $6, $6, $6, $7
db $6, $6, $6, $6, $6, $6
RapidashBillboardBGPaletteMap: ; 0xd7b38
db $7, $7, $7, $7, $7, $6
db $7, $7, $7, $6, $7, $6
db $7, $7, $6, $6, $6, $6
db $7, $7, $6, $6, $6, $6
SlowpokeBillboardBGPaletteMap: ; 0xd7b50
db $6, $6, $6, $6, $6, $6
db $7, $7, $7, $7, $6, $6
db $7, $7, $7, $7, $6, $6
db $7, $7, $7, $7, $6, $6
SlowbroBillboardBGPaletteMap: ; 0xd7b68
db $7, $7, $7, $7, $7, $7
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
INCBIN "baserom.gbc",$d7b80,$d8000 - $d7b80
SECTION "bank36", ROMX, BANK[$36]
INCBIN "baserom.gbc",$d8000,$d8400 - $d8000
MagnemiteBillboardBGPaletteMap: ; 0xd8400
db $7, $7, $6, $6, $6, $6
db $7, $7, $6, $6, $6, $7
db $6, $6, $6, $6, $6, $7
db $6, $6, $6, $6, $6, $6
MagnetonBillboardBGPaletteMap: ; 0xd8418
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
FarfetchdBillboardBGPaletteMap: ; 0xd8430
db $6, $6, $6, $6, $7, $7
db $6, $6, $6, $6, $7, $7
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
DoduoBillboardBGPaletteMap: ; 0xd8448
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
DodrioBillboardBGPaletteMap: ; 0xd8460
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
SeelBillboardBGPaletteMap: ; 0xd8478
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $7, $7, $6
db $6, $6, $7, $7, $7, $6
DewgongBillboardBGPaletteMap: ; 0xd8490
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
GrimerBillboardBGPaletteMap: ; 0xd84a8
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
MukBillboardBGPaletteMap: ; 0xd84c0
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
ShellderBillboardBGPaletteMap: ; 0xd84d8
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $7, $7, $7, $6, $6
CloysterBillboardBGPaletteMap: ; 0xd84f0
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
GastlyBillboardBGPaletteMap: ; 0xd8508
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $7, $7, $6, $6, $6
db $6, $6, $6, $6, $6, $6
HaunterBillboardBGPaletteMap: ; 0xd8520
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $7, $7, $7, $6, $6
db $6, $6, $6, $6, $6, $6
GengarBillboardBGPaletteMap: ; 0xd8538
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $7, $6, $7, $6
db $6, $6, $6, $6, $6, $6
OnixBillboardBGPaletteMap: ; 0xd8550
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
DrowzeeBillboardBGPaletteMap: ; 0xd8568
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
INCBIN "baserom.gbc",$d8580,$d8800 - $d8580
HypnoBillboardBGPaletteMap: ; 0xd8800
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $7, $7
db $7, $6, $6, $6, $7, $7
db $7, $6, $6, $6, $7, $7
KrabbyBillboardBGPaletteMap: ; 0xd8818
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
KinglerBillboardBGPaletteMap: ; 0xd8830
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
VoltorbBillboardBGPaletteMap: ; 0xd8848
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $7
db $6, $6, $6, $6, $7, $7
db $7, $6, $6, $7, $7, $7
ElectrodeBillboardBGPaletteMap: ; 0xd8860
db $6, $6, $6, $7, $7, $6
db $6, $6, $6, $7, $7, $7
db $6, $6, $6, $6, $7, $7
db $6, $6, $6, $6, $6, $6
ExeggcuteBillboardBGPaletteMap: ; 0xd8878
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
ExeggutorBillboardBGPaletteMap: ; 0xd8890
db $6, $6, $6, $6, $6, $6
db $6, $7, $7, $7, $7, $6
db $6, $7, $7, $7, $7, $6
db $6, $7, $7, $7, $7, $6
CuboneBillboardBGPaletteMap: ; 0xd88a8
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $7, $7, $7, $7, $7, $6
MarowakBillboardBGPaletteMap: ; 0xd88c0
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $7, $7
HitmonleeBillboardBGPaletteMap: ; 0xd88d8
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
HitmonchanBillboardBGPaletteMap: ; 0xd88f0
db $6, $6, $7, $7, $7, $7
db $6, $6, $6, $7, $7, $7
db $6, $6, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
LickitungBillboardBGPaletteMap: ; 0xd8908
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $7, $6, $6
KoffingBillboardBGPaletteMap: ; 0xd8920
db $6, $6, $6, $6, $6, $6
db $6, $6, $7, $7, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
WeezingBillboardBGPaletteMap: ; 0xd8938
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
RhyhornBillboardBGPaletteMap: ; 0xd8950
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
RhydonBillboardBGPaletteMap: ; 0xd8968
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
INCBIN "baserom.gbc",$d8980,$d8c00 - $d8980
SaverTextOffGfx: ; 0xd8c00
INCBIN "gfx/stage/saver_off.2bpp"
INCBIN "baserom.gbc",$d8c40,$d9400 - $d8c40
MagikarpBillboardBGPaletteMap: ; 0xd9400
db $6, $6, $6, $6, $6, $6
db $7, $7, $6, $6, $6, $6
db $7, $7, $6, $6, $6, $6
db $7, $7, $6, $6, $6, $6
GyaradosBillboardBGPaletteMap: ; 0xd9418
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $7, $7, $6, $6
db $6, $6, $7, $7, $6, $6
LaprasBillboardBGPaletteMap: ; 0xd9430
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
DittoBillboardBGPaletteMap: ; 0xd9448
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
EeveeBillboardBGPaletteMap: ; 0xd9460
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
VaporeonBillboardBGPaletteMap: ; 0xd9478
db $7, $7, $7, $6, $6, $6
db $7, $7, $6, $6, $7, $7
db $7, $7, $6, $6, $7, $7
db $6, $6, $6, $6, $6, $6
JolteonBillboardBGPaletteMap: ; 0xd9490
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
FlareonBillboardBGPaletteMap: ; 0xd94a8
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
PorygonBillboardBGPaletteMap: ; 0xd94c0
db $6, $6, $6, $6, $7, $6
db $6, $6, $7, $6, $6, $7
db $6, $7, $7, $6, $6, $7
db $6, $7, $7, $7, $6, $6
OmanyteBillboardBGPaletteMap: ; 0xd94d8
db $6, $7, $6, $6, $6, $6
db $6, $7, $6, $6, $6, $6
db $7, $7, $6, $6, $6, $6
db $7, $7, $6, $6, $6, $6
OmastarBillboardBGPaletteMap: ; 0xd94f0
db $6, $6, $6, $6, $7, $6
db $6, $6, $6, $6, $7, $7
db $6, $7, $7, $6, $6, $7
db $6, $6, $7, $6, $6, $7
KabutoBillboardBGPaletteMap: ; 0xd9508
db $6, $6, $6, $7, $7, $6
db $6, $6, $7, $7, $7, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
KabutopsBillboardBGPaletteMap: ; 0xd9520
db $7, $6, $6, $6, $6, $7
db $7, $6, $6, $6, $7, $7
db $7, $6, $6, $7, $6, $7
db $6, $6, $7, $7, $6, $6
AerodactylBillboardBGPaletteMap: ; 0xd9538
db $7, $7, $6, $6, $7, $7
db $7, $7, $6, $7, $7, $7
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
SnorlaxBillboardBGPaletteMap: ; 0xd9550
db $6, $6, $6, $6, $6, $6
db $6, $6, $7, $7, $6, $6
db $6, $6, $7, $6, $6, $6
db $6, $6, $6, $6, $6, $6
ArticunoBillboardBGPaletteMap: ; 0xd9568
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
INCBIN "baserom.gbc",$d9580,$d9800 - $d9580
ZapdosBillboardBGPaletteMap: ; 0xd9800
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
MoltresBillboardBGPaletteMap: ; 0xd9818
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
DratiniBillboardBGPaletteMap: ; 0xd9830
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
DragonairBillboardBGPaletteMap: ; 0xd9848
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
DragoniteBillboardBGPaletteMap: ; 0xd9860
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $7, $6, $6, $6, $6, $7
db $7, $7, $6, $6, $7, $7
MewtwoBillboardBGPaletteMap: ; 0xd9878
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $7, $7, $6, $6
db $6, $6, $6, $6, $6, $6
MewBillboardBGPaletteMap: ; 0xd9890
db $6, $6, $6, $6, $6, $6
db $6, $6, $7, $7, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
INCBIN "baserom.gbc",$d98a8,$da000 - $d98a8
CopyrightTextGfx: ; 0xda000
INCBIN "gfx/copyright_text.2bpp"
ChanseyBillboardBGPaletteMap: ; 0xda400
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
TangelaBillboardBGPaletteMap: ; 0xda418
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
KangaskhanBillboardBGPaletteMap: ; 0xda430
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
HorseaBillboardBGPaletteMap: ; 0xda448
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $7, $7
SeadraBillboardBGPaletteMap: ; 0xda460
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
GoldeenBillboardBGPaletteMap: ; 0xda478
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
SeakingBillboardBGPaletteMap: ; 0xda490
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
StaryuBillboardBGPaletteMap: ; 0xda4a8
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $7, $6, $6
db $6, $6, $6, $6, $6, $6
StarmieBillboardBGPaletteMap: ; 0xda4c0
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $7, $6, $6
db $6, $6, $6, $6, $6, $6
MrMimeBillboardBGPaletteMap: ; 0xda4d8
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
ScytherBillboardBGPaletteMap: ; 0xda4f0
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
JynxBillboardBGPaletteMap: ; 0xda508
db $6, $7, $7, $7, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $7, $6, $6, $6
ElectabuzzBillboardBGPaletteMap: ; 0xda520
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
MagmarBillboardBGPaletteMap: ; 0xda538
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
PinsirBillboardBGPaletteMap: ; 0xda550
db $6, $6, $6, $6, $6, $6
db $6, $6, $7, $6, $6, $6
db $6, $6, $7, $6, $6, $6
db $6, $6, $6, $6, $7, $7
TaurosBillboardBGPaletteMap: ; 0xda568
db $7, $7, $6, $6, $7, $7
db $7, $7, $6, $7, $7, $7
db $6, $7, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
INCBIN "baserom.gbc",$da580,$da800 - $da580
BulbasaurBillboardBGPaletteMap: ; 0xda800
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $6, $7, $7
db $7, $7, $7, $6, $6, $7
IvysaurBillboardBGPaletteMap: ; 0xda818
db $6, $7, $7, $7, $7, $7
db $7, $6, $6, $6, $6, $7
db $6, $6, $6, $7, $6, $7
db $6, $6, $6, $7, $7, $7
VenusaurBillboardBGPaletteMap: ; 0xda830
db $7, $7, $6, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $6, $6, $6, $6, $7
db $7, $7, $6, $6, $6, $7
CharmanderBillboardBGPaletteMap: ; 0xda848
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
CharmeleonBillboardBGPaletteMap: ; 0xda860
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
CharizardBillboardBGPaletteMap: ; 0xda878
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
SquirtleBillboardBGPaletteMap: ; 0xda890
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $6, $6, $7, $7
WartortleBillboardBGPaletteMap: ; 0xda8a8
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $6, $6, $7, $7
db $7, $6, $6, $6, $7, $7
BlastoiseBillboardBGPaletteMap: ; 0xda8c0
db $6, $6, $6, $6, $7, $7
db $6, $7, $7, $7, $7, $7
db $6, $6, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
CaterpieBillboardBGPaletteMap: ; 0xda8d8
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
db $6, $6, $6, $6, $6, $6
MetapodBillboardBGPaletteMap: ; 0xda8f0
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
ButterfreeBillboardBGPaletteMap: ; 0xda908
db $7, $7, $7, $7, $7, $7
db $7, $7, $6, $6, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
WeedleBillboardBGPaletteMap: ; 0xda920
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
KakunaBillboardBGPaletteMap: ; 0xda938
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
BeedrillBillboardBGPaletteMap: ; 0xda950
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
PidgeyBillboardBGPaletteMap: ; 0xda968
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
db $7, $7, $7, $7, $7, $7
INCBIN "baserom.gbc",$da980,$dac00 - $da980
StageRedFieldBottomGfx1: ; 0xdac00
INCBIN "gfx/stage/red_bottom/red_bottom_1.2bpp"
INCBIN "baserom.gbc",$dad60,$dade0 - $dad60
StageRedFieldBottomGfx3: ; 0xdade0
INCBIN "gfx/stage/red_bottom/red_bottom_3.2bpp"
StageRedFieldTopGfx5: ; 0xdae00
INCBIN "gfx/stage/red_top/red_top_5.2bpp"
INCBIN "baserom.gbc",$db000,$db200 - $db000
TimerDigitsGfx: ; 0xdb200
INCBIN "gfx/stage/timer_digits.2bpp"
INCBIN "baserom.gbc",$db360,$db780 - $db360
ZubatAnimatedObjPalette1: ; 0xdb780
RGB 31, 31, 31
RGB 15, 19, 31
RGB 14, 9, 21
RGB 0, 0, 0
ZubatAnimatedObjPalette2: ; 0xdb3788
RGB 31, 31, 31
RGB 15, 19, 31
RGB 14, 9, 21
RGB 0, 0, 0
OddishAnimatedObjPalette1: ; 0xdb790
RGB 31, 31, 31
RGB 27, 29, 5
RGB 5, 16, 0
RGB 0, 0, 0
OddishAnimatedObjPalette2: ; 0xdb798
RGB 31, 31, 31
RGB 27, 29, 5
RGB 5, 16, 0
RGB 0, 0, 0
ParasAnimatedObjPalette1: ; 0xdb7a0
RGB 31, 31, 31
RGB 31, 15, 1
RGB 22, 5, 2
RGB 0, 0, 0
ParasAnimatedObjPalette2: ; 0xdb7a8
RGB 31, 31, 31
RGB 31, 15, 1
RGB 22, 5, 2
RGB 0, 0, 0
VenonatAnimatedObjPalette1: ; 0xdb7b0
RGB 31, 31, 31
RGB 24, 15, 28
RGB 12, 5, 18
RGB 0, 0, 0
VenonatAnimatedObjPalette2: ; 0xdb7b8
RGB 31, 31, 31
RGB 24, 15, 28
RGB 12, 5, 18
RGB 0, 0, 0
DiglettAnimatedObjPalette1: ; 0xdb7c0
RGB 31, 31, 31
RGB 31, 18, 1
RGB 24, 9, 3
RGB 0, 0, 0
DiglettAnimatedObjPalette2: ; 0xdb7c8
RGB 31, 31, 31
RGB 31, 18, 1
RGB 24, 9, 3
RGB 0, 0, 0
MeowthAnimatedObjPalette1: ; 0xdb7d0
RGB 31, 31, 31
RGB 30, 25, 16
RGB 23, 12, 6
RGB 0, 0, 0
MeowthAnimatedObjPalette2: ; 0xdb7d8
RGB 31, 31, 31
RGB 30, 25, 16
RGB 23, 12, 6
RGB 0, 0, 0
PsyduckAnimatedObjPalette1: ; 0xdb7e0
RGB 31, 31, 31
RGB 31, 31, 0
RGB 19, 17, 0
RGB 0, 0, 0
PsyduckAnimatedObjPalette2: ; 0xdb7e8
RGB 31, 31, 31
RGB 31, 31, 0
RGB 19, 17, 0
RGB 0, 0, 0
MankeyAnimatedObjPalette1: ; 0xdb7f0
RGB 31, 31, 31
RGB 31, 21, 19
RGB 23, 8, 4
RGB 0, 0, 0
MankeyAnimatedObjPalette2: ; 0xdb7f8
RGB 31, 31, 31
RGB 31, 21, 19
RGB 23, 8, 4
RGB 0, 0, 0
GrowlitheAnimatedObjPalette1: ; 0xdb800
RGB 31, 31, 31
RGB 31, 18, 1
RGB 24, 9, 3
RGB 0, 0, 0
GrowlitheAnimatedObjPalette2: ; 0xdb808
RGB 31, 31, 31
RGB 31, 18, 1
RGB 24, 9, 3
RGB 0, 0, 0
PoliwagAnimatedObjPalette1: ; 0xdb810
RGB 31, 31, 31
RGB 17, 19, 23
RGB 9, 10, 12
RGB 0, 0, 0
PoliwagAnimatedObjPalette2: ; 0xdb818
RGB 31, 31, 31
RGB 17, 19, 23
RGB 9, 10, 12
RGB 0, 0, 0
AbraAnimatedObjPalette1: ; 0xdb820
RGB 31, 31, 31
RGB 30, 24, 0
RGB 17, 10, 4
RGB 0, 0, 0
AbraAnimatedObjPalette2: ; 0xdb828
RGB 31, 31, 31
RGB 30, 24, 0
RGB 17, 10, 4
RGB 0, 0, 0
MachopAnimatedObjPalette1: ; 0xdb830
RGB 31, 31, 31
RGB 17, 19, 23
RGB 9, 10, 12
RGB 0, 0, 0
MachopAnimatedObjPalette2: ; 0xdb838
RGB 31, 31, 31
RGB 17, 19, 23
RGB 9, 10, 12
RGB 0, 0, 0
BellsproutAnimatedObjPalette1: ; 0xdb840
RGB 31, 31, 31
RGB 29, 26, 5
RGB 5, 16, 0
RGB 0, 0, 0
BellsproutAnimatedObjPalette2: ; 0xdb848
RGB 31, 31, 31
RGB 29, 26, 5
RGB 5, 16, 0
RGB 0, 0, 0
TentacoolAnimatedObjPalette1: ; 0xdb850
RGB 31, 31, 31
RGB 16, 22, 31
RGB 0, 11, 22
RGB 0, 0, 0
TentacoolAnimatedObjPalette2: ; 0xdb858
RGB 31, 31, 31
RGB 16, 22, 31
RGB 0, 11, 22
RGB 0, 0, 0
GeodudeAnimatedObjPalette1: ; 0xdb860
RGB 31, 31, 31
RGB 19, 23, 20
RGB 8, 11, 7
RGB 0, 0, 0
GeodudeAnimatedObjPalette2: ; 0xdb868
RGB 31, 31, 31
RGB 19, 23, 20
RGB 8, 11, 7
RGB 0, 0, 0
PonytaAnimatedObjPalette1: ; 0xdb870
RGB 31, 31, 31
RGB 31, 28, 11
RGB 31, 6, 0
RGB 0, 0, 0
PonytaAnimatedObjPalette2: ; 0xdb878
RGB 31, 31, 31
RGB 31, 28, 11
RGB 31, 6, 0
RGB 0, 0, 0
SlowpokeAnimatedObjPalette1: ; 0xdb880
RGB 31, 31, 31
RGB 31, 18, 16
RGB 31, 11, 9
RGB 0, 0, 0
SlowpokeAnimatedObjPalette2: ; 0xdb888
RGB 31, 31, 31
RGB 31, 18, 16
RGB 31, 11, 9
RGB 0, 0, 0
MagnemiteAnimatedObjPalette1: ; 0xdb890
RGB 31, 31, 31
RGB 17, 19, 23
RGB 9, 10, 12
RGB 0, 0, 0
MagnemiteAnimatedObjPalette2: ; 0xdb898
RGB 31, 31, 31
RGB 17, 19, 23
RGB 9, 10, 12
RGB 0, 0, 0
FarfetchdAnimatedObjPalette1: ; 0xdb8a0
RGB 31, 31, 31
RGB 31, 22, 5
RGB 19, 11, 4
RGB 0, 0, 0
FarfetchdAnimatedObjPalette2: ; 0xdb8a8
RGB 31, 31, 31
RGB 31, 22, 5
RGB 19, 11, 4
RGB 0, 0, 0
DoduoAnimatedObjPalette1: ; 0xdb8b0
RGB 31, 31, 31
RGB 30, 20, 5
RGB 22, 5, 2
RGB 0, 0, 0
DoduoAnimatedObjPalette2: ; 0xdb8b8
RGB 31, 31, 31
RGB 30, 20, 5
RGB 22, 5, 2
RGB 0, 0, 0
SeelAnimatedObjPalette1: ; 0xdb8c0
RGB 31, 31, 31
RGB 20, 24, 29
RGB 8, 11, 20
RGB 0, 0, 0
SeelAnimatedObjPalette2: ; 0xdb8c8
RGB 31, 31, 31
RGB 20, 24, 29
RGB 8, 11, 20
RGB 0, 0, 0
GrimerAnimatedObjPalette1: ; 0xdb8d0
RGB 31, 31, 31
RGB 27, 15, 31
RGB 16, 7, 19
RGB 0, 0, 0
GrimerAnimatedObjPalette2: ; 0xdb8d8
RGB 31, 31, 31
RGB 27, 15, 31
RGB 16, 7, 19
RGB 0, 0, 0
ShellderAnimatedObjPalette1: ; 0xdb8e0
RGB 31, 31, 31
RGB 26, 19, 29
RGB 15, 11, 17
RGB 0, 0, 0
ShellderAnimatedObjPalette2: ; 0xdb8e8
RGB 31, 31, 31
RGB 26, 19, 29
RGB 15, 11, 17
RGB 0, 0, 0
GastlyAnimatedObjPalette1: ; 0xdb8f0
RGB 31, 31, 31
RGB 25, 17, 28
RGB 12, 7, 15
RGB 0, 0, 0
GastlyAnimatedObjPalette2: ; 0xdb8f8
RGB 31, 31, 31
RGB 31, 23, 17
RGB 23, 8, 4
RGB 0, 0, 0
OnixAnimatedObjPalette1: ; 0xdb900
RGB 31, 31, 31
RGB 17, 19, 23
RGB 9, 10, 12
RGB 0, 0, 0
OnixAnimatedObjPalette2: ; 0xdb908
RGB 31, 31, 31
RGB 17, 19, 23
RGB 9, 10, 12
RGB 0, 0, 0
DrowzeeAnimatedObjPalette1: ; 0xdb910
RGB 31, 31, 31
RGB 30, 24, 0
RGB 17, 10, 4
RGB 0, 0, 0
DrowzeeAnimatedObjPalette2: ; 0xdb918
RGB 31, 31, 31
RGB 30, 24, 0
RGB 17, 10, 4
RGB 0, 0, 0
KrabbyAnimatedObjPalette1: ; 0xdb920
RGB 31, 31, 31
RGB 31, 20, 8
RGB 28, 6, 0
RGB 0, 0, 0
KrabbyAnimatedObjPalette2: ; 0xdb928
RGB 31, 31, 31
RGB 31, 20, 8
RGB 28, 6, 0
RGB 0, 0, 0
VoltorbAnimatedObjPalette1: ; 0xdb930
RGB 31, 31, 31
RGB 31, 17, 14
RGB 31, 0, 0
RGB 0, 0, 0
VoltorbAnimatedObjPalette2: ; 0xdb938
RGB 31, 31, 31
RGB 31, 17, 14
RGB 31, 0, 0
RGB 0, 0, 0
ExeggcuteAnimatedObjPalette1: ; 0xdb940
RGB 31, 31, 31
RGB 31, 17, 16
RGB 20, 8, 5
RGB 0, 0, 0
ExeggcuteAnimatedObjPalette2: ; 0xdb948
RGB 31, 31, 31
RGB 31, 17, 16
RGB 20, 8, 5
RGB 0, 0, 0
CuboneAnimatedObjPalette1: ; 0xdb950
RGB 31, 31, 31
RGB 30, 15, 5
RGB 18, 9, 4
RGB 0, 0, 0
CuboneAnimatedObjPalette2: ; 0xdb958
RGB 31, 31, 31
RGB 20, 22, 29
RGB 13, 8, 6
RGB 0, 0, 0
HitmonleeAnimatedObjPalette1: ; 0xdb960
RGB 31, 31, 31
RGB 26, 13, 7
RGB 16, 10, 7
RGB 0, 0, 0
HitmonleeAnimatedObjPalette2: ; 0xdb968
RGB 31, 31, 31
RGB 26, 13, 7
RGB 16, 10, 7
RGB 0, 0, 0
HitmonchanAnimatedObjPalette1: ; 0xdb970
RGB 31, 31, 31
RGB 27, 17, 10
RGB 24, 4, 2
RGB 0, 0, 0
HitmonchanAnimatedObjPalette2: ; 0xdb978
RGB 31, 31, 31
RGB 27, 17, 10
RGB 24, 4, 2
RGB 0, 0, 0
LickitungAnimatedObjPalette1: ; 0xdb980
RGB 31, 31, 31
RGB 31, 18, 16
RGB 31, 11, 9
RGB 0, 0, 0
LickitungAnimatedObjPalette2: ; 0xdb988
RGB 31, 31, 31
RGB 31, 18, 16
RGB 31, 11, 9
RGB 0, 0, 0
KoffingAnimatedObjPalette1: ; 0xdb990
RGB 31, 31, 31
RGB 26, 19, 29
RGB 15, 11, 17
RGB 0, 0, 0
KoffingAnimatedObjPalette2: ; 0xdb998
RGB 31, 31, 31
RGB 26, 19, 29
RGB 15, 11, 17
RGB 0, 0, 0
RhyhornAnimatedObjPalette1: ; 0xdb9a0
RGB 31, 31, 31
RGB 26, 13, 24
RGB 15, 4, 14
RGB 0, 0, 0
RhyhornAnimatedObjPalette2: ; 0xdb9a8
RGB 31, 31, 31
RGB 26, 13, 24
RGB 15, 4, 14
RGB 0, 0, 0
ChanseyAnimatedObjPalette1: ; 0xdb9b0
RGB 31, 31, 31
RGB 31, 18, 16
RGB 31, 11, 9
RGB 0, 0, 0
ChanseyAnimatedObjPalette2: ; 0xdb9b8
RGB 31, 31, 31
RGB 31, 18, 16
RGB 31, 11, 9
RGB 0, 0, 0
TangelaAnimatedObjPalette1: ; 0xdb9c0
RGB 31, 31, 31
RGB 13, 19, 31
RGB 1, 6, 20
RGB 0, 0, 0
TangelaAnimatedObjPalette2: ; 0xdb9c8
RGB 31, 31, 31
RGB 13, 19, 31
RGB 1, 6, 20
RGB 0, 0, 0
KangaskhanAnimatedObjPalette1: ; 0xdb9d0
RGB 31, 31, 31
RGB 28, 21, 11
RGB 16, 10, 5
RGB 0, 0, 0
KangaskhanAnimatedObjPalette2: ; 0xdb9d8
RGB 31, 31, 31
RGB 28, 21, 11
RGB 16, 10, 5
RGB 0, 0, 0
HorseaAnimatedObjPalette1: ; 0xdb9e0
RGB 31, 31, 31
RGB 13, 19, 31
RGB 1, 6, 20
RGB 0, 0, 0
HorseaAnimatedObjPalette2: ; 0xdb9e8
RGB 31, 31, 31
RGB 13, 19, 31
RGB 1, 6, 20
RGB 0, 0, 0
GoldeenAnimatedObjPalette1: ; 0xdb9f0
RGB 31, 31, 31
RGB 31, 18, 16
RGB 29, 0, 0
RGB 0, 0, 0
GoldeenAnimatedObjPalette2: ; 0xdb9f8
RGB 31, 31, 31
RGB 31, 18, 16
RGB 29, 0, 0
RGB 0, 0, 0
StaryuAnimatedObjPalette1: ; 0xdba00
RGB 31, 31, 31
RGB 31, 22, 5
RGB 19, 7, 1
RGB 0, 0, 0
StaryuAnimatedObjPalette2: ; 0xdba08
RGB 31, 31, 31
RGB 31, 22, 5
RGB 19, 7, 1
RGB 0, 0, 0
MrMimeAnimatedObjPalette1: ; 0xdba10
RGB 31, 31, 31
RGB 31, 18, 16
RGB 29, 0, 0
RGB 0, 0, 0
MrMimeAnimatedObjPalette2: ; 0xdba18
RGB 31, 31, 31
RGB 31, 18, 16
RGB 29, 0, 0
RGB 0, 0, 0
ScytherAnimatedObjPalette1: ; 0xdba20
RGB 31, 31, 31
RGB 22, 29, 5
RGB 6, 17, 1
RGB 0, 0, 0
ScytherAnimatedObjPalette2: ; 0xdba28
RGB 31, 31, 31
RGB 22, 29, 5
RGB 6, 17, 1
RGB 0, 0, 0
JynxAnimatedObjPalette1: ; 0xdba30
RGB 31, 31, 31
RGB 31, 16, 16
RGB 25, 1, 3
RGB 0, 0, 0
JynxAnimatedObjPalette2: ; 0xdba38
RGB 31, 31, 31
RGB 31, 16, 16
RGB 25, 1, 3
RGB 0, 0, 0
ElectabuzzAnimatedObjPalette1: ; 0xdba40
RGB 31, 31, 31
RGB 31, 30, 0
RGB 21, 14, 1
RGB 0, 0, 0
ElectabuzzAnimatedObjPalette2: ; 0xdba48
RGB 31, 31, 31
RGB 31, 30, 0
RGB 21, 14, 1
RGB 0, 0, 0
MagmarAnimatedObjPalette1: ; 0xdba50
RGB 31, 31, 31
RGB 31, 23, 2
RGB 31, 3, 0
RGB 0, 0, 0
MagmarAnimatedObjPalette2: ; 0xdba58
RGB 31, 31, 31
RGB 31, 23, 2
RGB 31, 3, 0
RGB 0, 0, 0
PinsirAnimatedObjPalette1: ; 0xdba60
RGB 31, 31, 31
RGB 28, 20, 13
RGB 17, 12, 6
RGB 0, 0, 0
PinsirAnimatedObjPalette2: ; 0xdba68
RGB 31, 31, 31
RGB 28, 20, 13
RGB 17, 12, 6
RGB 0, 0, 0
TaurosAnimatedObjPalette1: ; 0xdba70
RGB 31, 31, 31
RGB 31, 21, 5
RGB 20, 9, 3
RGB 0, 0, 0
TaurosAnimatedObjPalette2: ; 0xdba78
RGB 31, 31, 31
RGB 31, 21, 5
RGB 20, 9, 3
RGB 0, 0, 0
PidgeottoBillboardBGPalette1: ; 0xdba80
RGB 31, 31, 31
RGB 30, 21, 0
RGB 28, 6, 1
RGB 3, 2, 0
PidgeottoBillboardBGPalette2: ; 0xdba88
RGB 31, 31, 31
RGB 30, 21, 0
RGB 28, 6, 1
RGB 3, 2, 0
PidgeotBillboardBGPalette1: ; 0xdba90
RGB 31, 31, 31
RGB 26, 23, 0
RGB 28, 6, 1
RGB 3, 2, 0
PidgeotBillboardBGPalette2: ; 0xdba98
RGB 31, 31, 31
RGB 26, 23, 0
RGB 28, 6, 1
RGB 3, 2, 0
RattataBillboardBGPalette1: ; 0xdbaa0
RGB 31, 31, 31
RGB 30, 16, 24
RGB 21, 4, 7
RGB 0, 0, 0
RattataBillboardBGPalette2: ; 0xdbaa8
RGB 31, 31, 31
RGB 30, 16, 24
RGB 21, 4, 7
RGB 0, 0, 0
RaticateBillboardBGPalette1: ; 0xdbab0
RGB 31, 31, 31
RGB 30, 24, 7
RGB 27, 7, 0
RGB 3, 2, 0
RaticateBillboardBGPalette2: ; 0xdbab8
RGB 31, 31, 31
RGB 30, 24, 7
RGB 27, 7, 0
RGB 3, 2, 0
SpearowBillboardBGPalette1: ; 0xdbac0
RGB 31, 31, 31
RGB 31, 24, 2
RGB 30, 3, 0
RGB 0, 0, 0
SpearowBillboardBGPalette2: ; 0xdbac8
RGB 31, 31, 31
RGB 31, 24, 2
RGB 30, 3, 0
RGB 0, 0, 0
FearowBillboardBGPalette1: ; 0xdbad0
RGB 31, 31, 31
RGB 31, 24, 2
RGB 30, 3, 0
RGB 0, 0, 0
FearowBillboardBGPalette2: ; 0xdbad8
RGB 31, 31, 31
RGB 31, 24, 2
RGB 30, 3, 0
RGB 0, 0, 0
EkansBillboardBGPalette1: ; 0xdbae0
RGB 31, 31, 31
RGB 30, 16, 24
RGB 21, 4, 7
RGB 0, 0, 0
EkansBillboardBGPalette2: ; 0xdbae8
RGB 31, 31, 31
RGB 30, 16, 24
RGB 21, 4, 7
RGB 0, 0, 0
ArbokBillboardBGPalette1: ; 0xdbaf0
RGB 31, 31, 31
RGB 30, 16, 24
RGB 26, 1, 5
RGB 0, 0, 0
ArbokBillboardBGPalette2: ; 0xdbaf8
RGB 31, 31, 31
RGB 30, 16, 24
RGB 26, 1, 5
RGB 0, 0, 0
PikachuBillboardBGPalette1: ; 0xdbb00
RGB 31, 31, 31
RGB 30, 24, 4
RGB 27, 7, 0
RGB 3, 2, 0
PikachuBillboardBGPalette2: ; 0xdbb08
RGB 31, 31, 31
RGB 30, 24, 4
RGB 27, 7, 0
RGB 3, 2, 0
RaichuBillboardBGPalette1: ; 0xdbb10
RGB 31, 31, 31
RGB 30, 26, 3
RGB 29, 16, 0
RGB 3, 2, 0
RaichuBillboardBGPalette2: ; 0xdbb18
RGB 31, 31, 31
RGB 30, 26, 3
RGB 29, 16, 0
RGB 3, 2, 0
SandshrewBillboardBGPalette1: ; 0xdbb20
RGB 31, 31, 31
RGB 31, 25, 7
RGB 23, 14, 0
RGB 0, 0, 0
SandshrewBillboardBGPalette2: ; 0xdbb28
RGB 31, 31, 31
RGB 31, 25, 7
RGB 23, 14, 0
RGB 0, 0, 0
SandslashBillboardBGPalette1: ; 0xdbb30
RGB 31, 31, 31
RGB 31, 25, 7
RGB 25, 10, 0
RGB 3, 2, 0
SandslashBillboardBGPalette2: ; 0xdbb38
RGB 31, 31, 31
RGB 31, 25, 7
RGB 25, 10, 0
RGB 3, 2, 0
NidoranFBillboardBGPalette1: ; 0xdbb40
RGB 31, 31, 31
RGB 19, 23, 31
RGB 8, 8, 24
RGB 0, 0, 0
NidoranFBillboardBGPalette2: ; 0xdbb48
RGB 31, 31, 31
RGB 19, 23, 31
RGB 8, 8, 24
RGB 0, 0, 0
NidorinaBillboardBGPalette1: ; 0xdbb50
RGB 31, 31, 31
RGB 19, 23, 31
RGB 8, 8, 24
RGB 0, 0, 0
NidorinaBillboardBGPalette2: ; 0xdbb58
RGB 31, 31, 31
RGB 19, 23, 31
RGB 8, 8, 24
RGB 0, 0, 0
NidoqueenBillboardBGPalette1: ; 0xdbb60
RGB 31, 31, 31
RGB 10, 18, 31
RGB 6, 5, 23
RGB 0, 0, 0
NidoqueenBillboardBGPalette2: ; 0xdbb68
RGB 31, 31, 31
RGB 10, 18, 31
RGB 6, 5, 23
RGB 0, 0, 0
NidoranMBillboardBGPalette1: ; 0xdbb70
RGB 31, 31, 31
RGB 28, 16, 25
RGB 17, 1, 12
RGB 0, 0, 0
NidoranMBillboardBGPalette2: ; 0xdbb78
RGB 31, 31, 31
RGB 28, 16, 25
RGB 17, 1, 12
RGB 0, 0, 0
StageRedFieldTopGfx6: ; 0xdbb80
INCBIN "gfx/stage/red_top/red_top_6.2bpp"
INCBIN "baserom.gbc",$dbbc0,$dbd80 - $dbbc0
MagikarpAnimatedObjPalette1: ; 0xdbd80
RGB 31, 31, 31
RGB 31, 16, 10
RGB 28, 6, 0
RGB 0, 0, 0
MagikarpAnimatedObjPalette2: ; 0xdbd88
RGB 31, 31, 31
RGB 31, 16, 10
RGB 28, 6, 0
RGB 0, 0, 0
LaprasAnimatedObjPalette1: ; 0xdbd90
RGB 31, 31, 31
RGB 11, 22, 31
RGB 0, 10, 30
RGB 0, 0, 0
LaprasAnimatedObjPalette2: ; 0xdbd98
RGB 31, 31, 31
RGB 11, 22, 31
RGB 0, 10, 30
RGB 0, 0, 0
DittoAnimatedObjPalette1: ; 0xdbda0
RGB 31, 31, 31
RGB 25, 18, 28
RGB 15, 7, 16
RGB 0, 0, 0
DittoAnimatedObjPalette2: ; 0xdbda8
RGB 31, 31, 31
RGB 25, 18, 28
RGB 15, 7, 16
RGB 0, 0, 0
EeveeAnimatedObjPalette1: ; 0xdbdb0
RGB 31, 31, 31
RGB 29, 20, 10
RGB 17, 9, 4
RGB 0, 0, 0
EeveeAnimatedObjPalette2: ; 0xdbdb8
RGB 31, 31, 31
RGB 29, 20, 10
RGB 17, 9, 4
RGB 0, 0, 0
PorygonAnimatedObjPalette1: ; 0xdbdc0
RGB 31, 31, 31
RGB 29, 8, 20
RGB 0, 0, 31
RGB 0, 0, 0
PorygonAnimatedObjPalette2: ; 0xdbdc8
RGB 31, 31, 31
RGB 29, 8, 20
RGB 0, 0, 31
RGB 0, 0, 0
OmanyteAnimatedObjPalette1: ; 0xdbdd0
RGB 31, 31, 31
RGB 13, 18, 31
RGB 1, 6, 20
RGB 0, 0, 0
OmanyteAnimatedObjPalette2: ; 0xdbdd8
RGB 31, 31, 31
RGB 13, 18, 31
RGB 1, 6, 20
RGB 0, 0, 0
KabutoAnimatedObjPalette1: ; 0xdbde0
RGB 31, 31, 31
RGB 29, 21, 6
RGB 20, 7, 1
RGB 0, 0, 0
KabutoAnimatedObjPalette2: ; 0xdbde8
RGB 31, 31, 31
RGB 29, 21, 6
RGB 20, 7, 1
RGB 0, 0, 0
AerodactylAnimatedObjPalette1: ; 0xdbdf0
RGB 31, 31, 31
RGB 25, 20, 29
RGB 10, 8, 17
RGB 0, 0, 0
AerodactylAnimatedObjPalette2: ; 0xdbdf8
RGB 31, 31, 31
RGB 25, 20, 29
RGB 10, 8, 17
RGB 0, 0, 0
SnorlaxAnimatedObjPalette1: ; 0xdbe00
RGB 31, 31, 31
RGB 31, 25, 9
RGB 17, 7, 2
RGB 0, 0, 0
SnorlaxAnimatedObjPalette2: ; 0xdbe08
RGB 31, 31, 31
RGB 31, 25, 9
RGB 17, 7, 2
RGB 0, 0, 0
ArticunoAnimatedObjPalette1: ; 0xdbe10
RGB 31, 31, 31
RGB 11, 22, 31
RGB 0, 4, 31
RGB 0, 0, 0
ArticunoAnimatedObjPalette2: ; 0xdbe18
RGB 31, 31, 31
RGB 11, 22, 31
RGB 0, 4, 31
RGB 0, 0, 0
ZapdosAnimatedObjPalette1: ; 0xdbe20
RGB 31, 31, 31
RGB 31, 29, 0
RGB 22, 7, 3
RGB 0, 0, 0
ZapdosAnimatedObjPalette2: ; 0xdbe28
RGB 31, 31, 31
RGB 31, 29, 0
RGB 22, 7, 3
RGB 0, 0, 0
MoltresAnimatedObjPalette1: ; 0xdbe30
RGB 31, 31, 31
RGB 31, 26, 0
RGB 31, 3, 0
RGB 0, 0, 0
MoltresAnimatedObjPalette2: ; 0xdbe38
RGB 31, 31, 31
RGB 31, 26, 0
RGB 31, 3, 0
RGB 0, 0, 0
DratiniAnimatedObjPalette1: ; 0xdbe40
RGB 31, 31, 31
RGB 20, 22, 31
RGB 6, 8, 18
RGB 0, 0, 0
DratiniAnimatedObjPalette2: ; 0xdbe48
RGB 31, 31, 31
RGB 20, 22, 31
RGB 6, 8, 18
RGB 0, 0, 0
MewtwoAnimatedObjPalette1: ; 0xdbe50
RGB 31, 31, 31
RGB 31, 19, 27
RGB 23, 8, 17
RGB 0, 0, 0
MewtwoAnimatedObjPalette2: ; 0xdbe58
RGB 31, 31, 31
RGB 31, 19, 27
RGB 23, 8, 17
RGB 0, 0, 0
MewAnimatedObjPalette1: ; 0xdbe60
RGB 31, 31, 31
RGB 31, 19, 27
RGB 23, 8, 17
RGB 0, 0, 0
MewAnimatedObjPalette2: ; 0xdbe68
RGB 31, 31, 31
RGB 31, 19, 27
RGB 23, 8, 17
RGB 0, 0, 0
INCBIN "baserom.gbc",$dbe70,$dc000 - $dbe70
SECTION "bank37", ROMX, BANK[$37]
StageRedFieldBottomGfx2: ; 0xdc000
INCBIN "gfx/stage/red_bottom/red_bottom_2.2bpp"
INCBIN "baserom.gbc",$dc080,$dc100 - $dc080
NidorinoBillboardBGPalette1: ; 0xdc100
RGB 31, 31, 31
RGB 31, 15, 24
RGB 21, 3, 15
RGB 0, 0, 0
NidorinoBillboardBGPalette2: ; 0xdc108
RGB 31, 31, 31
RGB 31, 15, 24
RGB 21, 3, 15
RGB 0, 0, 0
NidokingBillboardBGPalette1: ; 0xdc110
RGB 31, 31, 31
RGB 25, 14, 31
RGB 17, 0, 26
RGB 0, 0, 0
NidokingBillboardBGPalette2: ; 0xdc118
RGB 31, 31, 31
RGB 25, 14, 31
RGB 17, 0, 26
RGB 0, 0, 0
ClefairyBillboardBGPalette1: ; 0xdc120
RGB 31, 31, 31
RGB 31, 14, 18
RGB 20, 8, 4
RGB 0, 0, 0
ClefairyBillboardBGPalette2: ; 0xdc128
RGB 31, 31, 31
RGB 31, 14, 18
RGB 20, 8, 4
RGB 0, 0, 0
ClefableBillboardBGPalette1: ; 0xdc130
RGB 31, 31, 31
RGB 31, 14, 18
RGB 20, 8, 4
RGB 0, 0, 0
ClefableBillboardBGPalette2: ; 0xdc138
RGB 31, 31, 31
RGB 31, 14, 18
RGB 20, 8, 4
RGB 0, 0, 0
VulpixBillboardBGPalette1: ; 0xdc140
RGB 31, 31, 31
RGB 31, 17, 13
RGB 25, 6, 0
RGB 0, 0, 0
VulpixBillboardBGPalette2: ; 0xdc148
RGB 31, 31, 31
RGB 31, 17, 13
RGB 25, 6, 0
RGB 0, 0, 0
NinetalesBillboardBGPalette1: ; 0xdc150
RGB 31, 31, 31
RGB 28, 26, 0
RGB 23, 12, 3
RGB 0, 0, 0
NinetalesBillboardBGPalette2: ; 0xdc158
RGB 31, 31, 31
RGB 28, 26, 0
RGB 23, 12, 3
RGB 0, 0, 0
JigglypuffBillboardBGPalette1: ; 0xdc160
RGB 31, 31, 31
RGB 31, 16, 19
RGB 22, 6, 11
RGB 3, 2, 0
JigglypuffBillboardBGPalette2: ; 0xdc168
RGB 31, 31, 31
RGB 31, 16, 19
RGB 13, 2, 21
RGB 0, 0, 0
WigglytuffBillboardBGPalette1: ; 0xdc170
RGB 31, 31, 31
RGB 31, 16, 19
RGB 22, 6, 11
RGB 3, 2, 0
WigglytuffBillboardBGPalette2: ; 0xdc178
RGB 31, 31, 31
RGB 31, 16, 19
RGB 13, 5, 19
RGB 0, 0, 0
ZubatBillboardBGPalette1: ; 0xdc180
RGB 31, 31, 31
RGB 14, 15, 30
RGB 10, 5, 26
RGB 3, 2, 0
ZubatBillboardBGPalette2: ; 0xdc188
RGB 31, 31, 31
RGB 14, 15, 30
RGB 10, 5, 26
RGB 0, 0, 0
GolbatBillboardBGPalette1: ; 0xdc190
RGB 31, 31, 31
RGB 15, 15, 30
RGB 10, 5, 26
RGB 3, 2, 0
GolbatBillboardBGPalette2: ; 0xdc198
RGB 31, 31, 31
RGB 15, 15, 30
RGB 10, 5, 26
RGB 0, 0, 0
OddishBillboardBGPalette1: ; 0xdc1a0
RGB 31, 31, 31
RGB 22, 28, 2
RGB 7, 18, 0
RGB 0, 0, 0
OddishBillboardBGPalette2: ; 0xdc1a8
RGB 31, 31, 31
RGB 31, 6, 0
RGB 4, 8, 14
RGB 0, 0, 0
GloomBillboardBGPalette1: ; 0xdc1b0
RGB 31, 31, 31
RGB 30, 19, 15
RGB 28, 4, 0
RGB 0, 0, 0
GloomBillboardBGPalette2: ; 0xdc1b8
RGB 31, 31, 31
RGB 19, 20, 31
RGB 4, 8, 14
RGB 0, 0, 0
VileplumeBillboardBGPalette1: ; 0xdc1c0
RGB 31, 31, 31
RGB 30, 19, 15
RGB 28, 4, 0
RGB 0, 0, 0
VileplumeBillboardBGPalette2: ; 0xdc1c8
RGB 31, 31, 31
RGB 19, 20, 31
RGB 4, 8, 14
RGB 0, 0, 0
ParasBillboardBGPalette1: ; 0xdc1d0
RGB 31, 31, 31
RGB 31, 20, 11
RGB 23, 6, 3
RGB 0, 0, 0
ParasBillboardBGPalette2: ; 0xdc1d8
RGB 31, 31, 31
RGB 31, 20, 11
RGB 23, 6, 3
RGB 0, 0, 0
ParasectBillboardBGPalette1: ; 0xdc1e0
RGB 31, 31, 31
RGB 31, 20, 11
RGB 23, 6, 3
RGB 0, 0, 0
ParasectBillboardBGPalette2: ; 0xdc1e8
RGB 31, 31, 31
RGB 31, 20, 11
RGB 23, 6, 3
RGB 0, 0, 0
VenonatBillboardBGPalette1: ; 0xdc1f0
RGB 31, 31, 31
RGB 24, 15, 28
RGB 12, 5, 18
RGB 0, 0, 0
VenonatBillboardBGPalette2: ; 0xdc1f8
RGB 31, 31, 31
RGB 24, 15, 28
RGB 12, 5, 18
RGB 0, 0, 0
VenomothBillboardBGPalette1: ; 0xdc200
RGB 31, 31, 31
RGB 27, 17, 29
RGB 17, 7, 16
RGB 0, 0, 0
VenomothBillboardBGPalette2: ; 0xdc208
RGB 31, 31, 31
RGB 27, 17, 29
RGB 17, 7, 16
RGB 0, 0, 0
DiglettBillboardBGPalette1: ; 0xdc210
RGB 31, 31, 31
RGB 24, 17, 5
RGB 15, 7, 0
RGB 0, 0, 0
DiglettBillboardBGPalette2: ; 0xdc218
RGB 31, 31, 31
RGB 24, 17, 5
RGB 23, 3, 0
RGB 0, 0, 0
DugtrioBillboardBGPalette1: ; 0xdc220
RGB 31, 31, 31
RGB 24, 17, 5
RGB 15, 7, 0
RGB 0, 0, 0
DugtrioBillboardBGPalette2: ; 0xdc228
RGB 31, 31, 31
RGB 24, 17, 5
RGB 23, 3, 0
RGB 0, 0, 0
MeowthBillboardBGPalette1: ; 0xdc230
RGB 31, 31, 31
RGB 29, 28, 7
RGB 19, 10, 0
RGB 0, 0, 0
MeowthBillboardBGPalette2: ; 0xdc238
RGB 31, 31, 31
RGB 29, 28, 7
RGB 31, 0, 0
RGB 0, 0, 0
PersianBillboardBGPalette1: ; 0xdc240
RGB 31, 31, 31
RGB 29, 28, 7
RGB 19, 10, 0
RGB 0, 0, 0
PersianBillboardBGPalette2: ; 0xdc248
RGB 31, 31, 31
RGB 29, 28, 7
RGB 31, 0, 0
RGB 0, 0, 0
PsyduckBillboardBGPalette1: ; 0xdc250
RGB 31, 31, 31
RGB 31, 31, 0
RGB 19, 17, 0
RGB 0, 0, 0
PsyduckBillboardBGPalette2: ; 0xdc258
RGB 31, 31, 31
RGB 31, 31, 0
RGB 19, 17, 0
RGB 0, 0, 0
GolduckBillboardBGPalette1: ; 0xdc260
RGB 31, 31, 31
RGB 26, 25, 7
RGB 13, 15, 27
RGB 0, 0, 0
GolduckBillboardBGPalette2: ; 0xdc268
RGB 31, 31, 31
RGB 31, 0, 0
RGB 13, 15, 27
RGB 0, 0, 0
MankeyBillboardBGPalette1: ; 0xdc270
RGB 31, 31, 31
RGB 28, 20, 17
RGB 22, 9, 5
RGB 0, 0, 0
MankeyBillboardBGPalette2: ; 0xdc278
RGB 31, 31, 31
RGB 28, 20, 17
RGB 22, 9, 5
RGB 0, 0, 0
PrimeapeBillboardBGPalette1: ; 0xdc280
RGB 31, 31, 31
RGB 28, 20, 17
RGB 22, 9, 5
RGB 0, 0, 0
PrimeapeBillboardBGPalette2: ; 0xdc288
RGB 31, 31, 31
RGB 15, 15, 15
RGB 22, 9, 5
RGB 0, 0, 0
GrowlitheBillboardBGPalette1: ; 0xdc290
RGB 31, 31, 31
RGB 28, 27, 10
RGB 26, 12, 0
RGB 0, 0, 0
GrowlitheBillboardBGPalette2: ; 0xdc298
RGB 31, 31, 31
RGB 28, 27, 10
RGB 31, 0, 0
RGB 0, 0, 0
ArcanineBillboardBGPalette1: ; 0xdc2a0
RGB 31, 31, 31
RGB 28, 27, 10
RGB 26, 12, 0
RGB 0, 0, 0
ArcanineBillboardBGPalette2: ; 0xdc2a8
RGB 31, 31, 31
RGB 28, 27, 10
RGB 31, 0, 0
RGB 0, 0, 0
PoliwagBillboardBGPalette1: ; 0xdc2b0
RGB 31, 31, 31
RGB 20, 20, 27
RGB 11, 11, 18
RGB 0, 0, 0
PoliwagBillboardBGPalette2: ; 0xdc2b8
RGB 31, 31, 31
RGB 31, 17, 14
RGB 11, 11, 18
RGB 0, 0, 0
PoliwhirlBillboardBGPalette1: ; 0xdc2c0
RGB 31, 31, 31
RGB 20, 20, 27
RGB 11, 11, 18
RGB 0, 0, 0
PoliwhirlBillboardBGPalette2: ; 0xdc2c8
RGB 31, 31, 31
RGB 20, 20, 27
RGB 11, 11, 18
RGB 0, 0, 0
PoliwrathBillboardBGPalette1: ; 0xdc2d0
RGB 31, 31, 31
RGB 20, 20, 27
RGB 11, 11, 18
RGB 0, 0, 0
PoliwrathBillboardBGPalette2: ; 0xdc2d8
RGB 31, 31, 31
RGB 20, 20, 27
RGB 11, 11, 18
RGB 0, 0, 0
AbraBillboardBGPalette1: ; 0xdc2e0
RGB 31, 31, 31
RGB 31, 30, 0
RGB 19, 11, 6
RGB 0, 0, 0
AbraBillboardBGPalette2: ; 0xdc2e8
RGB 31, 31, 31
RGB 31, 30, 0
RGB 19, 11, 6
RGB 0, 0, 0
KadabraBillboardBGPalette1: ; 0xdc2f0
RGB 31, 31, 31
RGB 31, 30, 0
RGB 19, 11, 6
RGB 0, 0, 0
KadabraBillboardBGPalette2: ; 0xdc2f8
RGB 31, 31, 31
RGB 21, 21, 21
RGB 19, 11, 6
RGB 0, 0, 0
HypnoBillboardBGPalette1: ; 0xdc300
RGB 31, 31, 31
RGB 31, 30, 0
RGB 21, 15, 5
HypnoBillboardBGPalette2: ; 0xdc308
RGB 0, 0, 0
RGB 31, 31, 31
RGB 19, 23, 31
RGB 21, 15, 5
RGB 0, 0, 0
KrabbyBillboardBGPalette1: ; 0xdc310
RGB 31, 31, 31
RGB 31, 16, 17
RGB 25, 6, 0
KrabbyBillboardBGPalette2: ; 0xdc318
RGB 0, 0, 0
RGB 31, 31, 31
RGB 31, 16, 17
RGB 25, 6, 0
RGB 0, 0, 0
KinglerBillboardBGPalette1: ; 0xdc320
RGB 31, 31, 31
RGB 31, 16, 17
RGB 25, 6, 0
KinglerBillboardBGPalette2: ; 0xdc328
RGB 0, 0, 0
RGB 31, 31, 31
RGB 31, 16, 17
RGB 25, 6, 0
RGB 0, 0, 0
VoltorbBillboardBGPalette1: ; 0xdc330
RGB 31, 31, 31
RGB 31, 16, 17
RGB 25, 6, 0
VoltorbBillboardBGPalette2: ; 0xdc338
RGB 0, 0, 0
RGB 31, 31, 31
RGB 19, 23, 31
RGB 25, 6, 0
RGB 0, 0, 0
ElectrodeBillboardBGPalette1: ; 0xdc340
RGB 31, 31, 31
RGB 31, 15, 12
RGB 25, 6, 0
ElectrodeBillboardBGPalette2: ; 0xdc348
RGB 0, 0, 0
RGB 31, 31, 31
RGB 19, 23, 31
RGB 25, 6, 0
RGB 0, 0, 0
ExeggcuteBillboardBGPalette1: ; 0xdc350
RGB 31, 31, 31
RGB 31, 15, 12
RGB 18, 8, 6
ExeggcuteBillboardBGPalette2: ; 0xdc358
RGB 0, 0, 0
RGB 31, 31, 31
RGB 31, 15, 12
RGB 18, 8, 6
RGB 0, 0, 0
ExeggutorBillboardBGPalette1: ; 0xdc360
RGB 31, 31, 31
RGB 31, 27, 5
RGB 7, 18, 0
ExeggutorBillboardBGPalette2: ; 0xdc368
RGB 3, 2, 0
RGB 31, 31, 31
RGB 31, 23, 5
RGB 20, 10, 3
RGB 0, 0, 0
CuboneBillboardBGPalette1: ; 0xdc370
RGB 31, 31, 31
RGB 18, 20, 27
RGB 20, 10, 3
CuboneBillboardBGPalette2: ; 0xdc378
RGB 0, 0, 0
RGB 31, 31, 31
RGB 29, 23, 10
RGB 20, 10, 3
RGB 0, 0, 0
MarowakBillboardBGPalette1: ; 0xdc380
RGB 31, 31, 31
RGB 18, 20, 27
RGB 20, 10, 3
MarowakBillboardBGPalette2: ; 0xdc388
RGB 0, 0, 0
RGB 31, 31, 31
RGB 29, 23, 10
RGB 20, 10, 3
RGB 0, 0, 0
HitmonleeBillboardBGPalette1: ; 0xdc390
RGB 31, 31, 31
RGB 29, 23, 10
RGB 21, 13, 3
HitmonleeBillboardBGPalette2: ; 0xdc398
RGB 0, 0, 0
RGB 31, 31, 31
RGB 29, 23, 10
RGB 21, 13, 3
RGB 0, 0, 0
HitmonchanBillboardBGPalette1: ; 0xdc3a0
RGB 31, 31, 31
RGB 31, 21, 13
RGB 23, 3, 3
HitmonchanBillboardBGPalette2: ; 0xdc3a8
RGB 3, 2, 0
RGB 31, 31, 31
RGB 31, 21, 13
RGB 22, 3, 25
RGB 0, 0, 0
LickitungBillboardBGPalette1: ; 0xdc3b0
RGB 31, 31, 31
RGB 31, 21, 21
RGB 31, 9, 8
LickitungBillboardBGPalette2: ; 0xdc3b8
RGB 0, 0, 0
RGB 31, 31, 31
RGB 31, 20, 12
RGB 31, 9, 8
RGB 0, 0, 0
KoffingBillboardBGPalette1: ; 0xdc3c0
RGB 31, 31, 31
RGB 21, 13, 28
RGB 10, 7, 14
KoffingBillboardBGPalette2: ; 0xdc3c8
RGB 3, 2, 0
RGB 31, 31, 31
RGB 21, 13, 28
RGB 21, 4, 7
RGB 0, 0, 0
WeezingBillboardBGPalette1: ; 0xdc3d0
RGB 31, 31, 31
RGB 21, 13, 28
RGB 10, 7, 14
WeezingBillboardBGPalette2: ; 0xdc3d8
RGB 0, 0, 0
RGB 31, 31, 31
RGB 21, 13, 28
RGB 21, 4, 7
RGB 3, 2, 0
RhyhornBillboardBGPalette1: ; 0xdc3e0
RGB 31, 31, 31
RGB 21, 21, 21
RGB 13, 11, 16
RhyhornBillboardBGPalette2: ; 0xdc3e8
RGB 0, 0, 0
RGB 31, 31, 31
RGB 21, 21, 21
RGB 13, 11, 16
RGB 0, 0, 0
RhydonBillboardBGPalette1: ; 0xdc3f0
RGB 31, 31, 31
RGB 21, 21, 21
RGB 13, 11, 16
RhydonBillboardBGPalette2: ; 0xdc3f8
RGB 0, 0, 0
RGB 31, 31, 31
RGB 21, 21, 21
RGB 13, 11, 16
RGB 0, 0, 0
MagnemiteBillboardBGPalette1: ; 0xdc400
RGB 31, 31, 31
RGB 20, 20, 26
RGB 11, 11, 20
RGB 0, 0, 0
MagnemiteBillboardBGPalette2: ; 0xdc408
RGB 31, 31, 31
RGB 20, 20, 26
RGB 31, 0, 0
RGB 0, 0, 0
MagnetonBillboardBGPalette1: ; 0xdc410
RGB 31, 31, 31
RGB 20, 20, 26
RGB 11, 11, 20
RGB 0, 0, 0
MagnetonBillboardBGPalette2: ; 0xdc418
RGB 31, 31, 31
RGB 20, 20, 26
RGB 11, 11, 20
RGB 0, 0, 0
FarfetchdBillboardBGPalette1: ; 0xdc420
RGB 31, 31, 31
RGB 31, 29, 13
RGB 20, 12, 9
RGB 0, 0, 0
FarfetchdBillboardBGPalette2: ; 0xdc428
RGB 31, 31, 31
RGB 21, 31, 17
RGB 7, 20, 6
RGB 0, 0, 0
DoduoBillboardBGPalette1: ; 0xdc430
RGB 31, 31, 31
RGB 29, 26, 14
RGB 26, 16, 4
RGB 0, 0, 0
DoduoBillboardBGPalette2: ; 0xdc438
RGB 31, 31, 31
RGB 29, 26, 14
RGB 26, 16, 4
RGB 0, 0, 0
DodrioBillboardBGPalette1: ; 0xdc440
RGB 31, 31, 31
RGB 29, 26, 14
RGB 26, 16, 4
RGB 0, 0, 0
DodrioBillboardBGPalette2: ; 0xdc448
RGB 31, 31, 31
RGB 29, 26, 14
RGB 26, 16, 4
RGB 0, 0, 0
SeelBillboardBGPalette1: ; 0xdc450
RGB 31, 31, 31
RGB 20, 20, 26
RGB 11, 11, 20
RGB 0, 0, 0
SeelBillboardBGPalette2: ; 0xdc458
RGB 31, 31, 31
RGB 29, 26, 14
RGB 31, 11, 10
RGB 0, 0, 0
DewgongBillboardBGPalette1: ; 0xdc460
RGB 31, 31, 31
RGB 20, 20, 26
RGB 11, 11, 20
RGB 0, 0, 0
DewgongBillboardBGPalette2: ; 0xdc468
RGB 31, 31, 31
RGB 20, 20, 26
RGB 11, 11, 20
RGB 0, 0, 0
GrimerBillboardBGPalette1: ; 0xdc470
RGB 31, 31, 31
RGB 27, 18, 30
RGB 15, 7, 19
RGB 0, 0, 0
GrimerBillboardBGPalette2: ; 0xdc478
RGB 31, 31, 31
RGB 27, 18, 30
RGB 15, 7, 19
RGB 0, 0, 0
MukBillboardBGPalette1: ; 0xdc480
RGB 31, 31, 31
RGB 27, 18, 30
RGB 15, 7, 19
RGB 0, 0, 0
MukBillboardBGPalette2: ; 0xdc488
RGB 31, 31, 31
RGB 27, 18, 30
RGB 15, 7, 19
RGB 0, 0, 0
ShellderBillboardBGPalette1: ; 0xdc490
RGB 31, 31, 31
RGB 24, 21, 25
RGB 13, 11, 15
RGB 0, 0, 0
ShellderBillboardBGPalette2: ; 0xdc498
RGB 31, 31, 31
RGB 24, 21, 25
RGB 31, 13, 13
RGB 0, 0, 0
CloysterBillboardBGPalette1: ; 0xdc4a0
RGB 31, 31, 31
RGB 25, 21, 26
RGB 14, 11, 16
RGB 0, 0, 0
CloysterBillboardBGPalette2: ; 0xdc4a8
RGB 31, 31, 31
RGB 25, 21, 26
RGB 14, 11, 16
RGB 0, 0, 0
GastlyBillboardBGPalette1: ; 0xdc4b0
RGB 31, 31, 31
RGB 26, 18, 27
RGB 15, 8, 16
RGB 0, 0, 0
GastlyBillboardBGPalette2: ; 0xdc4b8
RGB 31, 31, 31
RGB 26, 18, 27
RGB 26, 10, 8
RGB 0, 0, 0
HaunterBillboardBGPalette1: ; 0xdc4c0
RGB 31, 31, 31
RGB 26, 18, 27
RGB 15, 8, 16
RGB 0, 0, 0
HaunterBillboardBGPalette2: ; 0xdc4c8
RGB 31, 31, 31
RGB 31, 13, 13
RGB 14, 9, 15
RGB 0, 0, 0
GengarBillboardBGPalette1: ; 0xdc4d0
RGB 31, 31, 31
RGB 18, 21, 23
RGB 10, 12, 13
RGB 0, 0, 0
GengarBillboardBGPalette2: ; 0xdc4d8
RGB 31, 31, 31
RGB 31, 11, 6
RGB 10, 12, 13
RGB 0, 0, 0
OnixBillboardBGPalette1: ; 0xdc4e0
RGB 31, 31, 31
RGB 20, 20, 24
RGB 10, 10, 14
RGB 0, 0, 0
OnixBillboardBGPalette2: ; 0xdc4e8
RGB 31, 31, 31
RGB 20, 20, 24
RGB 10, 10, 14
RGB 0, 0, 0
DrowzeeBillboardBGPalette1: ; 0xdc4f0
RGB 31, 31, 31
RGB 31, 30, 0
RGB 21, 19, 0
RGB 0, 0, 0
DrowzeeBillboardBGPalette2: ; 0xdc4f8
RGB 31, 31, 31
RGB 31, 30, 0
RGB 21, 19, 0
RGB 0, 0, 0
AlakazamBillboardBGPalette1: ; 0xdc500
RGB 31, 31, 31
RGB 31, 30, 0
RGB 19, 11, 6
RGB 0, 0, 0
AlakazamBillboardBGPalette2: ; 0xdc508
RGB 31, 31, 31
RGB 21, 21, 21
RGB 19, 11, 6
RGB 0, 0, 0
MachopBillboardBGPalette1: ; 0xdc510
RGB 31, 31, 31
RGB 19, 19, 21
RGB 12, 12, 13
RGB 0, 0, 0
MachopBillboardBGPalette2: ; 0xdc518
RGB 31, 31, 31
RGB 19, 19, 21
RGB 31, 0, 0
RGB 0, 0, 0
MachokeBillboardBGPalette1: ; 0xdc520
RGB 31, 31, 31
RGB 18, 18, 22
RGB 11, 11, 14
RGB 0, 0, 0
MachokeBillboardBGPalette2: ; 0xdc528
RGB 31, 31, 31
RGB 18, 18, 22
RGB 31, 0, 0
RGB 0, 0, 0
MachampBillboardBGPalette1: ; 0xdc530
RGB 31, 31, 31
RGB 18, 21, 22
RGB 9, 12, 13
RGB 0, 0, 0
MachampBillboardBGPalette2: ; 0xdc538
RGB 31, 31, 31
RGB 18, 21, 22
RGB 31, 0, 0
RGB 0, 0, 0
BellsproutBillboardBGPalette1: ; 0xdc540
RGB 31, 31, 31
RGB 26, 29, 7
RGB 11, 20, 0
RGB 0, 0, 0
BellsproutBillboardBGPalette2: ; 0xdc548
RGB 31, 31, 31
RGB 26, 29, 7
RGB 31, 11, 8
RGB 0, 0, 0
WeepinbellBillboardBGPalette1: ; 0xdc550
RGB 31, 31, 31
RGB 26, 29, 7
RGB 11, 20, 0
RGB 0, 0, 0
WeepinbellBillboardBGPalette2: ; 0xdc558
RGB 31, 31, 31
RGB 26, 29, 7
RGB 31, 11, 8
RGB 0, 0, 0
VictreebellBillboardBGPalette1: ; 0xdc560
RGB 31, 31, 31
RGB 29, 31, 9
RGB 11, 20, 0
RGB 0, 0, 0
VictreebellBillboardBGPalette2: ; 0xdc568
RGB 31, 31, 31
RGB 29, 31, 9
RGB 31, 11, 8
RGB 0, 0, 0
TentacoolBillboardBGPalette1: ; 0xdc570
RGB 31, 31, 31
RGB 16, 22, 31
RGB 0, 11, 22
RGB 0, 0, 0
TentacoolBillboardBGPalette2: ; 0xdc578
RGB 31, 31, 31
RGB 16, 22, 31
RGB 31, 5, 6
RGB 0, 0, 0
TentacruelBillboardBGPalette1: ; 0xdc580
RGB 31, 31, 31
RGB 16, 22, 31
RGB 0, 11, 22
RGB 0, 0, 0
TentacruelBillboardBGPalette2: ; 0xdc588
RGB 31, 31, 31
RGB 16, 22, 31
RGB 31, 5, 6
RGB 0, 0, 0
GeodudeBillboardBGPalette1: ; 0xdc590
RGB 31, 31, 31
RGB 20, 23, 22
RGB 10, 13, 12
RGB 0, 0, 0
GeodudeBillboardBGPalette2: ; 0xdc598
RGB 31, 31, 31
RGB 20, 23, 22
RGB 10, 13, 12
RGB 0, 0, 0
GravelerBillboardBGPalette1: ; 0xdc5a0
RGB 31, 31, 31
RGB 20, 23, 22
RGB 10, 13, 12
RGB 0, 0, 0
GravelerBillboardBGPalette2: ; 0xdc5a8
RGB 31, 31, 31
RGB 20, 23, 22
RGB 10, 13, 12
RGB 0, 0, 0
GolemBillboardBGPalette1: ; 0xdc5b0
RGB 31, 31, 31
RGB 26, 25, 15
RGB 10, 13, 12
RGB 0, 0, 0
GolemBillboardBGPalette2: ; 0xdc5b8
RGB 31, 31, 31
RGB 26, 25, 15
RGB 31, 0, 0
RGB 0, 0, 0
PonytaBillboardBGPalette1: ; 0xdc5c0
RGB 31, 31, 31
RGB 27, 26, 11
RGB 31, 0, 0
RGB 0, 0, 0
PonytaBillboardBGPalette2: ; 0xdc5c8
RGB 31, 31, 31
RGB 31, 29, 0
RGB 31, 0, 0
RGB 0, 0, 0
RapidashBillboardBGPalette1: ; 0xdc5d0
RGB 31, 31, 31
RGB 27, 26, 11
RGB 31, 0, 0
RGB 0, 0, 0
RapidashBillboardBGPalette2: ; 0xdc5d8
RGB 31, 31, 31
RGB 31, 29, 0
RGB 31, 0, 0
RGB 0, 0, 0
SlowpokeBillboardBGPalette1: ; 0xdc5e0
RGB 31, 31, 31
RGB 31, 21, 21
RGB 31, 11, 11
RGB 0, 0, 0
SlowpokeBillboardBGPalette2: ; 0xdc5e8
RGB 31, 31, 31
RGB 31, 27, 15
RGB 31, 11, 11
RGB 0, 0, 0
SlowbroBillboardBGPalette1: ; 0xdc5f0
RGB 31, 31, 31
RGB 31, 27, 15
RGB 31, 11, 11
RGB 0, 0, 0
SlowbroBillboardBGPalette2: ; 0xdc5f8
RGB 31, 31, 31
RGB 23, 23, 23
RGB 12, 12, 12
RGB 0, 0, 0
INCBIN "baserom.gbc",$dc600,$dc700 - $dc600
ZapdosBillboardBGPalette1: ; 0xdc700
RGB 31, 31, 31
RGB 29, 27, 0
RGB 20, 6, 0
RGB 0, 0, 0
ZapdosBillboardBGPalette2: ; 0xdc708
RGB 31, 31, 31
RGB 29, 27, 0
RGB 20, 6, 0
RGB 0, 0, 0
MoltresBillboardBGPalette1: ; 0xdc710
RGB 31, 31, 31
RGB 30, 25, 0
RGB 30, 6, 0
RGB 0, 0, 0
MoltresBillboardBGPalette2: ; 0xdc718
RGB 31, 31, 31
RGB 30, 25, 0
RGB 30, 6, 0
RGB 0, 0, 0
DratiniBillboardBGPalette1: ; 0xdc720
RGB 31, 31, 31
RGB 17, 19, 24
RGB 6, 11, 15
RGB 0, 0, 0
DratiniBillboardBGPalette2: ; 0xdc728
RGB 31, 31, 31
RGB 17, 19, 24
RGB 6, 11, 15
RGB 0, 0, 0
DragonairBillboardBGPalette1: ; 0xdc730
RGB 31, 31, 31
RGB 9, 19, 30
RGB 2, 4, 26
RGB 0, 0, 0
DragonairBillboardBGPalette2: ; 0xdc738
RGB 31, 31, 31
RGB 9, 19, 30
RGB 2, 4, 26
RGB 0, 0, 0
DragoniteBillboardBGPalette1: ; 0xdc740
RGB 31, 31, 31
RGB 31, 23, 7
RGB 27, 11, 0
RGB 0, 0, 0
DragoniteBillboardBGPalette2: ; 0xdc748
RGB 31, 31, 31
RGB 13, 22, 16
RGB 27, 11, 0
RGB 0, 0, 0
MewtwoBillboardBGPalette1: ; 0xdc750
RGB 31, 31, 31
RGB 28, 23, 28
RGB 13, 7, 20
RGB 0, 0, 0
MewtwoBillboardBGPalette2: ; 0xdc758
RGB 31, 31, 31
RGB 28, 23, 28
RGB 20, 5, 18
RGB 0, 0, 0
MewBGPalette1: ; 0xdc760
RGB 31, 31, 31
RGB 31, 18, 24
RGB 31, 7, 12
RGB 0, 0, 0
MewBGPalette2: ; 0xdc768
RGB 31, 31, 31
RGB 31, 18, 24
RGB 0, 10, 31
RGB 0, 0, 0
INCBIN "baserom.gbc",$dc770,$dd148 - $dc770
CinnabarIslandBillboardBGPalette1: ; 0xdd148
RGB 31, 31, 31
RGB 14, 21, 0
RGB 0, 10, 31
RGB 0, 0, 0
CinnabarIslandBillboardBGPalette2: ; 0xdd150
RGB 31, 31, 31
RGB 14, 21, 0
RGB 2, 11, 1
RGB 0, 0, 0
IndigoPlateauBillboardBGPalette1: ; 0xdd158
RGB 31, 31, 31
RGB 11, 18, 31
RGB 7, 9, 19
RGB 0, 0, 0
IndigoPlateauBillboardBGPalette2: ; 0xdd160
RGB 31, 31, 31
RGB 11, 18, 31
RGB 9, 20, 0
RGB 0, 0, 0
PokeBallObjPalette: ; 0xdd168
RGB 21, 21, 21
RGB 31, 31, 31
RGB 31, 5, 4
RGB 0, 0, 0
GreatBallObjPalette: ; 0xdd170
RGB 21, 21, 21
RGB 31, 31, 31
RGB 2, 8, 31
RGB 0, 0, 0
UltraBallObjPalette: ; 0xdd178
RGB 21, 21, 21
RGB 31, 31, 31
RGB 27, 21, 0
RGB 0, 0, 0
MasterBallObjPalette: ; 0xdd180
RGB 21, 21, 21
RGB 31, 31, 31
RGB 21, 3, 21
RGB 0, 0, 0
INCBIN "baserom.gbc",$dd188,$e0000 - $dd188
SECTION "bank38", ROMX, BANK[$38]
INCBIN "baserom.gbc",$e0000,$e4000 - $e0000 ; 0xe0000
SECTION "bank39", ROMX, BANK[$39]
INCBIN "baserom.gbc",$e4000,$e8000 - $e4000 ; 0xe4000
SECTION "bank3a", ROMX, BANK[$3a]
INCBIN "baserom.gbc",$e8000,$ec000 - $e8000 ; 0xe8000
SECTION "bank3b", ROMX, BANK[$3b]
INCBIN "baserom.gbc",$ec000,$f0000 - $ec000 ; 0xec000
SECTION "bank3c", ROMX, BANK[$3c]
INCBIN "baserom.gbc",$f0000,$f4000 - $f0000 ; 0xf0000
SECTION "bank3d", ROMX, BANK[$3d]
INCBIN "baserom.gbc",$f4000,$f8000 - $f4000 ; 0xf4000
SECTION "bank3e", ROMX, BANK[$3e]
INCBIN "baserom.gbc",$f8000,$fc000 - $f8000 ; 0xf8000
SECTION "bank3f", ROMX, BANK[$3f]
INCBIN "baserom.gbc",$fc000,$fffff - $fc000 ; 0xfc000