Files
pokepinball/main.asm
T

14698 lines
275 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 InitializeHRAM
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 Func_52c
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
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, $0504
.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, $0e69
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, $0408
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
jp [hl]
INCBIN "baserom.gbc",$3ff,$418 - $3ff
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.
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, [$d85b]
ld [hLoadedROMBank], a
ld [$2000], a
ld a, e
ld [$d7bf], a
ld a, [$d85b]
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, [$d85b]
ld [hLoadedROMBank], a
ld [$2000], a
call $40c0 ; todo
pop af
ld [hLoadedROMBank], a
ld [$2000], a
ret
INCBIN "baserom.gbc",$4d8,$4ef - $4d8
Func_4ef: ; 0x4ef
ld a, [hLoadedROMBank]
push af
ld a, [$d85b]
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, [$d85b]
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
Func_52c: ; 0x52c
di
ld [$d85b], 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
InitializeHRAM: ; 0x5f7
; Initializes registers $ff80 - $ff8a
ld c, $80
ld b, $a ; number of bytes to load
ld hl, InitialHRAM
.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
InitialHRAM:
; These $a bytes are initially load into $ff80 - $ff8a by InitializeHRAM.
db $3e, $d0, $e0, $46, $3e, $28, $3d, $20, $fd, $c9
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
Func_73f: ; 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
INCBIN "baserom.gbc",$790,$848 - $790
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
Func_959: ; 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 Func_959
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
INCBIN "baserom.gbc",$a21,$ab8 - $a21
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
INCBIN "baserom.gbc",$b36,$b4c - $b36
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
INCBIN "baserom.gbc",$dd4,$e21 - $dd4
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
INCBIN "baserom.gbc",$e4a,$e5d - $e4a
Func_e5d: ; 0xe5d
ld a, $1
ld [$d84a], a
.asm_e62
ld a, [$d84a]
and a
jr nz, .asm_e62
ret
INCBIN "baserom.gbc",$e69,$f0c - $e69
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
INCBIN "baserom.gbc",$fbc,$10aa - $fbc
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
INCBIN "baserom.gbc",$1129,$113a - $1129
Func_113a: ; 0x113a
ld hl, $d7fc
ld a, [$d7fb]
cp [hl]
ret z
ld l, [hl]
ld h, $ca
ld [hl], $ff
.asm_1147
ld a, [hl]
and a
jr z, .asm_116c
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 .asm_1147
.asm_116c
ld a, l
ld [$d7fc], a
ld hl, $d7fb
cp [hl]
ret nz
xor a
ld [$d7fa], a
ret
Func_117a: ; 0x117a
jp [hl]
INCBIN "baserom.gbc",$117b,$12a1 - $117b
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,$1f24 - $1ed9
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
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 Func_d853
db Bank(Func_d853), $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
INCBIN "baserom.gbc",$20ab,$219c - $20ab
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
INCBIN "baserom.gbc",$21e5,$28a0 - $21e5
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
INCBIN "baserom.gbc",$310a,$32aa - $310a
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
INCBIN "baserom.gbc",$32cc,$3579 - $32cc
Func_3579: ; 0x3579
ld hl, $d47a
xor a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ret
INCBIN "baserom.gbc",$3582,$4000 - $3582
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
PointerTable_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, $117b ; 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, $117b ; todo
call Func_10c5
ret
.asm_812e
ld a, $2
ld bc, $4144 ; todo
ld de, $117b ; 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
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
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, $3
ld hl, $4a3a
call BankSwitch
.asm_82f6
ld hl, $a268
ld de, $d300
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
Func_8311: ; 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
dw $4000
db $0C, $00
dw $4000
db $0C, $00
dw $4000
db $06, $00
dw $4000
db $06, $00
dw $4000
db $07, $00
dw $4000
db $07, $00
dw $4099
db $06, $00
dw $4099
db $06, $00
dw $524F
db $06, $00
dw $524F
db $06, $00
dw $4000
db $09, $00
dw $4000
db $09, $00
dw $59F2
db $06, $00
dw $59F2
db $06, $00
dw $5A7C
db $09, $00
dw $5A7C
db $09, $00
Func_8388: ; 0x8388
ld a, [$d7c1]
and a
jr z, .asm_8398
ld hl, $d7c3
ld bc, $0037
call ClearData
ret
.asm_8398
ld a, [wCurrentStage]
cp $6
ret nc
ld hl, $d300
ld bc, $0170
call ClearData
ld hl, $d473 ; todo
ld bc, $0039
call ClearData
ld hl, $d4ad
ld bc, $034d
call ClearData
ret
INCBIN "baserom.gbc",$83ba,$867d - $83ba
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
INCBIN "baserom.gbc",$86a4,$c000 - $86a4
SECTION "bank3", ROMX, BANK[$3]
HandleTitlescreen: ; 0xc000
ld a, [wScreenState]
rst $18 ; calls JumpToFuncInTable
PointerTable_c004: ; 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 Func_52c
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, $d300
ld bc, $04c3
call Func_f0c
jr nc, .asm_c173
xor a
ld [$d7c2], a
ld hl, $d300
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 Func_959
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
PointerTable_c34e: ; 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 Func_52c
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 Func_73f
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 Func_52c
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 Func_52c
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
PointerTable_ca83: ; 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 Func_959
ld [hli], a
call Func_959
ld [hli], a
call Func_959
ld [hli], a
call Func_959
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 Func_52c
ld de, $0001
call Func_490
jr .asm_cba6
.asm_cb9b
ld a, $13
call Func_52c
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 Func_52c
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 Func_73f
ld a, $30
ld hl, $5840 ; todo
ld de, $9c40
ld bc, $01c0
call Func_73f
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 Func_73f
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 Func_73f
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 $557b
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, $5626
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 $55d0
ret
.asm_d537
call ClearOAMBuffer
call $557b
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, $5626
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 $55d0
ret
INCBIN "baserom.gbc",$d57b,$d68a - $d57b
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
PointerTable_d6d7: ; 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 Func_52c
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, $d300
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
Func_d853: ; 0xd853
ld a, [wScreenState]
rst $18
PointerTable_d857: ; 0xd857
dw Func_d861
dw Func_d87f
dw $5909
dw $5A36
dw $5AB2
Func_d861: ; 0xd861
xor a
ld [$d908], a
ld [$ff8a], a
ld a, Bank(Func_8311)
ld hl, Func_8311
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, $2
ld hl, $43ba ; todo
call BankSwitch
ld [$ff8a], a
ld a, $3
ld hl, $6578 ; todo
call BankSwitch
ld [$ff8a], a
ld a, $3
ld hl, $66c2 ; todo
call BankSwitch
ld [$ff8a], a
ld a, $3
ld hl, $6d5e ; todo
call BankSwitch
call ClearOAMBuffer
ld [$ff8a], a
ld a, $2
ld hl, $44b7 ; todo
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
INCBIN "baserom.gbc",$d909,$dbd4 - $d909
Func_dbd4: ; 0xdbd4
ld a, [$d4a3]
ld [$d4a6], a
ld a, [$d4a4]
ld [$d4a7], a
ld a, [$d4a5]
ld [$d4a8], a
ld a, $0
ld [$d4a1], a
ld a, $ff
ld [$d4a2], a
ld a, $3b
ld [$d4a3], a
ld a, $3c
ld [$d4a4], a
ld a, $ff
ld [$d4a5], a
ret
INCBIN "baserom.gbc",$dc00,$eeee - $dc00
Func_eeee: ; 0xeeee
push bc
ld bc, $0200
.asm_eef2
dec bc
ld a, b
or c
jr nz, .asm_eef2
pop bc
ret
INCBIN "baserom.gbc",$eef9,$f178 - $eef9
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 Func_73f ; loads the tiles into VRAM
pop hl
ret
INCBIN "baserom.gbc",$f196,$f1b8 - $f196
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)
INCBIN "baserom.gbc",$f269,$10000 - $f269
SECTION "bank4", ROMX, BANK[$4]
INCBIN "baserom.gbc",$10000,$1003f - $10000
StartCatchEmMode: ; 0x1003f
ld a, [$d54b] ; current game mode?
and a
ret nz
ld a, $1
ld [$d54b], a ; set to catchem mode?
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 Func_959 ; random number?
and $f
call .asm_10130
ld c, a
ld b, $0
add hl, bc
ld a, [$d55b] ; this probably 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(Func_dbd4)
ld hl, Func_dbd4
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 ; todo this is a funciton table after rst $18, not assembly instructions
ld [hl], c
ld c, b
ld [hl], c
ld c, b
adc d
ld c, c
adc d
ld c, c
adc h
ld c, c
adc h
ld c, c
.asm_10130 ; I think this checks to see if it should be Mew
push af
cp $f
jr nz, .asm_10155
ld a, c
cp $60
jr nz, .asm_10155
ld a, b
cp $1
jr nz, .asm_10155
ld a, [$d55b]
cp $8
jr nz, .asm_10155
ld a, [$d62f]
cp $2
jr nz, .asm_10155
pop af
xor a
ld [$d62f], a
ld a, $10
ret
.asm_10155
pop af
ret
INCBIN "baserom.gbc",$10157,$10696 - $10157
Func_10696: ; 0x10696
call Func_30e8
call Func_30db
ld hl, $d5cc
ld de, $29b7
call Func_32aa
ret
INCBIN "baserom.gbc",$106a6,$106b6 - $106a6
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 $41
jr z, .asm_106f1
cp $49
jr z, .asm_106f1
cp $55
jr z, .asm_106f1
cp $45
jr z, .asm_106f1
cp $4f
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
INCBIN "baserom.gbc",$10732,$10753 - $10732
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
INCBIN "baserom.gbc",$1077c,$1126c - $1077c
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]
INCBIN "baserom.gbc",$14000,$1404a - $14000
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
INCBIN "baserom.gbc",$14091,$1659c - $14091
.showNextMap
ld a, [$d4e1]
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 [$d4e1], 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
INCBIN "baserom.gbc",$1660c,$175f5 - $1660c
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
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, [$d54b]
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,$17e81 - $17679
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
INCBIN "baserom.gbc",$17efb,$18000 - $17efb
SECTION "bank6", ROMX, BANK[$6]
INCBIN "baserom.gbc",$18000,$1c000 - $18000 ; 0x18000
SECTION "bank7", ROMX, BANK[$7]
INCBIN "baserom.gbc",$1c000,$1c846 - $1c000
.showNextMap
ld a, [$d4e1]
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 [$d4e1], 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
INCBIN "baserom.gbc",$1c8b6,$20000 - $1c8b6
SECTION "bank8", ROMX, BANK[$8]
INCBIN "baserom.gbc",$20000,$24000 - $20000 ; 0x20000
SECTION "bank9", ROMX, BANK[$9]
INCBIN "baserom.gbc",$24000,$28000 - $24000 ; 0x24000
SECTION "banka", ROMX, BANK[$a]
HandlePokedexScreen: ; 0x28000
ld a, [wScreenState]
rst $18
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 Func_52c
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 $8000
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 $8000
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 Func_73f
ld a, $1
ld [$ff4f], a
ld a, $31
ld hl, $4c00 ; todo
ld de, vBGMap1
ld bc, $0200
call Func_73f
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, $467f ; todo pointer table
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
jp [hl]
INCBIN "baserom.gbc",$2867f,$2868b - $2867f
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
INCBIN "baserom.gbc",$286dd,$287e7 - $286dd
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 Func_73f
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 Func_73f
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, $8000
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]
INCBIN "baserom.gbc",$30000,$30253 - $30000 ; 0x30000
Func_30253: ; 0x30253
ld a, [wCurrentMap]
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
INCBIN "baserom.gbc",$311b4,$33fff - $311b4
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]
INCBIN "baserom.gbc",$50000,$54000 - $50000 ; 0x50000
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"
INCBIN "baserom.gbc",$5bf00,$5c000 - $5bf00 ; 0x5bf00
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"
INCBIN "baserom.gbc",$63000,$64000 - $63000 ; 0x63000
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"
INCBIN "baserom.gbc",$77000,$78000 - $77000 ; 0x77000
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"
INCBIN "baserom.gbc",$7bf00,$7c000 - $7bf00 ; 0x7bf00
SECTION "bank1f", ROMX, BANK[$1f]
SlowpokeAnimatedPic: ; 0x7c000
INCBIN "gfx/billboard/mon_animated/slowpoke.2bpp"
MagnemiteAnimatedPic: ; 0x7c300
INCBIN "gfx/billboard/mon_animated/magnemite.2bpp"
Farfetch_DAnimatedPic: ; 0x7c600
INCBIN "gfx/billboard/mon_animated/farfetch_d.2bpp"
DoduoAnimatedPic: ; 0x7c900
INCBIN "gfx/billboard/mon_animated/doduo.2bpp"
SeelAnimatedPic: ; 0x7cc00
INCBIN "gfx/billboard/mon_animated/seel.2bpp"
GrimerAnimatedPic: ; 0x7cf00
INCBIN "gfx/billboard/mon_animated/grimer.2bpp"
ShellderAnimatedPic: ; 0x7d200
INCBIN "gfx/billboard/mon_animated/shellder.2bpp"
GastlyAnimatedPic: ; 0x7d500
INCBIN "gfx/billboard/mon_animated/gastly.2bpp"
OnixAnimatedPic: ; 0x7d800
INCBIN "gfx/billboard/mon_animated/onix.2bpp"
DrowzeeAnimatedPic: ; 0x7db00
INCBIN "gfx/billboard/mon_animated/drowzee.2bpp"
KrabbyAnimatedPic: ; 0x7de00
INCBIN "gfx/billboard/mon_animated/krabby.2bpp"
VoltorbAnimatedPic: ; 0x7e100
INCBIN "gfx/billboard/mon_animated/voltorb.2bpp"
ExeggcuteAnimatedPic: ; 0x7e400
INCBIN "gfx/billboard/mon_animated/exeggcute.2bpp"
CuboneAnimatedPic: ; 0x7e700
INCBIN "gfx/billboard/mon_animated/cubone.2bpp"
HitmonleeAnimatedPic: ; 0x7ea00
INCBIN "gfx/billboard/mon_animated/hitmonlee.2bpp"
HitmonchanAnimatedPic: ; 0x7ed00
INCBIN "gfx/billboard/mon_animated/hitmonchan.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.2bpp"
KoffingAnimatedPic: ; 0x80300
INCBIN "gfx/billboard/mon_animated/koffing.2bpp"
RhyhornAnimatedPic: ; 0x80600
INCBIN "gfx/billboard/mon_animated/rhyhorn.2bpp"
ChanseyAnimatedPic: ; 0x80900
INCBIN "gfx/billboard/mon_animated/chansey.2bpp"
TangelaAnimatedPic: ; 0x80c00
INCBIN "gfx/billboard/mon_animated/tangela.2bpp"
KangaskhanAnimatedPic: ; 0x80f00
INCBIN "gfx/billboard/mon_animated/kangaskhan.2bpp"
HorseaAnimatedPic: ; 0x81200
INCBIN "gfx/billboard/mon_animated/horsea.2bpp"
GoldeenAnimatedPic: ; 0x81500
INCBIN "gfx/billboard/mon_animated/goldeen.2bpp"
StaryuAnimatedPic: ; 0x81800
INCBIN "gfx/billboard/mon_animated/staryu.2bpp"
Mr_MimeAnimatedPic: ; 0x81b00
INCBIN "gfx/billboard/mon_animated/mr_mime.2bpp"
ScytherAnimatedPic: ; 0x81e00
INCBIN "gfx/billboard/mon_animated/scyther.2bpp"
JynxAnimatedPic: ; 0x82100
INCBIN "gfx/billboard/mon_animated/jynx.2bpp"
ElectabuzzAnimatedPic: ; 0x82400
INCBIN "gfx/billboard/mon_animated/electabuzz.2bpp"
MagmarAnimatedPic: ; 0x82700
INCBIN "gfx/billboard/mon_animated/magmar.2bpp"
PinsirAnimatedPic: ; 0x82a00
INCBIN "gfx/billboard/mon_animated/pinsir.2bpp"
TaurosAnimatedPic: ; 0x82d00
INCBIN "gfx/billboard/mon_animated/tauros.2bpp"
INCBIN "baserom.gbc",$83000,$84000 - $83000 ; 0x83000
SECTION "bank21", ROMX, BANK[$21]
MagikarpAnimatedPic: ; 0x84000
INCBIN "gfx/billboard/mon_animated/magikarp.2bpp"
LaprasAnimatedPic: ; 0x84300
INCBIN "gfx/billboard/mon_animated/lapras.2bpp"
DittoAnimatedPic: ; 0x84600
INCBIN "gfx/billboard/mon_animated/ditto.2bpp"
EeveeAnimatedPic: ; 0x84900
INCBIN "gfx/billboard/mon_animated/eevee.2bpp"
PorygonAnimatedPic: ; 0x84c00
INCBIN "gfx/billboard/mon_animated/porygon.2bpp"
OmanyteAnimatedPic: ; 0x84f00
INCBIN "gfx/billboard/mon_animated/omanyte.2bpp"
KabutoAnimatedPic: ; 0x85200
INCBIN "gfx/billboard/mon_animated/kabuto.2bpp"
AerodactylAnimatedPic: ; 0x85500
INCBIN "gfx/billboard/mon_animated/aerodactyl.2bpp"
SnorlaxAnimatedPic: ; 0x85800
INCBIN "gfx/billboard/mon_animated/snorlax.2bpp"
ArticunoAnimatedPic: ; 0x85b00
INCBIN "gfx/billboard/mon_animated/articuno.2bpp"
ZapdosAnimatedPic: ; 0x85e00
INCBIN "gfx/billboard/mon_animated/zapdos.2bpp"
MoltresAnimatedPic: ; 0x86100
INCBIN "gfx/billboard/mon_animated/moltres.2bpp"
DratiniAnimatedPic: ; 0x86400
INCBIN "gfx/billboard/mon_animated/dratini.2bpp"
MewtwoAnimatedPic: ; 0x86700
INCBIN "gfx/billboard/mon_animated/mewtwo.2bpp"
MewAnimatedPic: ; 0x86a00
INCBIN "gfx/billboard/mon_animated/mew.2bpp"
INCBIN "baserom.gbc",$86d00,$88000 - $86d00 ; 0x86d00
SECTION "bank22", ROMX, BANK[$22]
ZubatAnimatedPic: ; 0x88000
INCBIN "gfx/billboard/mon_animated/zubat.2bpp"
OddishAnimatedPic: ; 0x88300
INCBIN "gfx/billboard/mon_animated/oddish.2bpp"
ParasAnimatedPic: ; 0x88600
INCBIN "gfx/billboard/mon_animated/paras.2bpp"
VenonatAnimatedPic: ; 0x88900
INCBIN "gfx/billboard/mon_animated/venonat.2bpp"
DiglettAnimatedPic: ; 0x88c00
INCBIN "gfx/billboard/mon_animated/diglett.2bpp"
MeowthAnimatedPic: ; 0x88f00
INCBIN "gfx/billboard/mon_animated/meowth.2bpp"
PsyduckAnimatedPic: ; 0x89200
INCBIN "gfx/billboard/mon_animated/psyduck.2bpp"
MankeyAnimatedPic: ; 0x89500
INCBIN "gfx/billboard/mon_animated/mankey.2bpp"
GrowlitheAnimatedPic: ; 0x89800
INCBIN "gfx/billboard/mon_animated/growlithe.2bpp"
PoliwagAnimatedPic: ; 0x89b00
INCBIN "gfx/billboard/mon_animated/poliwag.2bpp"
AbraAnimatedPic: ; 0x89e00
INCBIN "gfx/billboard/mon_animated/abra.2bpp"
MachopAnimatedPic: ; 0x8a100
INCBIN "gfx/billboard/mon_animated/machop.2bpp"
BellsproutAnimatedPic: ; 0x8a400
INCBIN "gfx/billboard/mon_animated/bellsprout.2bpp"
TentacoolAnimatedPic: ; 0x8a700
INCBIN "gfx/billboard/mon_animated/tentacool.2bpp"
GeodudeAnimatedPic: ; 0x8aa00
INCBIN "gfx/billboard/mon_animated/geodude.2bpp"
PonytaAnimatedPic: ; 0x8ad00
INCBIN "gfx/billboard/mon_animated/ponyta.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,$8c000 - $8bd00 ; 0x8bd00
SECTION "bank23", ROMX, BANK[$23]
BulbasaurAnimatedPic: ; 0x8c000
INCBIN "gfx/billboard/mon_animated/bulbasaur.2bpp"
CharmanderAnimatedPic: ; 0x8c300
INCBIN "gfx/billboard/mon_animated/charmander.2bpp"
SquirtleAnimatedPic: ; 0x8c600
INCBIN "gfx/billboard/mon_animated/squirtle.2bpp"
CaterpieAnimatedPic: ; 0x8c900
INCBIN "gfx/billboard/mon_animated/caterpie.2bpp"
WeedleAnimatedPic: ; 0x8cc00
INCBIN "gfx/billboard/mon_animated/weedle.2bpp"
PidgeyAnimatedPic: ; 0x8cf00
INCBIN "gfx/billboard/mon_animated/pidgey.2bpp"
RattataAnimatedPic: ; 0x8d200
INCBIN "gfx/billboard/mon_animated/rattata.2bpp"
SpearowAnimatedPic: ; 0x8d500
INCBIN "gfx/billboard/mon_animated/spearow.2bpp"
EkansAnimatedPic: ; 0x8d800
INCBIN "gfx/billboard/mon_animated/ekans.2bpp"
PikachuAnimatedPic: ; 0x8db00
INCBIN "gfx/billboard/mon_animated/pikachu.2bpp"
SandshrewAnimatedPic: ; 0x8de00
INCBIN "gfx/billboard/mon_animated/sandshrew.2bpp"
Nidoran_FAnimatedPic: ; 0x8e100
INCBIN "gfx/billboard/mon_animated/nidoran_f.2bpp"
Nidoran_MAnimatedPic: ; 0x8e400
INCBIN "gfx/billboard/mon_animated/nidoran_m.2bpp"
ClefairyAnimatedPic: ; 0x8e700
INCBIN "gfx/billboard/mon_animated/clefairy.2bpp"
VulpixAnimatedPic: ; 0x8ea00
INCBIN "gfx/billboard/mon_animated/vulpix.2bpp"
JigglypuffAnimatedPic: ; 0x8ed00
INCBIN "gfx/billboard/mon_animated/jigglypuff.2bpp"
INCBIN "baserom.gbc",$8f000,$90000 - $8f000 ; 0x8f000
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,$94000 - $93000 ; 0x93000
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,$98000 - $97000 ; 0x97000
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]
INCBIN "baserom.gbc",$9c000,$a0000 - $9c000 ; 0x9c000
SECTION "bank28", ROMX, BANK[$28]
INCBIN "baserom.gbc",$a0000,$a4000 - $a0000 ; 0xa0000
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,$ac000 - $a8000 ; 0xa8000
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,$b8000 - $b6c00 ; 0xb6c00
SECTION "bank2e", ROMX, BANK[$2e]
INCBIN "baserom.gbc",$b8000,$bc000 - $b8000 ; 0xb8000
SECTION "bank2f", ROMX, BANK[$2f]
INCBIN "baserom.gbc",$bc000,$bf800 - $bc000
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,$d8000 - $d4000 ; 0xd4000
SECTION "bank36", ROMX, BANK[$36]
INCBIN "baserom.gbc",$d8000,$da000 - $d8000 ; 0xd8000
CopyrightTextGfx: ; 0xda000
INCBIN "gfx/copyright_text.2bpp"
INCBIN "baserom.gbc",$da400,$dc000 - $da400 ; 0xda400
SECTION "bank37", ROMX, BANK[$37]
INCBIN "baserom.gbc",$dc000,$e0000 - $dc000 ; 0xdc000
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