summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
authorU-Fish-PC\Daniel <corrnondacqb@yahoo.com>2014-04-16 21:04:01 -0400
committerU-Fish-PC\Daniel <corrnondacqb@yahoo.com>2014-04-16 21:09:06 -0400
commit0e0218789087da14a5362a30c19c235e9f6f9d12 (patch)
tree4db6f45b777da937eb995e36a2740f72ae70487f /engine
parentdb56f59b99093c16e5704ab96e728f1179b984ad (diff)
Map songs and warps
Diffstat (limited to 'engine')
-rwxr-xr-xengine/bank7.asm377
-rwxr-xr-xengine/home.asm2080
-rwxr-xr-xengine/overworldmap.asm787
3 files changed, 3244 insertions, 0 deletions
diff --git a/engine/bank7.asm b/engine/bank7.asm
new file mode 100755
index 0000000..2885df8
--- /dev/null
+++ b/engine/bank7.asm
@@ -0,0 +1,377 @@
+INCBIN "baserom.gbc",$1c000,$1c056 - $1c000
+
+Func_1c056: ; 1c056 (7:4056)
+ push hl
+ push bc
+ push de
+ ld a, [$d32f]
+ add a
+ ld c, a
+ ld b, $0
+ ld hl, WarpDataPointers
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld bc, $0005
+ ld a, [$d330]
+ ld d, a
+ ld a, [$d331]
+ ld e, a
+.asm_1c072
+ ld a, [hli]
+ or [hl]
+ jr z, .asm_1c095
+ ld a, [hld]
+ cp e
+ jr nz, .asm_1c07e
+ ld a, [hl]
+ cp d
+ jr z, .asm_1c081
+.asm_1c07e
+ add hl, bc
+ jr .asm_1c072
+.asm_1c081
+ inc hl
+ inc hl
+ ld a, [hli]
+ ld [$d0bb], a
+ ld a, [hli]
+ ld [$d0bc], a
+ ld a, [hli]
+ ld [$d0bd], a
+ ld a, [$d334]
+ ld [$d0be], a
+.asm_1c095
+ pop de
+ pop bc
+ pop hl
+ ret
+
+WarpDataPointers: ; 1c099 (7:4099)
+ dw $0000
+ dw MasonLaboratoryWarpData
+ dw DeckMachineRoomWarpData
+ dw IshiharasHouseWarpData
+ dw FightingClubEntranceWarpData
+ dw FightingClubLobbyWarpData
+ dw FightingClubWarpData
+ dw RockClubEntranceWarpData
+ dw RockClubLobbyWarpData
+ dw RockClubWarpData
+ dw WaterClubEntranceWarpData
+ dw WaterClubLobbyWarpData
+ dw WaterClubWarpData
+ dw LightningClubEntranceWarpData
+ dw LightningClubLobbyWarpData
+ dw LightningClubWarpData
+ dw GrassClubEntranceWarpData
+ dw GrassClubLobbyWarpData
+ dw GrassClubWarpData
+ dw PsychicClubEntranceWarpData
+ dw PsychicClubLobbyWarpData
+ dw PsychicClubWarpData
+ dw ScienceClubEntranceWarpData
+ dw ScienceClubLobbyWarpData
+ dw ScienceClubWarpData
+ dw FireClubEntranceWarpData
+ dw FireClubLobbyWarpData
+ dw FireClubWarpData
+ dw ChallengeHallEntranceWarpData
+ dw ChallengeHallLobbyWarpData
+ dw ChallengeHallWarpData
+ dw PokemonDomeEntranceWarpData
+ dw PokemonDomeWarpData
+ dw HallOfHonorWarpData
+
+; each warp is five bytes long
+; coordinates are measured in tiles
+; 1: x coordinate of current map
+; 2: y coordinate of current map
+; 3: id of connected map
+; 4: x coordinate of connected map
+; 5: y coordinate of connected map
+; double null terminated
+MasonLaboratoryWarpData: ; 1c0dd (7:40dd)
+ db $0E,$1C,OVERWORLD_MAP, $00,$00
+ db $10,$1C,OVERWORLD_MAP, $00,$00
+ db $1A,$0A,DECK_MACHINE_ROOM,$02,$0A
+ db $1A,$0C,DECK_MACHINE_ROOM,$02,$0C
+ db $00,$00
+
+DeckMachineRoomWarpData: ; 1c0f3 (7:40f3)
+ db $00,$0A,MASON_LABORATORY,$18,$0A
+ db $00,$0C,MASON_LABORATORY,$18,$0C
+ db $00,$00
+
+IshiharasHouseWarpData: ; 1c0ff (7:40ff)
+ db $08,$16,OVERWORLD_MAP,$00,$00
+ db $0A,$16,OVERWORLD_MAP,$00,$00
+ db $00,$00
+
+FightingClubEntranceWarpData: ; 1c10b (7:410b)
+ db $08,$10,OVERWORLD_MAP, $00,$00
+ db $0A,$10,OVERWORLD_MAP, $00,$00
+ db $00,$06,FIGHTING_CLUB_LOBBY,$18,$0A
+ db $00,$08,FIGHTING_CLUB_LOBBY,$18,$0C
+ db $08,$00,FIGHTING_CLUB, $0A,$0E
+ db $0A,$00,FIGHTING_CLUB, $0C,$0E
+ db $00,$00
+
+FightingClubLobbyWarpData: ; 1c12b (7:412b)
+ db $1A,$0A,FIGHTING_CLUB_ENTRANCE,$02,$06
+ db $1A,$0C,FIGHTING_CLUB_ENTRANCE,$02,$08
+ db $00,$00
+
+FightingClubWarpData: ; 1c137 (7:4137)
+ db $0A,$10,FIGHTING_CLUB_ENTRANCE,$08,$02
+ db $0C,$10,FIGHTING_CLUB_ENTRANCE,$0A,$02
+ db $00,$00
+
+RockClubEntranceWarpData: ; 1c143 (7:4143)
+ db $08,$10,OVERWORLD_MAP, $00,$00
+ db $0A,$10,OVERWORLD_MAP, $00,$00
+ db $00,$06,ROCK_CLUB_LOBBY,$18,$0A
+ db $00,$08,ROCK_CLUB_LOBBY,$18,$0C
+ db $08,$00,ROCK_CLUB, $0C,$1A
+ db $0A,$00,ROCK_CLUB, $0E,$1A
+ db $00,$00
+
+RockClubLobbyWarpData: ; 1c163 (7:4163)
+ db $1A,$0A,ROCK_CLUB_ENTRANCE,$02,$06
+ db $1A,$0C,ROCK_CLUB_ENTRANCE,$02,$08
+ db $00,$00
+
+RockClubWarpData: ; 1c16f (7:416f)
+ db $0C,$1C,ROCK_CLUB_ENTRANCE,$08,$02
+ db $0E,$1C,ROCK_CLUB_ENTRANCE,$0A,$02
+ db $00,$00
+
+WaterClubEntranceWarpData: ; 1c17b (7:417b)
+ db $08,$10,OVERWORLD_MAP, $00,$00
+ db $0A,$10,OVERWORLD_MAP, $00,$00
+ db $00,$06,WATER_CLUB_LOBBY,$18,$0A
+ db $00,$08,WATER_CLUB_LOBBY,$18,$0C
+ db $08,$00,WATER_CLUB, $0C,$1C
+ db $0A,$00,WATER_CLUB, $0E,$1C
+ db $00,$00
+
+WaterClubLobbyWarpData: ; 1c19b (7:419b)
+ db $1A,$0A,WATER_CLUB_ENTRANCE,$02,$06
+ db $1A,$0C,WATER_CLUB_ENTRANCE,$02,$08
+ db $00,$00
+
+WaterClubWarpData: ; 1c1a7 (7:41a7)
+ db $0C,$1E,WATER_CLUB_ENTRANCE,$08,$02
+ db $0E,$1E,WATER_CLUB_ENTRANCE,$0A,$02
+ db $00,$00
+
+LightningClubEntranceWarpData: ; 1c1b3 (7:41b3)
+ db $08,$10,OVERWORLD_MAP, $00,$00
+ db $0A,$10,OVERWORLD_MAP, $00,$00
+ db $00,$06,LIGHTNING_CLUB_LOBBY,$18,$0A
+ db $00,$08,LIGHTNING_CLUB_LOBBY,$18,$0C
+ db $08,$00,LIGHTNING_CLUB, $0C,$1C
+ db $0A,$00,LIGHTNING_CLUB, $0E,$1C
+ db $00,$00
+
+LightningClubLobbyWarpData: ; 1c1d3 (7:41d3)
+ db $1A,$0A,LIGHTNING_CLUB_ENTRANCE,$02,$06
+ db $1A,$0C,LIGHTNING_CLUB_ENTRANCE,$02,$08
+ db $00,$00
+
+LightningClubWarpData: ; 1c1df (7:41df)
+ db $0C,$1E,LIGHTNING_CLUB_ENTRANCE,$08,$02
+ db $0E,$1E,LIGHTNING_CLUB_ENTRANCE,$0A,$02
+ db $00,$00
+
+GrassClubEntranceWarpData: ; 1c1eb (7:41eb)
+ db $08,$10,OVERWORLD_MAP, $00,$00
+ db $0A,$10,OVERWORLD_MAP, $00,$00
+ db $00,$06,GRASS_CLUB_LOBBY,$18,$0A
+ db $00,$08,GRASS_CLUB_LOBBY,$18,$0C
+ db $08,$00,GRASS_CLUB, $0C,$1C
+ db $0A,$00,GRASS_CLUB, $0E,$1C
+ db $00,$00
+
+GrassClubLobbyWarpData: ; 1c20b (7:420b)
+ db $1A,$0A,GRASS_CLUB_ENTRANCE,$02,$06
+ db $1A,$0C,GRASS_CLUB_ENTRANCE,$02,$08
+ db $00,$00
+
+GrassClubWarpData: ; 1c217 (7:4217)
+ db $0C,$1E,GRASS_CLUB_ENTRANCE,$08,$02
+ db $0E,$1E,GRASS_CLUB_ENTRANCE,$0A,$02
+ db $00,$00
+
+PsychicClubEntranceWarpData: ; 1c223 (7:4223)
+ db $08,$10,OVERWORLD_MAP, $00,$00
+ db $0A,$10,OVERWORLD_MAP, $00,$00
+ db $00,$06,PSYCHIC_CLUB_LOBBY,$18,$0A
+ db $00,$08,PSYCHIC_CLUB_LOBBY,$18,$0C
+ db $08,$00,PSYCHIC_CLUB, $0C,$18
+ db $0A,$00,PSYCHIC_CLUB, $0E,$18
+ db $00,$00
+
+PsychicClubLobbyWarpData: ; 1c243 (7:4243)
+ db $1A,$0A,PSYCHIC_CLUB_ENTRANCE,$02,$06
+ db $1A,$0C,PSYCHIC_CLUB_ENTRANCE,$02,$08
+ db $00,$00
+
+PsychicClubWarpData: ; 1c24f (7:424f)
+ db $0C,$1A,PSYCHIC_CLUB_ENTRANCE,$08,$02
+ db $0E,$1A,PSYCHIC_CLUB_ENTRANCE,$0A,$02
+ db $00,$00
+
+ScienceClubEntranceWarpData: ; 1c25b (7:425b)
+ db $08,$10,OVERWORLD_MAP, $00,$00
+ db $0A,$10,OVERWORLD_MAP, $00,$00
+ db $00,$06,SCIENCE_CLUB_LOBBY,$18,$0A
+ db $00,$08,SCIENCE_CLUB_LOBBY,$18,$0C
+ db $08,$00,SCIENCE_CLUB, $0C,$1C
+ db $0A,$00,SCIENCE_CLUB, $0E,$1C
+ db $00,$00
+
+ScienceClubLobbyWarpData: ; 1c27b (7:427b)
+ db $1A,$0A,SCIENCE_CLUB_ENTRANCE,$02,$06
+ db $1A,$0C,SCIENCE_CLUB_ENTRANCE,$02,$08
+ db $00,$00
+
+ScienceClubWarpData: ; 1c287 (7:4287)
+ db $0C,$1E,SCIENCE_CLUB_ENTRANCE,$08,$02
+ db $0E,$1E,SCIENCE_CLUB_ENTRANCE,$0A,$02
+ db $00,$00
+
+FireClubEntranceWarpData: ; 1c293 (7:4293)
+ db $08,$10,OVERWORLD_MAP, $00,$00
+ db $0A,$10,OVERWORLD_MAP, $00,$00
+ db $00,$06,FIRE_CLUB_LOBBY,$18,$0A
+ db $00,$08,FIRE_CLUB_LOBBY,$18,$0C
+ db $08,$00,FIRE_CLUB, $0C,$1C
+ db $0A,$00,FIRE_CLUB, $0E,$1C
+ db $00,$00
+
+FireClubLobbyWarpData: ; 1c2b3 (7:42b3)
+ db $1A,$0A,FIRE_CLUB_ENTRANCE,$02,$06
+ db $1A,$0C,FIRE_CLUB_ENTRANCE,$02,$08
+ db $00,$00
+
+FireClubWarpData: ; 1c2bf (7:42bf)
+ db $0C,$1E,FIRE_CLUB_ENTRANCE,$08,$02
+ db $0E,$1E,FIRE_CLUB_ENTRANCE,$0A,$02
+ db $00,$00
+
+ChallengeHallEntranceWarpData: ; 1c2cb (7:42cb)
+ db $08,$10,OVERWORLD_MAP, $00,$00
+ db $0A,$10,OVERWORLD_MAP, $00,$00
+ db $00,$06,CHALLENGE_HALL_LOBBY,$18,$0A
+ db $00,$08,CHALLENGE_HALL_LOBBY,$18,$0C
+ db $08,$00,CHALLENGE_HALL, $0E,$1C
+ db $0A,$00,CHALLENGE_HALL, $10,$1C
+ db $00,$00
+
+ChallengeHallLobbyWarpData: ; 1c2eb (7:42eb)
+ db $1A,$0A,CHALLENGE_HALL_ENTRANCE,$02,$06
+ db $1A,$0C,CHALLENGE_HALL_ENTRANCE,$02,$08
+ db $00,$00
+
+ChallengeHallWarpData: ; 1c2f7 (7:42f7)
+ db $0E,$1E,CHALLENGE_HALL_ENTRANCE,$08,$02
+ db $10,$1E,CHALLENGE_HALL_ENTRANCE,$0A,$02
+ db $00,$00
+
+PokemonDomeEntranceWarpData: ; 1c303 (7:4303)
+ db $0E,$10,OVERWORLD_MAP,$00,$00
+ db $10,$10,OVERWORLD_MAP,$00,$00
+ db $16,$00,POKEMON_DOME, $0E,$1C
+ db $18,$00,POKEMON_DOME, $10,$1C
+ db $00,$00
+
+PokemonDomeWarpData: ; 1c319 (7:4319)
+ db $0E,$1E,POKEMON_DOME_ENTRANCE,$16,$02
+ db $10,$1E,POKEMON_DOME_ENTRANCE,$18,$02
+ db $0E,$00,HALL_OF_HONOR, $0A,$16
+ db $10,$00,HALL_OF_HONOR, $0C,$16
+ db $00,$00
+
+HallOfHonorWarpData: ; 1c32f (7:432f)
+ db $0A,$18,POKEMON_DOME,$0E,$02
+ db $0C,$18,POKEMON_DOME,$10,$02
+ db $00,$00
+
+Func_1c33b: ; 1c33b (7:433b)
+ push hl
+ push bc
+ push de
+ ld a, [$d32f]
+ add a
+ ld c, a
+ add a
+ add c
+ ld c, a
+ ld b, $0
+ ld hl, MapSongs
+ add hl, bc
+ ld a, [hli]
+ ld [$d131], a
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld [$d28f], a
+ ld a, [hli]
+ ld [$d132], a
+ ld a, [hli]
+ ld [$d290], a
+ ld a, [hli]
+ ld [$d111], a
+ ld a, [$cab4]
+ cp $2
+ jr nz, .asm_1c370
+ ld a, c
+ or a
+ jr z, .asm_1c370
+ ld [$d131], a
+.asm_1c370
+ pop de
+ pop bc
+ pop hl
+ ret
+
+; todo: figure out the rest of the data for each map
+MapSongs: ; 1c374 (7:4374)
+ db $00,$01,$00,$01,$01,MUSIC_OVERWORLD ; OVERWORLD_MAP
+ db $02,$03,$00,$02,$02,MUSIC_OVERWORLD ; MASON_LABORATORY
+ db $06,$07,$00,$02,$02,MUSIC_OVERWORLD ; DECK_MACHINE_ROOM
+ db $0A,$0B,$00,$03,$03,MUSIC_OVERWORLD ; ISHIHARAS_HOUSE
+ db $0C,$0D,$00,$03,$04,MUSIC_OVERWORLD ; FIGHTING_CLUB_ENTRANCE
+ db $1E,$1F,$00,$03,$0C,MUSIC_OVERWORLD ; FIGHTING_CLUB_LOBBY
+ db $20,$21,$00,$04,$0D,MUSIC_CLUB3 ; FIGHTING_CLUB
+ db $0E,$0F,$00,$03,$05,MUSIC_OVERWORLD ; ROCK_CLUB_ENTRANCE
+ db $1E,$1F,$00,$03,$0C,MUSIC_OVERWORLD ; ROCK_CLUB_LOBBY
+ db $22,$23,$00,$04,$0E,MUSIC_CLUB2 ; ROCK_CLUB
+ db $10,$11,$00,$03,$06,MUSIC_OVERWORLD ; WATER_CLUB_ENTRANCE
+ db $1E,$1F,$00,$03,$0C,MUSIC_OVERWORLD ; WATER_CLUB_LOBBY
+ db $24,$25,$00,$02,$0F,MUSIC_CLUB2 ; WATER_CLUB
+ db $12,$13,$00,$03,$07,MUSIC_OVERWORLD ; LIGHTNING_CLUB_ENTRANCE
+ db $1E,$1F,$00,$03,$0C,MUSIC_OVERWORLD ; LIGHTNING_CLUB_LOBBY
+ db $26,$27,$00,$05,$10,MUSIC_CLUB1 ; LIGHTNING_CLUB
+ db $14,$15,$00,$03,$08,MUSIC_OVERWORLD ; GRASS_CLUB_ENTRANCE
+ db $1E,$1F,$00,$03,$0C,MUSIC_OVERWORLD ; GRASS_CLUB_LOBBY
+ db $28,$29,$00,$06,$11,MUSIC_CLUB1 ; GRASS_CLUB
+ db $16,$17,$00,$03,$09,MUSIC_OVERWORLD ; PSYCHIC_CLUB_ENTRANCE
+ db $1E,$1F,$00,$03,$0C,MUSIC_OVERWORLD ; PSYCHIC_CLUB_LOBBY
+ db $2A,$2B,$00,$07,$12,MUSIC_CLUB2 ; PSYCHIC_CLUB
+ db $18,$19,$00,$03,$0A,MUSIC_OVERWORLD ; SCIENCE_CLUB_ENTRANCE
+ db $1E,$1F,$00,$03,$0C,MUSIC_OVERWORLD ; SCIENCE_CLUB_LOBBY
+ db $2C,$2D,$00,$06,$13,MUSIC_CLUB3 ; SCIENCE_CLUB
+ db $1A,$1B,$00,$03,$0B,MUSIC_OVERWORLD ; FIRE_CLUB_ENTRANCE
+ db $1E,$1F,$00,$03,$0C,MUSIC_OVERWORLD ; FIRE_CLUB_LOBBY
+ db $2E,$2F,$00,$08,$14,MUSIC_CLUB3 ; FIRE_CLUB
+ db $1C,$1D,$00,$03,$04,MUSIC_OVERWORLD ; CHALLENGE_HALL_ENTRANCE
+ db $1E,$1F,$00,$03,$0C,MUSIC_OVERWORLD ; CHALLENGE_HALL_LOBBY
+ db $30,$31,$00,$09,$15,MUSIC_OVERWORLD ; CHALLENGE_HALL
+ db $32,$33,$00,$0A,$16,MUSIC_OVERWORLD ; POKEMON_DOME_ENTRANCE
+ db $36,$37,$00,$0A,$17,MUSIC_POKEMONDOME ; POKEMON_DOME
+ db $3A,$3B,$00,$0A,$18,MUSIC_HALLOFHONOR ; HALL_OF_HONOR
+
+INCBIN "baserom.gbc",$1c440,$20000 - $1c440 \ No newline at end of file
diff --git a/engine/home.asm b/engine/home.asm
new file mode 100755
index 0000000..f90dd3b
--- /dev/null
+++ b/engine/home.asm
@@ -0,0 +1,2080 @@
+; rst vectors
+SECTION "rst00",ROM0[0]
+ ret
+SECTION "rst08",ROM0[8]
+ ret
+SECTION "rst10",ROM0[$10]
+ ret
+SECTION "rst18",ROM0[$18]
+ jp RST18
+SECTION "rst20",ROM0[$20]
+ jp RST20
+SECTION "rst28",ROM0[$28]
+ jp RST28
+SECTION "rst30",ROM0[$30]
+ ret
+SECTION "rst38",ROM0[$38]
+ ret
+
+; interrupts
+SECTION "vblank",ROM0[$40]
+ jp VBlankHandler
+SECTION "lcdc",ROM0[$48]
+ call $cacd
+ reti
+SECTION "timer",ROM0[$50]
+ jp TimerHandler
+SECTION "serial",ROM0[$58]
+ jp SerialHandler
+SECTION "joypad",ROM0[$60]
+ reti
+
+SECTION "romheader",ROM0[$100]
+ nop
+ jp Start
+
+SECTION "start",ROM0[$150]
+Start: ; 0150 (0:0150)
+ di
+ ld sp, $fffe
+ push af
+ xor a
+ ld [$ff0f], a
+ ld [$ffff], a
+ call Func_03ec
+ ld a, $1
+ call BankswitchHome
+ xor a
+ call Func_07a9
+ call Func_07c5
+ call Func_028a
+ pop af
+ ld [$cab3], a
+ call Func_0349
+ ld a, $20
+ ld [$cab6], a
+ call Func_03a1
+ call Func_030b
+ call Func_036a
+ call Func_377f
+ call Func_0241
+ call Func_0ea6
+ call CopyDMAFunction
+ call Func_080b
+ ld a, BANK(Func_4000)
+ call BankswitchHome
+ ld sp, $e000
+ jp Func_4000
+
+VBlankHandler: ; 019b (0:019b)
+ push af
+ push bc
+ push de
+ push hl
+ ld a, [$ff80]
+ push af
+ ld hl, $caba
+ bit 0, [hl]
+ jr nz, .asm_1dd
+ set 0, [hl]
+ ld a, [$cac0]
+ or a
+ jr z, .asm_1b8
+ call $ff83
+ xor a
+ ld [$cac0], a
+.asm_1b8
+ ld a, [$ff92]
+ ld [$ff43], a
+ ld a, [$ff93]
+ ld [$ff42], a
+ ld a, [$ff94]
+ ld [$ff4b], a
+ ld a, [$ff95]
+ ld [$ff4a], a
+ ld a, [$cabb]
+ ld [$ff40], a
+ ei
+ call $cad0
+ call Func_042d
+ ld hl, $cab8
+ inc [hl]
+ ld hl, $caba
+ res 0, [hl]
+.asm_1dd
+ pop af
+ call BankswitchHome
+ pop hl
+ pop de
+ pop bc
+ pop af
+ reti
+
+TimerHandler: ; 01e6 (0:01e6)
+ push af
+ push hl
+ push de
+ push bc
+ ei
+ call Func_0c91
+ ld hl, $cac3
+ ld a, [hl]
+ inc [hl]
+ and $3
+ jr nz, .asm_217
+ call Func_021c
+ ld hl, $caba
+ bit 1, [hl]
+ jr nz, .asm_217
+ set 1, [hl]
+ ld a, [$ff80]
+ push af
+ ld a, BANK(Func_f4003)
+ call BankswitchHome
+ call Func_f4003
+ pop af
+ call BankswitchHome
+ ld hl, $caba
+ res 1, [hl]
+.asm_217
+ pop bc
+ pop de
+ pop hl
+ pop af
+ reti
+
+Func_021c: ; 021c (0:021c)
+ ld a, [$cac4]
+ or a
+ ret z
+ ld hl, $cac5
+ inc [hl]
+ ld a, [hl]
+ cp $3c
+ ret c
+ ld [hl], $0
+ inc hl
+ inc [hl]
+ ld a, [hl]
+ cp $3c
+ ret c
+ ld [hl], $0
+ inc hl
+ inc [hl]
+ ld a, [hl]
+ cp $3c
+ ret c
+ ld [hl], $0
+ inc hl
+ inc [hl]
+ ret nz
+ inc hl
+ inc [hl]
+ ret
+
+Func_0241: ; 0241 (0:0241)
+ ld b, $bc
+ call Func_025c
+ jr c, .asm_250
+ ld a, [$ff4d]
+ and $80
+ jr z, .asm_250
+ ld b, $78
+.asm_250
+ ld a, b
+ ld [$ff06], a
+ ld a, $3
+ ld [$ff07], a
+ ld a, $7
+ ld [$ff07], a
+ ret
+
+Func_025c: ; 025c (0:025c)
+ ld a, [$cab4]
+ cp $2
+ ret z
+ scf
+ ret
+; 0x264
+
+INCBIN "baserom.gbc",$0264,$028a - $0264
+
+Func_028a: ; 028a (0:028a)
+ ld a, [$ff40]
+ bit 7, a
+ ret z
+ ld a, [$ffff]
+ ld [$cab7], a
+ res 0, a
+ ld [$ffff], a
+.asm_298
+ ld a, [$ff44]
+ cp $91
+ jr nz, .asm_298
+ ld a, [$ff40]
+ and $7f
+ ld [$ff40], a
+ ld a, [$cabb]
+ and $7f
+ ld [$cabb], a
+ xor a
+ ld [$ff47], a
+ ld [$ff48], a
+ ld [$ff49], a
+ ld a, [$cab7]
+ ld [$ffff], a
+ ret
+; 0x2b9
+
+INCBIN "baserom.gbc",$02b9,$030b - $02b9
+
+Func_030b: ; 030b (0:030b)
+ xor a
+ ld [$ff42], a
+ ld [$ff43], a
+ ld [$ff4a], a
+ ld [$ff4b], a
+ ld [$cab0], a
+ ld [$cab1], a
+ ld [$cab2], a
+ ld [$ff92], a
+ ld [$ff93], a
+ ld [$ff94], a
+ ld [$ff95], a
+ xor a
+ ld [$caba], a
+ ld a, $c3
+ ld [$cacd], a
+ ld [$cad0], a
+ ld hl, $cad1
+ ld [hl], Func_0348 & $ff
+ inc hl
+ ld [hl], Func_0348 >> $8
+ ld a, $47
+ ld [$cabb], a
+ ld a, $1
+ ld [$6000], a
+ ld a, $a
+ ld [$0000], a
+Func_0348: ; 0348 (0:0348)
+ ret
+
+Func_0349: ; 0349 (0:0349)
+ ld b, $2
+ cp $11
+ jr z, .asm_35b
+ call Func_0b59
+ ld b, $0
+ jr nc, .asm_35b
+ call Func_0a0d
+ ld b, $1
+.asm_35b
+ ld a, b
+ ld [$cab4], a
+ cp $2
+ ret nz
+ ld a, $1
+ ld [$ff70], a
+ call Func_07e7
+ ret
+
+Func_036a: ; 036a (0:036a)
+ ld hl, $cabc
+ ld a, $e4
+ ld [$ff47], a
+ ld [hli], a
+ ld [$ff48], a
+ ld [$ff49], a
+ ld [hli], a
+ ld [hl], a
+ xor a
+ ld [$cabf], a
+ ld a, [$cab4]
+ cp $2
+ ret nz
+ ld de, $caf0
+ ld c, $10
+.asm_387
+ ld hl, InitialPalette
+ ld b, $8
+.asm_38c
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec b
+ jr nz, .asm_38c
+ dec c
+ jr nz, .asm_387
+ call Func_0458
+ ret
+
+InitialPalette: ; 0399 (0:0399)
+ RGB 28,28,24
+ RGB 21,21,16
+ RGB 10,10,08
+ RGB 00,00,00
+
+Func_03a1: ; 03a1 (0:03a1)
+ call Func_03c0
+ call Func_025c
+ jr c, .asm_3b2
+ call Func_07cd
+ call .asm_3b2
+ call Func_07c5
+.asm_3b2
+ ld hl, $8000
+ ld bc, $1800
+.asm_3b8
+ xor a
+ ld [hli], a
+ dec bc
+ ld a, b
+ or c
+ jr nz, .asm_3b8
+ ret
+
+Func_03c0: ; 03c0 (0:03c0)
+ call Func_07c5
+ ld hl, $9800
+ ld bc, $0400
+.asm_3c9
+ ld a, [$cab6]
+ ld [hli], a
+ dec bc
+ ld a, c
+ or b
+ jr nz, .asm_3c9
+ ld a, [$cab4]
+ cp $2
+ ret nz
+ call Func_07cd
+ ld hl, $9800
+ ld bc, $0400
+.asm_3e1
+ xor a
+ ld [hli], a
+ dec bc
+ ld a, c
+ or b
+ jr nz, .asm_3e1
+ call Func_07c5
+ ret
+
+Func_03ec: ; 03ec (0:03ec)
+ ld hl, $c000
+ ld bc, $2000
+.asm_3f2
+ xor a
+ ld [hli], a
+ dec bc
+ ld a, c
+ or b
+ jr nz, .asm_3f2
+ ld c, $80
+ ld b, $70
+ xor a
+.asm_3fe
+ ld [$ff00+c], a
+ inc c
+ dec b
+ jr nz, .asm_3fe
+ ret
+; 0x404
+
+INCBIN "baserom.gbc",$0404,$042d - $0404
+
+Func_042d: ; 042d (0:042d)
+ ld a, [$cabf]
+ or a
+ ret z
+ ld hl, $cabc
+ ld a, [hli]
+ ld [$ff47], a
+ ld a, [hli]
+ ld [$ff48], a
+ ld a, [hl]
+ ld [$ff49], a
+ ld a, [$cab4]
+ cp $2
+ jr z, asm_44a
+asm_445
+ xor a
+ ld [$cabf], a
+ ret
+asm_44a
+ ld a, [$cabf]
+ bit 6, a
+ jr nz, Func_0458
+ ld b, $8
+ call InitializePalettes
+ jr asm_445
+
+Func_0458: ; 0458 (0:0458)
+ xor a
+ ld b, $40
+ call InitializePalettes
+ ld a, $8
+ ld b, $40
+ call InitializePalettes
+ jr asm_445
+
+InitializePalettes: ; 0467 (0:0467)
+ add a
+ add a
+ add a
+ ld e, a
+ ld d, $0
+ ld hl, $caf0
+ add hl, de
+ ld c, $68
+ bit 6, a
+ jr z, .asm_479
+ ld c, $6a
+.asm_479
+ and $bf
+ ld e, a
+.asm_47c
+ ld a, e
+ ld [$ff00+c], a
+ inc c
+.asm_47f
+ ld a, [$ff41]
+ and $2
+ jr nz, .asm_47f
+ ld a, [hl]
+ ld [$ff00+c], a
+ ld a, [$ff00+c]
+ cp [hl]
+ jr nz, .asm_47f
+ inc hl
+ dec c
+ inc e
+ dec b
+ jr nz, .asm_47c
+ ret
+; 0x492
+
+INCBIN "baserom.gbc",$0492,$0593 - $0492
+
+CopyDMAFunction: ; 0593 (0:0593)
+ ld c, $83
+ ld b, $a
+ ld hl, DMA
+.asm_59a
+ ld a, [hli]
+ ld [$ff00+c], a
+ inc c
+ dec b
+ jr nz, .asm_59a
+ ret
+
+; CopyDMAFunction copies this function to $ff83
+DMA: ; 05a1 (0:05a1)
+ ld a, $ca
+ ld [$ff46], a
+ ld a, $28
+.asm_5a7
+ dec a
+ jr nz, .asm_5a7
+ ret
+
+; jumps to index a in pointer table hl
+JumpToFunctionInTable: ; 05ab (0:05ab)
+ add a
+ add l
+ ld l, a
+ ld a, $0
+ adc h
+ ld h, a
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; 0x5b6
+
+INCBIN "baserom.gbc",$05b6,$0732 - $05b6
+
+CopyData_SaveRegisters: ; 0732 (0:0732)
+ push hl
+ push de
+ push bc
+ call CopyData
+ pop bc
+ pop de
+ pop hl
+ ret
+
+; copies bc bytes from hl to de
+CopyData: ; 073c (0:073c)
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec bc
+ ld a, c
+ or b
+ jr nz, CopyData
+ ret
+
+Func_0745: ; 0745 (0:0745)
+ push hl
+ push bc
+ push af
+ push de
+ ld e, l
+ ld d, h
+ ld hl, [sp+$9]
+ ld b, [hl]
+ dec hl
+ ld c, [hl]
+ dec hl
+ ld [hl], b
+ dec hl
+ ld [hl], c
+ ld hl, [sp+$9]
+ ld a, [$ff80]
+ ld [hld], a
+ ld [hl], $0
+ ld a, d
+ rlca
+ rlca
+ and $3
+ ld b, a
+ res 7, d
+ set 6, d
+ ld l, e
+ ld h, d
+ pop de
+ pop af
+ add b
+ call BankswitchHome
+ pop bc
+ ret
+; 0x76f
+
+INCBIN "baserom.gbc",$076f,$078e - $076f
+
+Func_078e: ; 078e (0:078e)
+ push hl
+ push de
+ ld hl, [sp+$7]
+ ld a, [hld]
+ call BankswitchHome
+ dec hl
+ ld d, [hl]
+ dec hl
+ ld e, [hl]
+ inc hl
+ inc hl
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ pop de
+ pop hl
+ pop af
+ ret
+
+BankswitchHome: ; 07a3 (0:07a3)
+ ld [$ff80], a
+ ld [$2000], a
+ ret
+
+Func_07a9: ; 07a9 (0:07a9)
+ push af
+ ld [$ff81], a
+ ld [$4000], a
+ ld a, $a
+ ld [$0000], a
+ pop af
+ ret
+
+Func_07b6: ; 07b6 (0:07b6)
+ push af
+ ld a, $a
+ ld [$0000], a
+ pop af
+ ret
+
+Func_07be: ; 07be (0:07be)
+ push af
+ xor a
+ ld [$0000], a
+ pop af
+ ret
+
+Func_07c5: ; 07c5 (0:07c5)
+ push af
+ xor a
+ ld [$ff82], a
+ ld [$ff4f], a
+ pop af
+ ret
+
+Func_07cd: ; 07cd (0:07cd)
+ push af
+ ld a, $1
+ ld [$ff82], a
+ ld [$ff4f], a
+ pop af
+ ret
+; 0x7d6
+
+INCBIN "baserom.gbc",$07d6,$07e7 - $07d6
+
+Func_07e7: ; 07e7 (0:07e7)
+ call Func_025c
+ ret c
+ ld hl, $ff4d
+ bit 7, [hl]
+ ret nz
+ ld a, [$ffff]
+ push af
+ xor a
+ ld [$ffff], a
+ set 0, [hl]
+ xor a
+ ld [$ff0f], a
+ ld [$ffff], a
+ ld a, $30
+ ld [$ff00], a
+ stop
+ call Func_0241
+ pop af
+ ld [$ffff], a
+ ret
+
+Func_080b: ; 080b (0:080b)
+ xor a
+ call Func_07a9
+ ld hl, $a000
+ ld bc, $1000
+.asm_815
+ ld a, [hli]
+ cp $41
+ jr nz, .asm_82f
+ ld a, [hli]
+ cp $93
+ jr nz, .asm_82f
+ dec bc
+ ld a, c
+ or b
+ jr nz, .asm_815
+ call Func_084d
+ scf
+ call $4050
+ call Func_07be
+ ret
+.asm_82f
+ ld hl, $a000
+ ld a, [hli]
+ cp $4
+ jr nz, .asm_842
+ ld a, [hli]
+ cp $21
+ jr nz, .asm_842
+ ld a, [hl]
+ cp $5
+ jr nz, .asm_842
+ ret
+.asm_842
+ call Func_084d
+ or a
+ call $4050
+ call Func_07be
+ ret
+
+Func_084d: ; 084d (0:084d)
+ ld a, $3
+.asm_84f
+ call Func_0863
+ dec a
+ cp $ff
+ jr nz, .asm_84f
+ ld hl, $a000
+ ld [hl], $4
+ inc hl
+ ld [hl], $21
+ inc hl
+ ld [hl], $5
+ ret
+
+Func_0863: ; 0863 (0:0863)
+ push af
+ call Func_07a9
+ call Func_07b6
+ ld hl, $a000
+ ld bc, $2000
+.asm_870
+ xor a
+ ld [hli], a
+ dec bc
+ ld a, c
+ or b
+ jr nz, .asm_870
+ pop af
+ ret
+; 0x879
+
+INCBIN "baserom.gbc",$0879,$09ae - $0879
+
+RST18: ; 09ae (0:09ae)
+ push hl
+ push hl
+ push hl
+ push hl
+ push de
+ push af
+ ld hl, [sp+$d]
+ ld d, [hl]
+ dec hl
+ ld e, [hl]
+ dec hl
+ ld [hl], $0
+ dec hl
+ ld a, [$ff80]
+ ld [hld], a
+ ld [hl], $9
+ dec hl
+ ld [hl], $dc
+ dec hl
+ inc de
+ ld a, [de]
+ ld [hld], a
+ dec de
+ ld a, [de]
+ ld [hl], a
+ ld a, $1
+ ; fallthrough
+Func_09ce: ; 09ce (0:09ce)
+ call BankswitchHome
+ ld hl, [sp+$d]
+ inc de
+ inc de
+ ld [hl], d
+ dec hl
+ ld [hl], e
+ pop af
+ pop de
+ pop hl
+ ret
+; 0x9dc
+
+INCBIN "baserom.gbc",$09dc,$09e9 - $09dc
+
+RST28: ; 09e9 (0:09e9)
+ push hl
+ push hl
+ push hl
+ push hl
+ push de
+ push af
+ ld hl, [sp+$d]
+ ld d, [hl]
+ dec hl
+ ld e, [hl]
+ dec hl
+ ld [hl], $0
+ dec hl
+ ld a, [$ff80]
+ ld [hld], a
+ ld [hl], $9
+ dec hl
+ ld [hl], $dc
+ dec hl
+ inc de
+ inc de
+ ld a, [de]
+ ld [hld], a
+ dec de
+ ld a, [de]
+ ld [hl], a
+ dec de
+ ld a, [de]
+ inc de
+ jr Func_09ce
+
+Func_0a0d: ; 0a0d (0:0a0d)
+ ld hl, Unknown_0ad0
+ call Func_0b20
+ ld hl, Unknown_0a50
+ call Func_0b20
+ ld hl, Unknown_0a60
+ call Func_0b20
+ ld hl, Unknown_0a70
+ call Func_0b20
+ ld hl, Unknown_0a80
+ call Func_0b20
+ ld hl, Unknown_0a90
+ call Func_0b20
+ ld hl, Unknown_0aa0
+ call Func_0b20
+ ld hl, Unknown_0ab0
+ call Func_0b20
+ ld hl, Unknown_0ac0
+ call Func_0b20
+ ld hl, Unknown_0af0
+ call Func_0b20
+ ld hl, Unknown_0ae0
+ call Func_0b20
+ ret
+
+Unknown_0a50: ; 0a50 (0:0a50)
+INCBIN "baserom.gbc",$0a50,$0a60 - $0a50
+
+Unknown_0a60: ; 0a60 (0:0a60)
+INCBIN "baserom.gbc",$0a60,$0a70 - $0a60
+
+Unknown_0a70: ; 0a70 (0:0a70)
+INCBIN "baserom.gbc",$0a70,$0a80 - $0a70
+
+Unknown_0a80: ; 0a80 (0:0a80)
+INCBIN "baserom.gbc",$0a80,$0a90 - $0a80
+
+Unknown_0a90: ; 0a90 (0:0a90)
+INCBIN "baserom.gbc",$0a90,$0aa0 - $0a90
+
+Unknown_0aa0: ; 0aa0 (0:0aa0)
+INCBIN "baserom.gbc",$0aa0,$0ab0 - $0aa0
+
+Unknown_0ab0: ; 0ab0 (0:0ab0)
+INCBIN "baserom.gbc",$0ab0,$0ac0 - $0ab0
+
+Unknown_0ac0: ; 0ac0 (0:0ac0)
+INCBIN "baserom.gbc",$0ac0,$0ad0 - $0ac0
+
+Unknown_0ad0: ; 0ad0 (0:0ad0)
+INCBIN "baserom.gbc",$0ad0,$0ae0 - $0ad0
+
+Unknown_0ae0: ; 0ae0 (0:0ae0)
+INCBIN "baserom.gbc",$0ae0,$0af0 - $0ae0
+
+Unknown_0af0: ; 0af0 (0:0af0)
+INCBIN "baserom.gbc",$0af0,$0b20 - $0af0
+
+Func_0b20: ; 0b20 (0:0b20)
+ ld a, [hl]
+ and $7
+ ret z
+ ld b, a
+ ld c, $0
+.asm_b27
+ push bc
+ ld a, $0
+ ld [$ff00+c], a
+ ld a, $30
+ ld [$ff00+c], a
+ ld b, $10
+.asm_b30
+ ld e, $8
+ ld a, [hli]
+ ld d, a
+.asm_b34
+ bit 0, d
+ ld a, $10
+ jr nz, .asm_b3c
+ ld a, $20
+.asm_b3c
+ ld [$ff00+c], a
+ ld a, $30
+ ld [$ff00+c], a
+ rr d
+ dec e
+ jr nz, .asm_b34
+ dec b
+ jr nz, .asm_b30
+ ld a, $20
+ ld [$ff00+c], a
+ ld a, $30
+ ld [$ff00+c], a
+ pop bc
+ dec b
+ jr nz, .asm_b27
+ ld bc, $0004
+ call Wait
+ ret
+
+Func_0b59: ; 0b59 (0:0b59)
+ ld bc, $003c
+ call Wait
+ ld hl, Unknown_0bbb
+ call Func_0b20
+ ld a, [$ff00]
+ and $3
+ cp $3
+ jr nz, .asm_ba3
+ 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_ba3
+ ld hl, Unknown_0bab
+ call Func_0b20
+ or a
+ ret
+.asm_ba3
+ ld hl, Unknown_0bab
+ call Func_0b20
+ scf
+ ret
+
+Unknown_0bab: ; 0bab (0:0bab)
+INCBIN "baserom.gbc",$0bab,$0bbb - $0bab
+
+Unknown_0bbb: ; 0bbb (0:0bbb)
+INCBIN "baserom.gbc",$0bbb,$0c08 - $0bbb
+
+; loops 1750 * bc times
+Wait: ; 0c08 (0:0c08)
+ ld de, 1750
+.loop
+ nop
+ nop
+ nop
+ dec de
+ ld a, d
+ or e
+ jr nz, .loop
+ dec bc
+ ld a, b
+ or c
+ jr nz, Wait
+ ret
+; 0xc19
+
+INCBIN "baserom.gbc",$0c19,$0c32 - $0c19
+
+Func_0c32: ; 0c32 (0:0c32)
+ push bc
+.asm_c33
+ ei
+ di
+ ld a, [$ff41]
+ and $3
+ jr nz, .asm_c33
+ ld a, [de]
+ ld [hl], a
+ ld a, [$ff41]
+ and $3
+ jr nz, .asm_c33
+ ei
+ inc hl
+ inc de
+ dec c
+ jr nz, .asm_c33
+ pop bc
+ ret
+; 0xc4b
+
+INCBIN "baserom.gbc",$0c4b,$0c91 - $0c4b
+
+Func_0c91: ; 0c91 (0:0c91)
+ ld a, [$cb74]
+ cp $29
+ jr z, .asm_c9d
+ cp $12
+ jr z, .asm_caa
+ ret
+.asm_c9d
+ ld a, [$ff02]
+ add a
+ ret c
+ ld a, $1
+ ld [$ff02], a
+ ld a, $81
+ ld [$ff02], a
+ ret
+.asm_caa
+ ld a, [$cb76]
+ ld hl, $cb77
+ cp [hl]
+ ld [hl], a
+ ld hl, $cb78
+ jr nz, .asm_cc2
+ inc [hl]
+ ld a, [hl]
+ cp $4
+ ret c
+ ld hl, $cb75
+ set 7, [hl]
+ ret
+.asm_cc2
+ ld [hl], $0
+ ret
+; 0xcc5
+
+INCBIN "baserom.gbc",$0cc5,$0d26 - $0cc5
+
+SerialHandler: ; 0d26 (0:0d26)
+ push af
+ push hl
+ push de
+ push bc
+ ld a, [$ce63]
+ or a
+ jr z, .asm_d35
+ call Func_3189
+ jr .asm_d6e
+.asm_d35
+ ld a, [$cb74]
+ or a
+ jr z, .asm_d55
+ ld a, [$ff01]
+ call Func_0d77
+ call Func_0dc8
+ push af
+.asm_d44
+ ld a, [$ff02]
+ add a
+ jr c, .asm_d44
+ pop af
+ ld [$ff01], a
+ ld a, [$cb74]
+ cp $29
+ jr z, .asm_d6e
+ jr .asm_d6a
+.asm_d55
+ ld a, $1
+ ld [$cba2], a
+ ld a, [$ff01]
+ ld [$cba5], a
+ ld a, $ac
+ ld [$ff01], a
+ ld a, [$cba5]
+ cp $12
+ jr z, .asm_d6e
+.asm_d6a
+ ld a, $80
+ ld [$ff02], a
+.asm_d6e
+ ld hl, $cb76
+ inc [hl]
+ pop bc
+ pop de
+ pop hl
+ pop af
+ reti
+
+Func_0d77: ; 0d77 (0:0d77)
+ ld hl, $cba1
+ ld e, [hl]
+ dec e
+ jr z, .asm_d94
+ cp $ac
+ ret z
+ cp $ca
+ jr z, .asm_d92
+ or a
+ jr z, .asm_d8c
+ cp $ff
+ jr nz, .asm_d99
+.asm_d8c
+ ld hl, $cb75
+ set 6, [hl]
+ ret
+.asm_d92
+ inc [hl]
+ ret
+.asm_d94
+ ld [hl], $0
+ cpl
+ jr .asm_d9b
+.asm_d99
+ xor $c0
+.asm_d9b
+ push af
+ ld a, [$cba4]
+ ld e, a
+ ld a, [$cba3]
+ dec a
+ and $1f
+ cp e
+ jr z, .asm_dc1
+ ld d, $0
+ ld hl, $cba5
+ add hl, de
+ pop af
+ ld [hl], a
+ ld a, e
+ inc a
+ and $1f
+ ld [$cba4], a
+ ld hl, $cba2
+ inc [hl]
+ xor a
+ ld [$cb75], a
+ ret
+.asm_dc1
+ pop af
+ ld hl, $cb75
+ set 0, [hl]
+ ret
+
+Func_0dc8: ; 0dc8 (0:0dc8)
+ ld hl, $cb7d
+ ld a, [hl]
+ or a
+ jr nz, .asm_dd9
+ ld hl, $cb7e
+ ld a, [hl]
+ or a
+ jr nz, .asm_ddd
+ ld a, $ac
+ ret
+.asm_dd9
+ ld a, [hl]
+ ld [hl], $0
+ ret
+.asm_ddd
+ dec [hl]
+ ld a, [$cb7f]
+ ld e, a
+ ld d, $0
+ ld hl, $cb81
+ add hl, de
+ inc a
+ and $1f
+ ld [$cb7f], a
+ ld a, [hl]
+ xor $c0
+ cp $ac
+ jr z, .asm_e01
+ cp $ca
+ jr z, .asm_e01
+ cp $ff
+ jr z, .asm_e01
+ or a
+ jr z, .asm_e01
+ ret
+.asm_e01
+ xor $c0
+ cpl
+ ld [$cb7d], a
+ ld a, $ca
+ ret
+; 0xe0a
+
+INCBIN "baserom.gbc",$0e0a,$0ea6 - $0e0a
+
+Func_0ea6: ; 0ea6 (0:0ea6)
+ ld a, [$ffff]
+ and $f7
+ ld [$ffff], a
+ xor a
+ ld [$ff01], a
+ ld [$ff02], a
+ ld hl, $cb74
+ ld bc, $0051
+.asm_eb7
+ xor a
+ ld [hli], a
+ dec bc
+ ld a, c
+ or b
+ jr nz, .asm_eb7
+ ret
+; 0xebf
+
+INCBIN "baserom.gbc",$0ebf,$1dca - $0ebf
+
+Func_1dca: ; 1dca (0:1dca)
+ ld a, [$cabb]
+ bit 7, a
+ jr nz, .asm_1dd8
+.asm_1dd1
+ ld a, [de]
+ inc de
+ ld [hli], a
+ dec c
+ jr nz, .asm_1dd1
+ ret
+.asm_1dd8
+ jp Func_0c32
+
+Func_1ddb: ; 1ddb (0:1ddb)
+ ld l, e
+ ld h, $0
+ add hl, hl
+ add hl, hl
+ add hl, hl
+ add hl, hl
+ add hl, hl
+ ld a, l
+ add d
+ ld l, a
+ ld a, h
+ adc $98
+ ld h, a
+ ret
+; 0x1deb
+
+INCBIN "baserom.gbc",$1deb,$21c5 - $1deb
+
+Func_21c5: ; 21c5 (0:21c5)
+ push de
+ push bc
+ call Func_2298
+ jr .asm_21e8
+.asm_21cc
+ cp $5
+ jr c, .asm_21d9
+ cp $10
+ jr nc, .asm_21d9
+ call Func_21f2
+ jr .asm_21e8
+.asm_21d9
+ ld e, a
+ ld d, [hl]
+ call Func_2546
+ jr nc, .asm_21e1
+ inc hl
+.asm_21e1
+ call Func_22ca
+ xor a
+ call Func_21f2
+.asm_21e8
+ ld a, [hli]
+ or a
+ jr nz, .asm_21cc
+ call Func_230f
+ pop bc
+ pop de
+ ret
+
+Func_21f2: ; 21f2 (0:21f2)
+ or a
+ jr z, .asm_2241
+ cp $e
+ jr z, .asm_2221
+ cp $f
+ jr z, .asm_2221
+ cp $a
+ jr z, .asm_224d
+ cp $5
+ jr z, .asm_2225
+ cp $6
+ jr z, .asm_220f
+ cp $7
+ jr z, .asm_2215
+ scf
+ ret
+.asm_220f
+ ld a, $1
+ ld [$cd0a], a
+ ret
+.asm_2215
+ call Func_230f
+ xor a
+ ld [$cd0a], a
+ ld a, $f
+ ld [$ffaf], a
+ ret
+.asm_2221
+ ld [$ffaf], a
+ xor a
+ ret
+.asm_2225
+ ld a, [$cd0a]
+ push af
+ ld a, $1
+ ld [$cd0a], a
+ call Func_230f
+ pop af
+ ld [$cd0a], a
+ ld a, [$ffb0]
+ or a
+ jr nz, .asm_2240
+ ld a, [hl]
+ push hl
+ call Func_22f2
+ pop hl
+.asm_2240
+ inc hl
+.asm_2241
+ ld a, [$ffae]
+ or a
+ ret z
+ ld b, a
+ ld a, [$ffac]
+ cp b
+ jr z, .asm_224d
+ xor a
+ ret
+.asm_224d
+ call Func_230f
+ ld a, [$cd08]
+ or a
+ call z, .asm_2257
+.asm_2257
+ xor a
+ ld [$ffac], a
+ ld a, [$ffad]
+ add $20
+ ld b, a
+ ld a, [$ffaa]
+ and $e0
+ add b
+ ld [$ffaa], a
+ ld a, [$ffab]
+ adc $0
+ ld [$ffab], a
+ ld a, [$cd09]
+ inc a
+ ld [$cd09], a
+ xor a
+ ret
+; 0x2275
+
+INCBIN "baserom.gbc",$2275,$2298 - $2275
+
+Func_2298: ; 2298 (0:2298)
+ xor a
+ ld [$cd0a], a
+ ld [$ffac], a
+ ld [$cd0b], a
+ ld a, $f
+ ld [$ffaf], a
+ ret
+; 0x22a6
+
+INCBIN "baserom.gbc",$22a6,$22ae - $22a6
+
+Func_22ae: ; 22ae (0:22ae)
+ push hl
+ ld a, d
+ ld [$ffad], a
+ xor a
+ ld [$ffae], a
+ ld [$cd09], a
+ call Func_1ddb
+ ld a, l
+ ld [$ffaa], a
+ ld a, h
+ ld [$ffab], a
+ call Func_2298
+ xor a
+ ld [$cd0b], a
+ pop hl
+ ret
+
+Func_22ca: ; 22ca (0:22ca)
+ push hl
+ push de
+ push bc
+ ld a, [$ffb0]
+ and $1
+ jr nz, .asm_22ed
+ call Func_2325
+ jr c, .asm_22de
+ or a
+ jr nz, .asm_22e9
+ call Func_24ac
+.asm_22de
+ ld a, [$ffb0]
+ and $2
+ jr nz, .asm_22e9
+ ld a, [$ffa9]
+ call Func_22f2
+.asm_22e9
+ pop bc
+ pop de
+ pop hl
+ ret
+.asm_22ed
+ call Func_235e
+ jr .asm_22e9
+
+Func_22f2: ; 22f2 (0:22f2)
+ ld [$cd05], a
+ ld hl, $ffaa
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ inc de
+ ld [hl], d
+ dec hl
+ ld [hl], e
+ dec de
+ ld l, e
+ ld h, d
+ ld de, $cd05
+ ld c, $1
+ call Func_1dca
+ ld hl, $ffac
+ inc [hl]
+ ret
+
+Func_230f: ; 230f (0:230f)
+ ld a, [$cd0a]
+ or a
+ ret z
+ ld a, [$cd0b]
+ or a
+ ret z
+ push hl
+ push de
+ push bc
+ ld e, $20
+ call Func_22ca
+ pop bc
+ pop de
+ pop hl
+ ret
+
+Func_2325: ; 2325 (0:2325)
+ call Func_235e
+ ret c
+ or a
+ ret nz
+ ld a, [$ffa8]
+ ld hl, $cd04
+ cp [hl]
+ jr nz, .asm_2345
+ ld a, [$ffa9]
+ ld h, $c8
+.asm_2337
+ ld l, a
+ ld a, [hl]
+ or a
+ jr nz, .asm_2337
+ ld h, $c9
+ ld c, [hl]
+ ld b, $c8
+ xor a
+ ld [bc], a
+ jr .asm_234a
+.asm_2345
+ inc [hl]
+ jr nz, .asm_2349
+ inc [hl]
+.asm_2349
+ ld l, [hl]
+.asm_234a
+ ld a, [$ffa9]
+ ld c, a
+ ld b, $c9
+ ld a, l
+ ld [$ffa9], a
+ ld [bc], a
+ ld h, $c8
+ ld [hl], c
+ ld h, $c6
+ ld [hl], e
+ inc h
+ ld [hl], d
+ ld b, l
+ xor a
+ ret
+
+Func_235e: ; 235e (0:235e)
+ ld a, [$cd0a]
+ or a
+ jr z, .asm_2376
+ call Func_23b1
+ ld a, [$cd0b]
+ ld d, a
+ or a
+ jr nz, .asm_2376
+ ld a, e
+ ld [$cd0b], a
+ ld a, $1
+ or a
+ ret
+.asm_2376
+ xor a
+ ld [$cd0b], a
+ ld a, [$ffa9]
+ ld l, a
+.asm_237d
+ ld h, $c6
+ ld a, [hl]
+ or a
+ ret z
+ cp e
+ jr nz, .asm_238a
+ inc h
+ ld a, [hl]
+ cp d
+ jr z, .asm_238f
+.asm_238a
+ ld h, $c8
+ ld l, [hl]
+ jr .asm_237d
+.asm_238f
+ ld a, [$ffa9]
+ cp l
+ jr z, .asm_23af
+ ld c, a
+ ld b, $c9
+ ld a, l
+ ld [bc], a
+ ld [$ffa9], a
+ ld h, $c9
+ ld b, [hl]
+ ld [hl], $0
+ ld h, $c8
+ ld a, c
+ ld c, [hl]
+ ld [hl], a
+ ld l, b
+ ld [hl], c
+ ld h, $c9
+ inc c
+ dec c
+ jr z, .asm_23af
+ ld l, c
+ ld [hl], b
+.asm_23af
+ scf
+ ret
+
+Func_23b1: ; 23b1 (0:23b1)
+ ld a, [$cd0d]
+ or a
+ ret z
+ ld a, e
+ cp $60
+ ret c
+ cp $7b
+ ret nc
+ sub $20
+ ld e, a
+ ret
+; 0x23c1
+
+INCBIN "baserom.gbc",$23c1,$24ac - $23c1
+
+Func_24ac: ; 24ac (0:24ac)
+ push hl
+ push de
+ push bc
+ ld a, [$cd0a]
+ or a
+ jr nz, .asm_24bf
+ call Func_2510
+ call Func_1dca
+.asm_24bb
+ pop bc
+ pop de
+ pop hl
+ ret
+.asm_24bf
+ call Func_24ca
+ call Func_2518
+ call Func_1dca
+ jr .asm_24bb
+
+Func_24ca: ; 24ca (0:24ca)
+ push bc
+ ld a, [$ff80]
+ push af
+ ld a, $1d
+ call BankswitchHome
+ push de
+ ld a, e
+ ld de, $ccf4
+ call Func_24fa
+ pop de
+ ld a, d
+ ld de, $ccf5
+ call Func_24fa
+ ld hl, $ccf4
+ ld b, $8
+.asm_24e8
+ ld a, [hli]
+ swap a
+ or [hl]
+ dec hl
+ ld [hli], a
+ ld [hli], a
+ dec b
+ jr nz, .asm_24e8
+ call Func_078e
+ pop bc
+ ld de, $ccf4
+ ret
+
+Func_24fa: ; 24fa (0:24fa)
+ sub $20
+ ld l, a
+ ld h, $0
+ add hl, hl
+ add hl, hl
+ add hl, hl
+ ld bc, $6668
+ add hl, bc
+ ld b, $8
+.asm_2508
+ ld a, [hli]
+ ld [de], a
+ inc de
+ inc de
+ dec b
+ jr nz, .asm_2508
+ ret
+
+Func_2510: ; 2510 (0:2510)
+ push bc
+ call Func_256d
+ call Func_252e
+ pop bc
+Func_2518: ; 2518 (0:2518)
+ ld hl, $cd07
+ ld a, b
+ xor [hl]
+ ld h, $0
+ ld l, a
+ add hl, hl
+ add hl, hl
+ add hl, hl
+ add hl, hl
+ ld a, [$cd06]
+ ld b, a
+ ld c, $0
+ add hl, bc
+ ld c, $10
+ ret
+
+Func_252e: ; 252e (0:252e)
+ ld a, $1d
+ call Func_0745
+ ld de, $ccf4
+ push de
+ ld c, $8
+.asm_2539
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld [de], a
+ inc de
+ dec c
+ jr nz, .asm_2539
+ pop de
+ call Func_078e
+ ret
+
+Func_2546: ; 2546 (0:2546)
+ ld a, [$cd0a]
+ or a
+ jr nz, .asm_255f
+ ld a, e
+ cp $10
+ jr c, .asm_2561
+ cp $60
+ jr nc, .asm_2565
+ ld a, [$ffaf]
+ cp $f
+ jr nz, .asm_2565
+ ld d, $f
+ or a
+ ret
+.asm_255f
+ or a
+ ret
+.asm_2561
+ cp $5
+ jr c, .asm_2569
+.asm_2565
+ ld d, $0
+ or a
+ ret
+.asm_2569
+ ld e, d
+ ld d, a
+ scf
+ ret
+
+Func_256d: ; 256d (0:256d)
+ ld bc, $0280
+ ld a, d
+ cp $e
+ jr z, .asm_2580
+ cp $f
+ jr nz, .asm_2582
+ ld bc, $0000
+ ld a, e
+ sub $10
+ ld e, a
+.asm_2580
+ ld d, $0
+.asm_2582
+ ld l, e
+ ld h, d
+ add hl, hl
+ add hl, hl
+ add hl, hl
+ add hl, bc
+ ret
+; 0x2589
+
+INCBIN "baserom.gbc",$2589,$2c29 - $2589
+
+Func_2c29: ; 2c29 (0:2c29)
+ ld a, [$ff80]
+ push af
+ call Func_2ded
+ call Func_21c5
+ pop af
+ call BankswitchHome
+ ret
+; 0x2c37
+
+INCBIN "baserom.gbc",$2c37,$2ded - $2c37
+
+Func_2ded: ; 2ded (0:2ded)
+ push de
+ ld e, l
+ ld d, h
+ add hl, hl
+ add hl, de
+ set 6, h
+ ld a, $d
+ call BankswitchHome
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ inc hl
+ ld a, [hl]
+ ld h, d
+ rl h
+ rla
+ rl h
+ rla
+ add $d
+ call BankswitchHome
+ res 7, d
+ set 6, d
+ ld l, e
+ ld h, d
+ pop de
+ ret
+; 0x2e12
+
+INCBIN "baserom.gbc",$2e12,$3189 - $2e12
+
+Func_3189: ; 3189 (0:3189)
+ ld hl, PointerTable_3190
+ dec a
+ jp JumpToFunctionInTable
+
+PointerTable_3190: ; 3190 (0:3190)
+ dw Func_31a8
+ dw Func_31a8
+ dw Func_31a8
+ dw Func_31a8
+ dw Func_31a8
+ dw Func_31b0
+ dw Func_31ca
+ dw Func_31dd
+ dw Func_31e5
+ dw Func_31ef
+ dw Func_31ea
+ dw Func_31f2
+
+Func_31a8: ; 31a8 (0:31a8)
+ call Func_31fc
+Func_31ab: ; 31ab (0:31ab)
+ ld hl, $ce63
+ inc [hl]
+ ret
+
+Func_31b0: ; 31b0 (0:31b0)
+ call Func_31ab
+ ld hl, $ce68
+ ld a, [hli]
+ or [hl]
+ jr nz, .asm_31bf
+ call Func_31ab
+ jr Func_31dd
+.asm_31bf
+ ld hl, $ce6a
+ ld de, $ce70
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hl]
+ ld [de], a
+
+Func_31ca: ; 31ca (0:31ca)
+ call Func_31fc
+ ld hl, $ce68
+ ld a, [hl]
+ dec [hl]
+ or a
+ jr nz, .asm_31d8
+ inc hl
+ dec [hl]
+ dec hl
+.asm_31d8
+ ld a, [hli]
+ or [hl]
+ jr z, Func_31ab
+ ret
+
+Func_31dd: ; 31dd (0:31dd)
+ ld a, [$ce6c]
+Func_31e0: ; 31e0 (0:31e0)
+ call Func_3212
+ jr Func_31ab
+
+Func_31e5: ; 31e5 (0:31e5)
+ ld a, [$ce6d]
+ jr Func_31e0
+
+Func_31ea: ; 31ea (0:31ea)
+ ld a, [$ff01]
+ ld [$ce6e], a
+Func_31ef: ; 31ef (0:31ef)
+ xor a
+ jr Func_31e0
+
+Func_31f2: ; 31f2 (0:31f2)
+ ld a, [$ff01]
+ ld [$ce6f], a
+ xor a
+ ld [$ce63], a
+ ret
+
+Func_31fc: ; 31fc (0:31fc)
+ ld hl, $ce70
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld a, [de]
+ inc de
+ ld [hl], d
+ dec hl
+ ld [hl], e
+ ld e, a
+ ld hl, $ce6c
+ add [hl]
+ ld [hli], a
+ ld a, $0
+ adc [hl]
+ ld [hl], a
+ ld a, e
+Func_3212: ; 3212 (0:3212)
+ ld [$ff01], a
+ ld a, $1
+ ld [$ff02], a
+ ld a, $81
+ ld [$ff02], a
+ ret
+; 0x321d
+
+INCBIN "baserom.gbc",$321d,$377f - $321d
+
+Func_377f: ; 377f (0:377f)
+ rst $28
+ db BANK(Func_f4000)
+ dw Func_f4000
+ ret
+
+Func_3784: ; 3784 (0:3784)
+ xor a
+ rst $28
+ db BANK(Func_f4006)
+ dw Func_f4006
+ ret
+
+Func_378a: ; 378a (0:378a)
+ rst $28
+ db BANK(Func_f400f)
+ dw Func_f400f
+ ret
+
+Func_378f: ; 378f (0:378f)
+ rst $28
+ db BANK(Func_f4012)
+ dw Func_f4012
+ ret
+
+Func_3794: ; 3794 (0:3794)
+ ld a, $04
+Func_3796: ; 3796 (0:3796)
+ rst $28
+ db BANK(Func_f4009)
+ dw Func_f4009
+ ret
+
+Func_379b: ; 379b (0:379b)
+ rst $28
+ db BANK(Func_f401b)
+ dw Func_f401b
+ ret
+
+Func_37a0: ; 37a0 (0:37a0)
+ rst $28
+ db BANK(Func_f401e)
+ dw Func_f401e
+ ret
+; 0x37a5
+
+INCBIN "baserom.gbc",$37a5,$3bf5 - $37a5
+
+Func_3bf5: ; 3bf5 (0:3bf5)
+ ld a, [$ff80]
+ push af
+ push hl
+ ld a, [$d4c6]
+ call BankswitchHome
+ ld a, [$d4c4]
+ ld l, a
+ ld a, [$d4c5]
+ ld h, a
+ call CopyData_SaveRegisters
+ pop hl
+ pop af
+ call BankswitchHome
+ ret
+; 0x3c10
+
+INCBIN "baserom.gbc",$3c10,$3c5a - $3c10
+
+Func_3c5a: ; 3c5a (0:3c5a)
+ ld hl, $0000
+ rl c
+ rl b
+ ld a, $10
+.asm_3c63
+ ld [$ffb6], a
+ rl l
+ rl h
+ push hl
+ ld a, l
+ sub e
+ ld l, a
+ ld a, h
+ sbc d
+ ccf
+ jr nc, .asm_3c78
+ ld h, a
+ add sp, $2
+ scf
+ jr .asm_3c79
+.asm_3c78
+ pop hl
+.asm_3c79
+ rl c
+ rl b
+ ld a, [$ffb6]
+ dec a
+ jr nz, .asm_3c63
+ ret
+; 0x3c83
+
+INCBIN "baserom.gbc",$3c83,$3d72 - $3c83
+
+Func_3d72: ; 3d72 (0:3d72)
+ ld a, [$ff80]
+ push af
+ push hl
+ push hl
+ ld a, [$d4ca]
+ cp $ff
+ jr nz, .asm_3d84
+ ld de, $4e5a
+ xor a
+ jr .asm_3da1
+.asm_3d84
+ ld a, [$d4c4]
+ ld l, a
+ ld a, [$d4c5]
+ ld h, a
+ ld a, [$d4c6]
+ call BankswitchHome
+ ld a, [hli]
+ push af
+ ld a, [$d4ca]
+ rlca
+ ld e, [hl]
+ add e
+ ld e, a
+ inc hl
+ ld a, [hl]
+ adc $0
+ ld d, a
+ pop af
+.asm_3da1
+ add $20
+ pop hl
+ ld bc, $000b
+ add hl, bc
+ ld [hli], a
+ call BankswitchHome
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hl], a
+ pop hl
+ pop af
+ call BankswitchHome
+ ret
+
+Func_3db7: ; 3db7 (0:3db7)
+ push bc
+ ld c, $0
+ call Func_3dbf
+ pop bc
+ ret
+
+Func_3dbf: ; 3dbf (0:3dbf)
+ ld a, [$d4cf]
+ cp $10
+ jr c, .asm_3dc9
+ rst $38
+ ld a, $f
+.asm_3dc9
+ push bc
+ swap a
+ push af
+ and $f
+ ld b, a
+ pop af
+ and $f0
+ or c
+ ld c, a
+ ld hl, $d4d0
+ add hl, bc
+ pop bc
+ ret
+; 0x3ddb
+
+INCBIN "baserom.gbc",$3ddb,$3fe0 - $3ddb
+
+; jumps to 3f:hl
+Bankswitch3dTo3f: ; 3fe0 (0:3fe0)
+ push af
+ ld a, $3f
+ ld [$ff80], a
+ ld [$2000], a
+ pop af
+ ld bc, Bankswitch3d
+ push bc
+ jp [hl]
+
+Bankswitch3d: ; 3fe0 (0:3fe0)
+ ld a, $3d
+ ld [$ff80], a
+ ld [$2000], a
+ ret
+; 0x3ff6
+
+INCBIN "baserom.gbc",$3ff6,$4000 - $3ff6 \ No newline at end of file
diff --git a/engine/overworldmap.asm b/engine/overworldmap.asm
new file mode 100755
index 0000000..31f762c
--- /dev/null
+++ b/engine/overworldmap.asm
@@ -0,0 +1,787 @@
+INCBIN "baserom.gbc",$10000,$10e55 - $10000
+
+Func_10e55: ; 10e55 (4:4e55)
+ ld a, [$d336]
+ ld [$d4cf], a
+ ld a, [$d33e]
+ or a
+ jr nz, .asm_10e65
+ call Func_10e71
+ ret
+.asm_10e65
+ cp $2
+ jr z, .asm_10e6d
+ call Func_11060
+ ret
+.asm_10e6d
+ call LoadOverworldMapSelection
+ ret
+
+Func_10e71: ; 10e71 (4:4e71)
+ ld a, [$ff91]
+ and $f0
+ jr z, .asm_10e83
+ rst $28
+ db $03
+ dw $45d5
+ ld [$d334], a
+ call Func_10e97
+ jr .asm_10e96
+.asm_10e83
+ ld a, [$ff91]
+ and $1
+ jr z, .asm_10e96
+ ld a, $2
+ call Func_3796
+ call Func_11016
+ call Func_11024
+ jr .asm_10e96
+.asm_10e96
+ ret
+
+Func_10e97: ; 10e97 (4:4e97)
+ push hl
+ pop hl
+ ld a, [$d32e]
+ rlca
+ rlca
+ ld c, a
+ ld a, [$d334]
+ add c
+ ld c, a
+ ld b, $0
+ ld hl, Unknown_10ebc
+ add hl, bc
+ ld a, [hl]
+ or a
+ jr z, .asm_10eb9
+ ld [$d32e], a
+ call Func_10f2e
+ ld a, $1
+ call Func_3796
+.asm_10eb9
+ pop bc
+ pop hl
+ ret
+
+Unknown_10ebc: ; 10ebc (4:4ebc)
+INCBIN "baserom.gbc",$10ebc,$10efd - $10ebc
+
+Func_10efd: ; 10efd (4:4efd)
+ push hl
+ push de
+ rlca
+ ld e, a
+ ld d, $0
+ ld hl, Unknown_10f14
+ add hl, de
+ pop de
+ ld a, [hli]
+ add $8
+ add d
+ ld d, a
+ ld a, [hl]
+ add $10
+ add e
+ ld e, a
+ pop hl
+ ret
+
+Unknown_10f14: ; 10f14 (4:4f14)
+INCBIN "baserom.gbc",$10f14,$10f2e - $10f14
+
+Func_10f2e: ; 10f2e (4:4f2e)
+ push hl
+ push de
+ ld de, $0101
+ call Func_22ae
+ call Func_10f4a
+ rlca
+ ld e, a
+ ld d, $0
+ ld hl, $397b
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ call Func_2c29
+ pop de
+ pop hl
+ ret
+
+Func_10f4a: ; 10f4a (4:4f4a)
+ push bc
+ ld a, [$d32e]
+ cp $2
+ jr nz, .asm_10f5f
+ ld c, a
+ ld a, $1e
+ rst $28
+ db $03
+ dw $4a6c
+ or a
+ ld a, c
+ jr nz, .asm_10f5f
+ ld a, $d
+.asm_10f5f
+ pop bc
+ ret
+
+LoadOverworldMapSelection: ; 10f61 (4:4f61)
+ push hl
+ push bc
+ ld a, [$d32e]
+ rlca
+ rlca
+ ld c, a
+ ld b, $0
+ ld hl, OverworldMapIndexes
+ add hl, bc
+ ld a, [hli]
+ ld [$d0bb], a
+ ld a, [hli]
+ ld [$d0bc], a
+ ld a, [hli]
+ ld [$d0bd], a
+ ld a, $0
+ ld [$d0be], a
+ ld hl, $d0b4
+ set 4, [hl]
+ pop bc
+ pop hl
+ ret
+
+OverworldMapIndexes: ; 10f88 (4:4f88)
+ db $00,$00,$00,$00
+ db MASON_LABORATORY, $0E,$1A,$00
+ db ISHIHARAS_HOUSE, $08,$14,$00
+ db FIGHTING_CLUB_ENTRANCE, $08,$0E,$00
+ db ROCK_CLUB_ENTRANCE, $08,$0E,$00
+ db WATER_CLUB_ENTRANCE, $08,$0E,$00
+ db LIGHTNING_CLUB_ENTRANCE,$08,$0E,$00
+ db GRASS_CLUB_ENTRANCE, $08,$0E,$00
+ db PSYCHIC_CLUB_ENTRANCE, $08,$0E,$00
+ db SCIENCE_CLUB_ENTRANCE, $08,$0E,$00
+ db FIRE_CLUB_ENTRANCE, $08,$0E,$00
+ db CHALLENGE_HALL_ENTRANCE,$08,$0E,$00
+ db POKEMON_DOME_ENTRANCE, $0E,$0E,$00
+
+Func_10fbc: ; 10fbc (4:4fbc) XXXX
+ ld a, $25
+ rst $28
+ db BANK(Func_1299f)
+ dw Func_1299f
+ ld c, $2
+ call Func_3dbf
+ ld a, $80
+ ld [hli], a
+ ld a, $10
+ ld [hl], a
+ ld b, $34
+ ld a, [$cab4]
+ cp $2
+ jr nz, .asm_10fd8
+ ld b, $37
+.asm_10fd8
+ ld a, b
+ rst $28
+ db BANK(Func_12ab5)
+ dw Func_12ab5
+ ret
+
+Func_10fde: ; 10fde (4:4fde) XXXX
+ ld a, [$d32e]
+ ld [$d33d], a
+ xor a
+ ld [$d33e], a
+ ld a, $25
+ call Func_1299f
+ ld a, [$d4cf]
+ ld [$d33b], a
+ ld b, $35
+ ld a, [$cab4]
+ cp $2
+ jr nz, .asm_10ffe
+ ld b, $38
+.asm_10ffe
+ ld a, b
+ ld [$d33c], a
+ call Func_12ab5
+ ld a, $3e
+ rst $28
+ db $03
+ dw $4a6c
+ or a
+ jr nz, .asm_11015
+ ld c, $f
+ call Func_3dbf
+ set 7, [hl]
+.asm_11015
+ ret
+
+Func_11016: ; 11016 (4:5016)
+ ld a, [$d33b]
+ ld [$d4cf], a
+ ld a, [$d33c]
+ inc a
+ call Func_12ab5
+ ret
+
+Func_11024: ; 11024 (4:5024)
+ ld a, $57
+ call Func_3796
+ ld a, [$d336]
+ ld [$d4cf], a
+ ld c, $f
+ call Func_3dbf
+ set 2, [hl]
+ ld hl, Unknown_1229f
+ ld a, [$d33d]
+ dec a
+ add a
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [$d32e]
+ dec a
+ add a
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [hli]
+ ld [$d33f], a
+ ld a, [hl]
+ ld [$d340], a
+ ld a, $1
+ ld [$d33e], a
+ xor a
+ ld [$d341], a
+ ret
+
+Func_11060: ; 11060 (4:5060)
+ ld a, [$d336]
+ ld [$d4cf], a
+ ld a, [$d341]
+ or a
+ jp nz, Func_11184
+ ld a, [$d33f]
+ ld l, a
+ ld a, [$d340]
+ ld h, a
+ ld a, [hli]
+ ld b, a
+ ld a, [hli]
+ ld c, a
+ and b
+ cp $ff
+ jr z, .asm_110a0
+ ld a, c
+ or b
+ jr nz, .asm_11094
+ ld a, [$d33d]
+ ld e, a
+ ld a, [$d32e]
+ cp e
+ jr z, .asm_110a0
+ ld de, $0000
+ call Func_10efd
+ ld b, d
+ ld c, e
+.asm_11094
+ ld a, l
+ ld [$d33f], a
+ ld a, h
+ ld [$d340], a
+ call Func_110a6
+ ret
+.asm_110a0
+ ld a, $2
+ ld [$d33e], a
+ ret
+
+Func_110a6: ; 110a6 (4:50a6)
+ push hl
+ push bc
+ ld c, $2
+ call Func_3dbf
+ pop bc
+ ld a, b
+ sub [hl]
+ ld [$d343], a
+ ld a, $0
+ sbc $0
+ ld [$d344], a
+ inc hl
+ ld a, c
+ sub [hl]
+ ld [$d345], a
+ ld a, $0
+ sbc $0
+ ld [$d346], a
+ ld a, [$d343]
+ ld b, a
+ ld a, [$d344]
+ bit 7, a
+ jr z, .asm_110d8
+ ld a, [$d343]
+ cpl
+ inc a
+ ld b, a
+.asm_110d8
+ ld a, [$d345]
+ ld c, a
+ ld a, [$d346]
+ bit 7, a
+ jr z, .asm_110e9
+ ld a, [$d345]
+ cpl
+ inc a
+ ld c, a
+.asm_110e9
+ ld a, b
+ cp c
+ jr c, .asm_110f2
+ call Func_11102
+ jr .asm_110f5
+.asm_110f2
+ call Func_1113e
+.asm_110f5
+ xor a
+ ld [$d347], a
+ ld [$d348], a
+ rst $28
+ db $03
+ dw $45e9
+ pop hl
+ ret
+
+Func_11102: ; 11102 (4:5102)
+ ld a, b
+ ld [$d341], a
+ ld e, a
+ ld d, $0
+ ld hl, $d343
+ xor a
+ ld [hli], a
+ bit 7, [hl]
+ jr z, .asm_11115
+ dec a
+ jr .asm_11116
+.asm_11115
+ inc a
+.asm_11116
+ ld [hl], a
+ ld b, c
+ ld c, $0
+ call Func_3c5a
+ ld a, [$d346]
+ bit 7, a
+ jr z, .asm_11127
+ call Func_11179
+.asm_11127
+ ld a, c
+ ld [$d345], a
+ ld a, b
+ ld [$d346], a
+ ld hl, $d344
+ ld a, $1
+ bit 7, [hl]
+ jr z, .asm_1113a
+ ld a, $3
+.asm_1113a
+ ld [$d334], a
+ ret
+
+Func_1113e: ; 1113e (4:513e)
+ ld a, c
+ ld [$d341], a
+ ld e, a
+ ld d, $0
+ ld hl, $d345
+ xor a
+ ld [hli], a
+ bit 7, [hl]
+ jr z, .asm_11151
+ dec a
+ jr .asm_11152
+.asm_11151
+ inc a
+.asm_11152
+ ld [hl], a
+ ld c, $0
+ call Func_3c5a
+ ld a, [$d344]
+ bit 7, a
+ jr z, .asm_11162
+ call Func_11179
+.asm_11162
+ ld a, c
+ ld [$d343], a
+ ld a, b
+ ld [$d344], a
+ ld hl, $d346
+ ld a, $2
+ bit 7, [hl]
+ jr z, .asm_11175
+ ld a, $0
+.asm_11175
+ ld [$d334], a
+ ret
+
+Func_11179: ; 11179 (4:5179)
+ ld a, c
+ cpl
+ add $1
+ ld c, a
+ ld a, b
+ cpl
+ adc $0
+ ld b, a
+ ret
+
+Func_11184: ; 11184 (4:5184)
+ ld a, [$d347]
+ ld d, a
+ ld a, [$d348]
+ ld e, a
+ ld c, $2
+ call Func_3dbf
+ ld a, [$d343]
+ add d
+ ld d, a
+ ld a, [$d344]
+ adc [hl]
+ ld [hl], a
+ inc hl
+ ld a, [$d345]
+ add e
+ ld e, a
+ ld a, [$d346]
+ adc [hl]
+ ld [hl], a
+ ld a, d
+ ld [$d347], a
+ ld a, e
+ ld [$d348], a
+ ld hl, $d341
+ dec [hl]
+ ret
+; 0x111b3
+
+INCBIN "baserom.gbc",$111b3,$1229f - $111b3
+
+Unknown_1229f: ; 1229f (4:629f)
+INCBIN "baserom.gbc",$1229f,$1299f - $1229f
+
+Func_1299f: ; 1299f (4:699f)
+ push af
+ ld a, [$d5d7]
+ or a
+ jr z, .asm_129a8
+ pop af
+ ret
+.asm_129a8
+ pop af
+ push bc
+ push hl
+ call Func_12c05
+ ld [$d5d3], a
+ xor a
+ ld [$d4cf], a
+ call Func_3db7
+ ld bc, $0010
+.asm_129bb
+ ld a, [hl]
+ or a
+ jr z, .asm_129cf
+ add hl, bc
+ ld a, [$d4cf]
+ inc a
+ ld [$d4cf], a
+ cp $10
+ jr nz, .asm_129bb
+ rst $38
+ scf
+ jr .asm_129d6
+.asm_129cf
+ ld a, $1
+ ld [hl], a
+ call Func_129d9
+ or a
+.asm_129d6
+ pop hl
+ pop bc
+ ret
+
+Func_129d9: ; 129d9 (4:69d9)
+ push hl
+ push bc
+ push hl
+ inc hl
+ ld c, $f
+ xor a
+.asm_129e0
+ ld [hli], a
+ dec c
+ jr nz, .asm_129e0
+ pop hl
+ ld bc, $0004
+ add hl, bc
+ ld a, [$d5d3]
+ ld [hli], a
+ ld a, $ff
+ ld [hl], a
+ ld bc, $0009
+ add hl, bc
+ ld a, $ff
+ ld [hl], a
+ pop bc
+ pop hl
+ ret
+; 0x129fa
+
+INCBIN "baserom.gbc",$129fa,$12ab5 - $129fa
+
+Func_12ab5: ; 12ab5 (4:6ab5)
+ push hl
+ push af
+ ld c, $5
+ call Func_3dbf
+ pop af
+ cp [hl]
+ pop hl
+ ret z
+ push hl
+ call Func_12ae2
+ call Func_12b13
+ pop hl
+ ret
+; 0x12ac9
+
+INCBIN "baserom.gbc",$12ac9,$12ae2 - $12ac9
+
+Func_12ae2: ; 12ae2 (4:6ae2)
+ push bc
+ push af
+ call Func_3db7
+ pop af
+ push hl
+ ld bc, $0005
+ add hl, bc
+ ld [hli], a
+ push hl
+ ld l, $6
+ rst $28
+ db $20
+ dw $420f
+ rst $28
+ db $20
+ dw $4229
+ pop hl
+ ld a, [$d4c6]
+ ld [hli], a
+ ld a, [$d4c4]
+ ld [hli], a
+ ld c, a
+ ld a, [$d4c5]
+ ld [hli], a
+ ld b, a
+ ld a, $3
+ add c
+ ld [hli], a
+ ld a, $0
+ adc b
+ ld [hli], a
+ pop hl
+ pop bc
+ ret
+
+Func_12b13: ; 12b13 (4:6b13)
+ push bc
+ push de
+ push hl
+.asm_12b16
+ push hl
+ ld bc, $0006
+ add hl, bc
+ ld a, [hli]
+ ld [$d4c6], a
+ inc hl
+ inc hl
+ ld a, [hl]
+ ld [$d4c4], a
+ add $4
+ ld [hli], a
+ ld a, [hl]
+ ld [$d4c5], a
+ adc $0
+ ld [hl], a
+ ld de, $d23e
+ ld bc, $0004
+ call Func_3bf5
+ pop hl
+ ld de, $d23e
+ ld a, [de]
+ call Func_12b6a
+ inc de
+ ld a, [de]
+ call Func_12b89
+ jr c, .asm_12b16
+ inc de
+ ld bc, $0002
+ add hl, bc
+ push hl
+ ld bc, $000d
+ add hl, bc
+ ld b, [hl]
+ pop hl
+ ld a, [de]
+ bit 0, b
+ jr z, .asm_12b5a
+ cpl
+ inc a
+.asm_12b5a
+ add [hl]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ bit 1, b
+ jr z, .asm_12b64
+ cpl
+ inc a
+.asm_12b64
+ add [hl]
+ ld [hl], a
+ pop hl
+ pop de
+ pop bc
+ ret
+
+Func_12b6a: ; 12b6a (4:6b6a)
+ ld [$d4ca], a
+ push hl
+ push bc
+ push de
+ push hl
+ ld bc, $0006
+ add hl, bc
+ ld a, [hli]
+ ld [$d4c6], a
+ ld a, [hli]
+ ld [$d4c4], a
+ ld a, [hli]
+ ld [$d4c5], a
+ pop hl
+ call Func_3d72
+ pop de
+ pop bc
+ pop hl
+ ret
+
+Func_12b89: ; 12b89 (4:6b89)
+ push hl
+ push bc
+ ld bc, $000e
+ add hl, bc
+ ld [hl], a
+ or a
+ jr nz, .asm_12ba4
+ ld bc, $fff9
+ add hl, bc
+ ld a, [hli]
+ add $3
+ ld c, a
+ ld a, [hli]
+ adc $0
+ ld b, a
+ ld a, c
+ ld [hli], a
+ ld a, b
+ ld [hl], a
+ scf
+.asm_12ba4
+ pop bc
+ pop hl
+ ret
+; 0x12ba7
+
+INCBIN "baserom.gbc",$12ba7,$12c05 - $12ba7
+
+Func_12c05: ; 12c05 (4:6c05)
+ push hl
+ push bc
+ push de
+ ld b, a
+ ld d, $0
+ ld a, [$d618]
+ ld c, a
+ ld hl, $d5d8
+ or a
+ jr z, .asm_12c22
+.asm_12c15
+ inc hl
+ ld a, [hl]
+ cp b
+ jr z, .asm_12c3a
+ inc hl
+ ld a, [hli]
+ add [hl]
+ ld d, a
+ inc hl
+ dec c
+ jr nz, .asm_12c15
+.asm_12c22
+ ld a, [$d618]
+ cp $10
+ jr nc, .asm_12c48
+ inc a
+ ld [$d618], a
+ inc hl
+ push hl
+ ld a, b
+ ld [hli], a
+ call Func_12c4f
+ push af
+ ld a, d
+ ld [hli], a
+ pop af
+ ld [hl], a
+ pop hl
+.asm_12c3a
+ dec hl
+ inc [hl]
+ inc hl
+ inc hl
+ ld a, [hli]
+ add [hl]
+ cp $81
+ jr nc, .asm_12c48
+ ld a, d
+ or a
+ jr .asm_12c4b
+.asm_12c48
+ rst $38
+ xor a
+ scf
+.asm_12c4b
+ pop de
+ pop bc
+ pop hl
+ ret
+
+Func_12c4f: ; 12c4f (4:6c4f)
+ push af
+ xor a
+ ld [$d4cb], a
+ ld a, d
+ ld [$d4ca], a
+ pop af
+ rst $28
+ db $20
+ dw $425b
+ ret
+
+INCBIN "baserom.gbc",$12c5e,$14000 - $12c5e \ No newline at end of file