summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@gmail.com>2015-11-11 23:38:57 -0500
committerPikalaxALT <PikalaxALT@gmail.com>2015-11-11 23:38:57 -0500
commit2ffcb4b49036b8bcd9a37cdc9305f7ee5567fe6c (patch)
tree0c9fe148771ade8ef1948852722b95b378cbe46f /engine
parent91068077f05afbbfd6571ceadada2c03ac7c8038 (diff)
More splits; map setup labels
Diffstat (limited to 'engine')
-rwxr-xr-xengine/billspc.asm2667
-rwxr-xr-xengine/card_flip.asm2560
-rw-r--r--engine/credits.asm4
-rw-r--r--engine/diploma.asm2
-rwxr-xr-xengine/dummy_game.asm615
-rw-r--r--engine/events.asm38
-rwxr-xr-xengine/events_3.asm863
-rwxr-xr-xengine/evolution_animation.asm4
-rwxr-xr-xengine/flypoints.asm916
-rwxr-xr-xengine/link.asm22
-rw-r--r--engine/map_objects.asm101
-rw-r--r--engine/map_setup.asm56
-rw-r--r--engine/movement.asm104
-rwxr-xr-xengine/namingscreen.asm2
-rw-r--r--engine/pack.asm6
-rw-r--r--engine/party_menu.asm340
-rw-r--r--engine/pokedex.asm4
-rw-r--r--engine/scripting.asm14
-rwxr-xr-xengine/slot_machine.asm2112
-rw-r--r--engine/specials.asm12
-rwxr-xr-xengine/startmenu.asm12
-rw-r--r--engine/std_scripts.asm2
-rw-r--r--engine/timeofdaypals.asm4
-rw-r--r--engine/title.asm2
24 files changed, 10121 insertions, 341 deletions
diff --git a/engine/billspc.asm b/engine/billspc.asm
new file mode 100755
index 000000000..03a7592ca
--- /dev/null
+++ b/engine/billspc.asm
@@ -0,0 +1,2667 @@
+_DepositPKMN: ; e2391 (38:6391)
+ ld hl, Options
+ ld a, [hl]
+ push af
+ set 4, [hl]
+ ld a, [VramState]
+ push af
+ xor a
+ ld [VramState], a
+ ld a, [hInMenu]
+ push af
+ ld a, $1
+ ld [hInMenu], a
+ xor a
+ ld [hMapAnims], a
+ call Functione2963
+ xor a
+ ld [wcb2e], a
+ call DelayFrame
+.asm_e23b4
+ call JoyTextDelay
+ ld a, [wJumptableIndex]
+ bit 7, a
+ jr nz, .asm_e23c6
+ call Functione23d5
+ call DelayFrame
+ jr .asm_e23b4
+.asm_e23c6
+ call ClearSprites
+ pop af
+ ld [hInMenu], a
+ pop af
+ ld [VramState], a
+ pop af
+ ld [Options], a
+ ret
+
+Functione23d5: ; e23d5 (38:63d5)
+ ld a, [wJumptableIndex]
+ ld hl, Jumptable_e23df
+ call Functione33df
+ jp [hl]
+
+Jumptable_e23df: ; e23df (38:63df)
+ dw Functione23e9
+ dw Functione241a
+ dw Functione245d
+ dw Functione247d
+ dw Functione2992
+
+
+Functione23e9: ; e23e9 (38:63e9)
+ xor a
+ ld [hBGMapMode], a
+ call ClearSprites
+ call Functione2d30
+ call Functione2a8e
+ ld de, PCString_ChooseaPKMN
+ call Functione2a6e
+ ld a, $5
+ ld [wcb2d], a
+ call Functione2c2c
+ call PCMonInfo
+ ld a, $ff
+ ld [CurPartySpecies], a
+ ld a, $17
+ call Functione33d0
+ call WaitBGMap
+ call Functione2e01
+ call Functione298d
+ ret
+
+Functione241a: ; e241a (38:641a)
+ ld hl, hJoyPressed ; $ffa7
+ ld a, [hl]
+ and B_BUTTON
+ jr nz, .asm_e2457
+ ld a, [hl]
+ and A_BUTTON
+ jr nz, .asm_e2443
+ call Functione29b5
+ and a
+ ret z
+ call Functione2e01
+ xor a
+ ld [hBGMapMode], a
+ call Functione2c2c
+ call PCMonInfo
+ ld a, $1
+ ld [hBGMapMode], a
+ call DelayFrame
+ call DelayFrame
+ ret
+.asm_e2443
+ call Functione2def
+ and a
+ ret z
+ cp $ff
+ jr z, .asm_e2457
+ ld a, $2
+ ld [wJumptableIndex], a
+ ret
+; e2452 (38:6452)
+
+.asm_e2452
+ ld hl, wJumptableIndex
+ dec [hl]
+ ret
+
+.asm_e2457
+ ld a, $4
+ ld [wJumptableIndex], a
+ ret
+
+Functione245d: ; e245d (38:645d)
+ xor a
+ ld [hBGMapMode], a
+ call ClearSprites
+ call Functione2def
+ ld [CurPartySpecies], a
+ ld a, $17
+ call Functione33d0
+ ld de, PCString_WhatsUp
+ call Functione2a6e
+ ld a, $1
+ ld [MenuSelection2], a
+ call Functione298d
+ ret
+
+Functione247d: ; e247d (38:647d)
+ ld hl, BillsPCDepositMenuDataHeader
+ call CopyMenuDataHeader
+ ld a, [MenuSelection2]
+ call Function1d4b
+ call InterpretMenu2
+ jp c, BillsPCDepositFuncCancel
+ ld a, [MenuSelection2]
+ dec a
+ and $3
+ ld e, a
+ ld d, 0
+ ld hl, BillsPCDepositJumptable
+rept 2
+ add hl, de
+endr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+
+BillsPCDepositJumptable: ; e24a1 (38:64a1)
+ dw BillsPCDepositFuncDeposit ; Deposit Pokemon
+ dw BillsPCDepositFuncStats ; Pokemon Stats
+ dw BillsPCDepositFuncRelease ; Release Pokemon
+ dw BillsPCDepositFuncCancel ; Cancel
+
+
+BillsPCDepositFuncDeposit: ; e24a9 (38:64a9)
+ call Functione2f18
+ jp c, BillsPCDepositFuncCancel
+ call Functione307c
+ jr c, .no_overflow_31
+ ld a, $0
+ ld [wJumptableIndex], a
+ xor a
+ ld [wcb2b], a
+ ld [wcb2a], a
+ ret
+.no_overflow_31
+ ld de, PCString_WhatsUp
+ call Functione2a6e
+ ret
+
+BillsPCDepositFuncStats: ; e24c8 (38:64c8)
+ call LoadStandardMenuDataHeader
+ call Functione2f7e
+ call ExitMenu
+ call PCMonInfo
+ call Functione2def
+ ld [CurPartySpecies], a
+ ld a, $17
+ call Functione33d0
+ ret
+
+BillsPCDepositFuncRelease: ; e24e0 (38:64e0)
+ call Functione2f18
+ jr c, BillsPCDepositFuncCancel
+ call Functione2f5f
+ jr c, BillsPCDepositFuncCancel
+ ld a, [MenuSelection2]
+ push af
+ ld de, PCString_ReleasePKMN
+ call Functione2a6e
+ call LoadStandardMenuDataHeader
+ lb bc, 14, 11
+ call PlaceYesNoBox
+ ld a, [MenuSelection2]
+ dec a
+ call ExitMenu
+ and a
+ jr nz, .asm_e252c
+ ld a, [wcb2b]
+ ld hl, wcb2a
+ add [hl]
+ ld [CurPartyMon], a
+ xor a
+ ld [wPokemonWithdrawDepositParameter], a
+ callba Functione039
+ call Functione3180
+ ld a, $0
+ ld [wJumptableIndex], a
+ xor a
+ ld [wcb2b], a
+ ld [wcb2a], a
+ pop af
+ ret
+.asm_e252c
+ ld de, PCString_WhatsUp
+ call Functione2a6e
+ pop af
+ ld [MenuSelection2], a
+ ret
+
+BillsPCDepositFuncCancel: ; e2537 (38:6537)
+ ld a, $0
+ ld [wJumptableIndex], a
+ ret
+; e253d (38:653d)
+
+BillsPCDepositMenuDataHeader: ; 0xe253d (38:653d)
+ db $40 ; flags
+ db 04, 09 ; start coords
+ db 13, 19 ; end coords
+ dw BillsPCDepositMenuData
+ db 1 ; default option
+; 0xe2545
+
+BillsPCDepositMenuData: ; 0xe2545 (38:6545)
+ db $80 ; flags
+ db 4 ; items
+ db "DEPOSIT@"
+ db "STATS@"
+ db "RELEASE@"
+ db "CANCEL@"
+; 0xe2564 (38:6564)
+
+Functione2564: ; e2564
+ hlcoord 0, 0
+ ld b, $4
+ ld c, $8
+ call ClearBox
+ hlcoord 0, 4
+ ld b, $a
+ ld c, $9
+ call ClearBox
+ hlcoord 0, 14
+ ld b, $2
+ ld c, $8
+ call ClearBox
+ ret
+; e2583
+
+_WithdrawPKMN: ; e2583 (38:6583)
+ ld hl, Options
+ ld a, [hl]
+ push af
+ set 4, [hl]
+ ld a, [VramState]
+ push af
+ xor a
+ ld [VramState], a
+ ld a, [hInMenu]
+ push af
+ ld a, $1
+ ld [hInMenu], a
+ xor a
+ ld [hMapAnims], a
+ call Functione2963
+ ld a, $f
+ ld [wcb2e], a
+ call DelayFrame
+.asm_e25a7
+ call JoyTextDelay
+ ld a, [wJumptableIndex]
+ bit 7, a
+ jr nz, .no_overflow_49
+ call Functione25c8
+ call DelayFrame
+ jr .asm_e25a7
+.no_overflow_49
+ call ClearSprites
+ pop af
+ ld [hInMenu], a
+ pop af
+ ld [VramState], a
+ pop af
+ ld [Options], a
+ ret
+
+Functione25c8: ; e25c8 (38:65c8)
+ ld a, [wJumptableIndex]
+ ld hl, .jumptable
+ call Functione33df
+ jp [hl]
+
+.jumptable: ; e25d2 (38:65d2)
+ dw Functione25dc
+ dw Functione2612
+ dw Functione2655
+ dw BillsPC_Withdraw
+ dw Functione2992
+
+
+Functione25dc: ; e25dc (38:65dc)
+ ld a, $f
+ ld [wcb2e], a
+ xor a
+ ld [hBGMapMode], a
+ call ClearSprites
+ call Functione2d30
+ call Functione2a8e
+ ld de, PCString_ChooseaPKMN
+ call Functione2a6e
+ ld a, $5
+ ld [wcb2d], a
+ call Functione2c2c
+ call PCMonInfo
+ ld a, $ff
+ ld [CurPartySpecies], a
+ ld a, $17
+ call Functione33d0
+ call WaitBGMap
+ call Functione2e01
+ call Functione298d
+ ret
+
+Functione2612: ; e2612 (38:6612)
+ ld hl, hJoyPressed ; $ffa7
+ ld a, [hl]
+ and B_BUTTON
+ jr nz, .asm_e264f
+ ld a, [hl]
+ and A_BUTTON
+ jr nz, .asm_e263b
+ call Functione29b5
+ and a
+ ret z
+ call Functione2e01
+ xor a
+ ld [hBGMapMode], a
+ call Functione2c2c
+ call PCMonInfo
+ ld a, $1
+ ld [hBGMapMode], a
+ call DelayFrame
+ call DelayFrame
+ ret
+.asm_e263b
+ call Functione2def
+ and a
+ ret z
+ cp $ff
+ jr z, .asm_e264f
+ ld a, $2
+ ld [wJumptableIndex], a
+ ret
+; e264a (38:664a)
+
+.asm_e264a
+ ld hl, wJumptableIndex
+ dec [hl]
+ ret
+
+.asm_e264f
+ ld a, $4
+ ld [wJumptableIndex], a
+ ret
+; e2655
+
+Functione2655: ; e2655 (38:6655)
+ xor a
+ ld [hBGMapMode], a
+ call ClearSprites
+ call Functione2def
+ ld [CurPartySpecies], a
+ ld a, $17
+ call Functione33d0
+ ld de, PCString_WhatsUp
+ call Functione2a6e
+ ld a, $1
+ ld [MenuSelection2], a
+ call Functione298d
+ ret
+
+BillsPC_Withdraw: ; e2675 (38:6675)
+ ld hl, .MenuDataHeader
+ call CopyMenuDataHeader
+ ld a, [MenuSelection2]
+ call Function1d4b
+ call InterpretMenu2
+ jp c, .cancel
+ ld a, [MenuSelection2]
+ dec a
+ and 3
+ ld e, a
+ ld d, 0
+ ld hl, .jumptable
+rept 2
+ add hl, de
+endr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+
+.jumptable: ; e2699 (38:6699) #mark
+ dw .withdraw ; Withdraw
+ dw .stats ; Stats
+ dw .release ; Release
+ dw .cancel ; Cancel
+
+
+.withdraw: ; e26a1 (38:66a1)
+ call Functione2f18
+ jp c, .cancel
+ call TryWithdrawPokemon
+ jr c, .FailedWithdraw
+ ld a, $0
+ ld [wJumptableIndex], a
+ xor a
+ ld [wcb2b], a
+ ld [wcb2a], a
+ ret
+.FailedWithdraw
+ ld de, PCString_WhatsUp
+ call Functione2a6e
+ ret
+
+.stats: ; e26c0 (38:66c0)
+ call LoadStandardMenuDataHeader
+ call Functione2f7e
+ call ExitMenu
+ call PCMonInfo
+ call Functione2def
+ ld [CurPartySpecies], a
+ ld a, $17
+ call Functione33d0
+ ret
+
+.release: ; e26d8 (38:66d8)
+ ld a, [MenuSelection2]
+ push af
+ call Functione2f5f
+ jr c, .FailedRelease
+ ld de, PCString_ReleasePKMN
+ call Functione2a6e
+ call LoadStandardMenuDataHeader
+ lb bc, 14, 11
+ call PlaceYesNoBox
+ ld a, [MenuSelection2]
+ dec a
+ call ExitMenu
+ and a
+ jr nz, .FailedRelease
+ ld a, [wcb2b]
+ ld hl, wcb2a
+ add [hl]
+ ld [CurPartyMon], a
+ ld a, PC_DEPOSIT
+ ld [wPokemonWithdrawDepositParameter], a
+ callba Functione039
+ call Functione3180
+ ld a, $0
+ ld [wJumptableIndex], a
+ xor a
+ ld [wcb2b], a
+ ld [wcb2a], a
+ pop af
+ ret
+.FailedRelease
+ ld de, PCString_WhatsUp
+ call Functione2a6e
+ pop af
+ ld [MenuSelection2], a
+ ret
+
+.cancel: ; e272b (38:672b)
+ ld a, $0
+ ld [wJumptableIndex], a
+ ret
+; e2731 (38:6731)
+
+.MenuDataHeader: ; 0xe2731
+ db $40 ; flags
+ db 04, 09 ; start coords
+ db 13, 19 ; end coords
+ dw .MenuData
+ db 1 ; default option
+; 0xe2739
+
+.MenuData: ; 0xe2739
+ db $80 ; flags
+ db 4 ; items
+ db "WITHDRAW@"
+ db "STATS@"
+ db "RELEASE@"
+ db "CANCEL@"
+; 0xe2759
+
+_MovePKMNWithoutMail: ; e2759
+ ld hl, Options
+ ld a, [hl]
+ push af
+ set 4, [hl]
+ ld a, [VramState]
+ push af
+ xor a
+ ld [VramState], a
+ ld a, [hInMenu]
+ push af
+ ld a, $1
+ ld [hInMenu], a
+ xor a
+ ld [hMapAnims], a
+ call Functione2963
+ ld a, [wCurBox]
+ and $f
+ inc a
+ ld [wcb2e], a
+ call DelayFrame
+.asm_e2781
+ call JoyTextDelay
+ ld a, [wJumptableIndex]
+ bit 7, a
+ jr nz, .asm_e2793
+ call Functione27a2
+ call DelayFrame
+ jr .asm_e2781
+
+.asm_e2793
+ call ClearSprites
+ pop af
+ ld [hInMenu], a
+ pop af
+ ld [VramState], a
+ pop af
+ ld [Options], a
+ ret
+; e27a2
+
+Functione27a2: ; e27a2
+ ld a, [wJumptableIndex]
+ ld hl, Jumptable_e27ac
+ call Functione33df
+ jp [hl]
+; e27ac
+
+Jumptable_e27ac: ; e27ac
+ dw Functione27ba
+ dw Functione27eb
+ dw Functione283d
+ dw Functione285d
+ dw Functione28df
+ dw Functione2903
+ dw Functione2992
+; e27ba
+
+Functione27ba: ; e27ba
+ xor a
+ ld [hBGMapMode], a
+ call ClearSprites
+ call Functione2d30
+ ld de, PCString_ChooseaPKMN
+ call Functione2a6e
+ ld a, $5
+ ld [wcb2d], a
+ call Functione2c2c
+ call Functione2a80
+ call PCMonInfo
+ ld a, $ff
+ ld [CurPartySpecies], a
+ ld a, $17
+ call Functione33d0
+ call WaitBGMap
+ call Functione2e01
+ call Functione298d
+ ret
+; e27eb
+
+Functione27eb: ; e27eb
+ ld hl, hJoyPressed
+ ld a, [hl]
+ and B_BUTTON
+ jr nz, .asm_e2837
+ ld a, [hl]
+ and A_BUTTON
+ jr nz, .asm_e2823
+ call Functione29d0
+ jr c, .asm_e2816
+ and a
+ ret z
+ call Functione2e01
+ xor a
+ ld [hBGMapMode], a
+ call Functione2c2c
+ call PCMonInfo
+ ld a, $1
+ ld [hBGMapMode], a
+ call DelayFrame
+ call DelayFrame
+ ret
+
+.asm_e2816
+ xor a
+ ld [wcb2b], a
+ ld [wcb2a], a
+ ld a, $0
+ ld [wJumptableIndex], a
+ ret
+
+.asm_e2823
+ call Functione2def
+ and a
+ ret z
+ cp $ff
+ jr z, .asm_e2837
+ ld a, $2
+ ld [wJumptableIndex], a
+ ret
+
+ ld hl, wJumptableIndex
+ dec [hl]
+ ret
+
+.asm_e2837
+ ld a, $6
+ ld [wJumptableIndex], a
+ ret
+; e283d
+
+Functione283d: ; e283d
+ xor a
+ ld [hBGMapMode], a
+ call ClearSprites
+ call Functione2def
+ ld [CurPartySpecies], a
+ ld a, $17
+ call Functione33d0
+ ld de, PCString_WhatsUp
+ call Functione2a6e
+ ld a, $1
+ ld [MenuSelection2], a
+ call Functione298d
+ ret
+; e285d
+
+Functione285d: ; e285d
+ ld hl, MenuDataHeader_0xe28c3
+ call CopyMenuDataHeader
+ ld a, [MenuSelection2]
+ call Function1d4b
+ call InterpretMenu2
+ jp c, Functione28bd
+ ld a, [MenuSelection2]
+ dec a
+ and 3
+ ld e, a
+ ld d, 0
+ ld hl, Jumptable_e2881
+rept 2
+ add hl, de
+endr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; e2881
+
+Jumptable_e2881: ; e2881
+ dw Functione2887
+ dw Functione28a5
+ dw Functione28bd
+; e2887
+
+Functione2887: ; e2887
+ call Functione2f18
+ jp c, Functione28bd
+ ld a, [wcb2a]
+ ld [wcb2f], a
+ ld a, [wcb2b]
+ ld [wcb30], a
+ ld a, [wcb2e]
+ ld [wcb31], a
+ ld a, $4
+ ld [wJumptableIndex], a
+ ret
+; e28a5
+
+Functione28a5: ; e28a5
+ call LoadStandardMenuDataHeader
+ call Functione2f7e
+ call ExitMenu
+ call PCMonInfo
+ call Functione2def
+ ld [CurPartySpecies], a
+ ld a, $17
+ call Functione33d0
+ ret
+; e28bd
+
+Functione28bd: ; e28bd
+ ld a, $0
+ ld [wJumptableIndex], a
+ ret
+; e28c3
+
+MenuDataHeader_0xe28c3: ; 0xe28c3
+ db $40 ; flags
+ db 04, 09 ; start coords
+ db 13, 19 ; end coords
+ dw MenuData2_0xe28cb
+ db 1 ; default option
+; 0xe28cb
+
+MenuData2_0xe28cb: ; 0xe28cb
+ db $80 ; flags
+ db 3 ; items
+ db "MOVE@"
+ db "STATS@"
+ db "CANCEL@"
+; 0xe28df
+
+Functione28df: ; e28df
+ xor a
+ ld [hBGMapMode], a
+ call Functione2d30
+ ld de, PCString_MoveToWhere
+ call Functione2a6e
+ ld a, $5
+ ld [wcb2d], a
+ call Functione2c2c
+ call Functione2a80
+ call ClearSprites
+ call Functione2e8c
+ call WaitBGMap
+ call Functione298d
+ ret
+; e2903
+
+Functione2903: ; e2903
+ ld hl, hJoyPressed
+ ld a, [hl]
+ and B_BUTTON
+ jr nz, .asm_e294b
+ ld a, [hl]
+ and A_BUTTON
+ jr nz, .asm_e2938
+ call Functione29f4
+ jr c, .asm_e292b
+ and a
+ ret z
+ call Functione2e8c
+ xor a
+ ld [hBGMapMode], a
+ call Functione2c2c
+ ld a, $1
+ ld [hBGMapMode], a
+ call DelayFrame
+ call DelayFrame
+ ret
+
+.asm_e292b
+ xor a
+ ld [wcb2b], a
+ ld [wcb2a], a
+ ld a, $4
+ ld [wJumptableIndex], a
+ ret
+
+.asm_e2938
+ call Functione2ee5
+ jr c, .asm_e2946
+ call Functione31e7
+ ld a, $0
+ ld [wJumptableIndex], a
+ ret
+
+.asm_e2946
+ ld hl, wJumptableIndex
+ dec [hl]
+ ret
+
+.asm_e294b
+ ld a, [wcb2f]
+ ld [wcb2a], a
+ ld a, [wcb30]
+ ld [wcb2b], a
+ ld a, [wcb31]
+ ld [wcb2e], a
+ ld a, $0
+ ld [wJumptableIndex], a
+ ret
+; e2963
+
+Functione2963: ; e2963 (38:6963)
+ call ClearBGPalettes
+ call ClearSprites
+ call ClearTileMap
+ call Functione33e8
+ ld hl, OverworldMap
+ ld bc, $338
+ xor a
+ call ByteFill
+ xor a
+ ld [wJumptableIndex], a
+ ld [wcf64], a
+ ld [wcf65], a
+ ld [wcf66], a
+ ld [wcb2b], a
+ ld [wcb2a], a
+ ret
+
+Functione298d: ; e298d (38:698d)
+ ld hl, wJumptableIndex
+ inc [hl]
+ ret
+
+Functione2992: ; e2992 (38:6992)
+ ld hl, wJumptableIndex
+ set 7, [hl]
+ ret
+
+Functione2998: ; e2998 (38:6998)
+ ld a, [wcb2d]
+ ld d, a
+ ld a, [wcb2c]
+ and a
+ jr z, .asm_e29b2
+ dec a
+ cp $1
+ jr z, .asm_e29b2
+ ld e, a
+ ld a, [hl]
+ and D_UP
+ jr nz, Functione2a18
+ ld a, [hl]
+ and D_DOWN
+ jr nz, Functione2a2c
+.asm_e29b2
+ jp Functione2a65
+
+Functione29b5: ; e29b5 (38:69b5)
+ ld hl, hJoyLast
+ ld a, [wcb2d]
+ ld d, a
+ ld a, [wcb2c]
+ ld e, a
+ and a
+ jr z, .asm_e29cd
+ ld a, [hl]
+ and D_UP
+ jr nz, Functione2a18
+ ld a, [hl]
+ and D_DOWN
+ jr nz, Functione2a2c
+.asm_e29cd
+ jp Functione2a65
+; e29d0 (38:69d0)
+
+Functione29d0: ; e29d0
+ ld hl, hJoyLast
+ ld a, [wcb2d]
+ ld d, a
+ ld a, [wcb2c]
+ ld e, a
+ and a
+ jr z, .asm_e29e8
+ ld a, [hl]
+ and D_UP
+ jr nz, Functione2a18
+ ld a, [hl]
+ and D_DOWN
+ jr nz, Functione2a2c
+
+.asm_e29e8
+ ld a, [hl]
+ and D_LEFT
+ jr nz, Functione2a48
+ ld a, [hl]
+ and D_RIGHT
+ jr nz, Functione2a56
+ jr Functione2a65
+
+Functione29f4: ; e29f4
+ ld hl, hJoyLast
+ ld a, [wcb2d]
+ ld d, a
+ ld a, [wcb2c]
+ ld e, a
+ and a
+ jr z, .asm_e2a0c
+
+ ld a, [hl]
+ and D_UP
+ jr nz, Functione2a18
+ ld a, [hl]
+ and D_DOWN
+ jr nz, Functione2a2c
+
+.asm_e2a0c
+ ld a, [hl]
+ and D_LEFT
+ jr nz, Functione2a48
+ ld a, [hl]
+ and D_RIGHT
+ jr nz, Functione2a56
+ jr Functione2a65
+
+Functione2a18: ; e2a18 (38:6a18)
+ ld hl, wcb2b
+ ld a, [hl]
+ and a
+ jr z, .asm_e2a22
+ dec [hl]
+ jr Functione2a68
+
+.asm_e2a22
+ ld hl, wcb2a
+ ld a, [hl]
+ and a
+ jr z, Functione2a65
+ dec [hl]
+ jr Functione2a68
+
+Functione2a2c: ; e2a2c (38:6a2c)
+ ld a, [wcb2b]
+ ld hl, wcb2a
+ add [hl]
+ inc a
+ cp e
+ jr nc, Functione2a65
+
+ ld hl, wcb2b
+ ld a, [hl]
+ inc a
+ cp d
+ jr nc, .asm_e2a42
+ inc [hl]
+ jr Functione2a68
+
+.asm_e2a42
+ ld hl, wcb2a
+ inc [hl]
+ jr Functione2a68
+; e2a48 (38:6a48)
+
+Functione2a48: ; e2a48
+ ld hl, wcb2e
+ ld a, [hl]
+ and a
+ jr z, .asm_e2a52
+ dec [hl]
+ jr Functione2a6c
+
+.asm_e2a52
+ ld [hl], $e
+ jr Functione2a6c
+
+Functione2a56: ; e2a56
+ ld hl, wcb2e
+ ld a, [hl]
+ cp $e
+ jr z, .asm_e2a61
+ inc [hl]
+ jr Functione2a6c
+
+.asm_e2a61
+ ld [hl], $0
+ jr Functione2a6c
+
+Functione2a65: ; e2a65 (38:6a65)
+ xor a
+ and a
+ ret
+
+Functione2a68: ; e2a68 (38:6a68)
+ ld a, $1
+ and a
+ ret
+; e2a6c (38:6a6c)
+
+Functione2a6c: ; e2a6c
+ scf
+ ret
+; e2a6e
+
+Functione2a6e: ; e2a6e (38:6a6e)
+ push de
+ hlcoord 0, 15
+ lb bc, 1, 18
+ call TextBox
+ pop de
+ hlcoord 1, 16
+ call PlaceString
+ ret
+; e2a80 (38:6a80)
+
+Functione2a80: ; e2a80
+ call Functione2a8e
+ hlcoord 8, 1
+ ld [hl], $5f
+ hlcoord 19, 1
+ ld [hl], $5e
+ ret
+; e2a8e
+
+Functione2a8e: ; e2a8e (38:6a8e)
+ hlcoord 8, 0
+ lb bc, 1, 10
+ call TextBox
+
+ ld a, [wcb2e]
+ and a
+ jr z, .party
+
+ cp NUM_BOXES + 1
+ jr nz, .gotbox
+
+ ld a, [wCurBox]
+ inc a
+.gotbox
+ dec a
+ ld hl, wBoxNames
+ ld bc, BOX_NAME_LENGTH
+ call AddNTimes
+ ld e, l
+ ld d, h
+ jr .print
+
+.party
+ ld de, String_e2abd
+.print
+ hlcoord 10, 1
+ call PlaceString
+ ret
+; e2abd (38:6abd)
+
+String_e2abd:
+ db "PARTY <PK><MN>@"
+; e2ac6
+
+PCMonInfo: ; e2ac6 (38:6ac6)
+; Display a monster's pic and
+; attributes when highlighting
+; it in a PC menu.
+
+; Includes the neat cascading
+; effect when showing the pic.
+
+; Example: Species, level, gender,
+; whether it's holding an item.
+
+ hlcoord 0, 0
+ lb bc, 15, 8
+ call ClearBox
+
+ hlcoord 8, 14
+ lb bc, 1, 3
+ call ClearBox
+
+ call Functione2def
+ and a
+ ret z
+ cp $ff
+ ret z
+
+ ld [wd265], a
+ hlcoord 1, 4
+ xor a
+ ld b, 7
+.asm_e2ae9
+ ld c, 7
+ push af
+ push hl
+.asm_e2aed
+ ld [hli], a
+ add 7
+ dec c
+ jr nz, .asm_e2aed
+ pop hl
+ ld de, 20
+ add hl, de
+ pop af
+ inc a
+ dec b
+ jr nz, .asm_e2ae9
+
+ call Functione2b6d
+ ld a, [wd265]
+ ld [CurPartySpecies], a
+ ld [CurSpecies], a
+ ld hl, TempMonDVs
+ predef GetUnownLetter
+ call GetBaseData
+ ld de, VTiles2 tile $00
+ predef GetFrontpic
+ xor a
+ ld [wcb32], a
+ ld a, [CurPartySpecies]
+ ld [wd265], a
+
+ cp EGG
+ ret z
+
+ call GetBasePokemonName
+ hlcoord 1, 14
+ call PlaceString
+
+ hlcoord 1, 12
+ call PrintLevel
+
+ ld a, $3
+ ld [MonType], a
+ callba GetGender
+ jr c, .asm_e2b4f
+ ld a, "♂"
+ jr nz, .printgender
+ ld a, "♀"
+.printgender
+ hlcoord 5, 12
+ ld [hl], a
+.asm_e2b4f
+
+ ld a, [TempMonItem]
+ and a
+ ret z
+
+ ld d, a
+ callab ItemIsMail
+ jr c, .mail
+ ld a, $5d ; item icon
+ jr .printitem
+.mail
+ ld a, $1
+ ld [wcb32], a
+ ld a, $5c ; mail icon
+.printitem
+ hlcoord 7, 12
+ ld [hl], a
+ ret
+
+Functione2b6d: ; e2b6d (38:6b6d)
+ ld a, [wcb2b]
+ ld hl, wcb2a
+ add [hl]
+ ld e, a
+ ld d, $0
+ ld hl, wc801
+rept 3
+ add hl, de
+endr
+ ld a, [hl]
+ and a
+ jr z, .asm_e2bc6
+ cp $f
+ jr z, .asm_e2bf5
+ ld b, a
+ call Functione3396
+ ld a, b
+ call GetSRAMBank
+ push hl
+ ld bc, $35
+ add hl, bc
+ ld bc, $20
+ ld a, e
+ call AddNTimes
+ ld a, [hl]
+ ld [TempMonLevel], a
+ pop hl
+ push hl
+ ld bc, $17
+ add hl, bc
+ ld bc, $20
+ ld a, e
+ call AddNTimes
+ ld a, [hl]
+ ld [TempMonItem], a
+ pop hl
+ ld bc, $2b
+ add hl, bc
+ ld bc, $20
+ ld a, e
+ call AddNTimes
+ ld de, TempMonDVs
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hl]
+ ld [de], a
+ call CloseSRAM
+ ret
+.asm_e2bc6
+ ld hl, PartyMon1Level
+ ld bc, $30
+ ld a, e
+ call AddNTimes
+ ld a, [hl]
+ ld [TempMonLevel], a
+ ld hl, PartyMon1Item
+ ld bc, $30
+ ld a, e
+ call AddNTimes
+ ld a, [hl]
+ ld [TempMonItem], a
+ ld hl, PartyMon1DVs
+ ld bc, $30
+ ld a, e
+ call AddNTimes
+ ld de, TempMonDVs
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hl]
+ ld [de], a
+ ret
+
+.asm_e2bf5
+ ld a, BANK(sBox)
+ call GetSRAMBank
+ ld hl, sBoxMon1Level
+ ld bc, $20
+ ld a, e
+ call AddNTimes
+ ld a, [hl]
+ ld [TempMonLevel], a
+
+ ld hl, sBoxMon1Item
+ ld bc, $20
+ ld a, e
+ call AddNTimes
+ ld a, [hl]
+ ld [TempMonItem], a
+
+ ld hl, sBoxMon1DVs
+ ld bc, $20
+ ld a, e
+ call AddNTimes
+ ld de, TempMonDVs
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hl]
+ ld [de], a
+
+ call CloseSRAM
+ ret
+
+Functione2c2c: ; e2c2c (38:6c2c)
+ hlcoord 8, 2
+ lb bc, 10, 10
+ call TextBox
+
+ hlcoord 8, 2
+ ld [hl], "└"
+ hlcoord 19, 2
+ ld [hl], "┘"
+
+ ld a, [wcb2a]
+ ld e, a
+ ld d, 0
+ ld hl, OverworldMap
+rept 3
+ add hl, de
+endr
+ ld e, l
+ ld d, h
+ hlcoord 9, 4
+ ld a, [wcb2d]
+.asm_e2c53
+ push af
+ push de
+ push hl
+ call Functione2c6e
+ pop hl
+ ld de, $28
+ add hl, de
+ pop de
+rept 3
+ inc de
+endr
+ pop af
+ dec a
+ jr nz, .asm_e2c53
+ ret
+; e2c67 (38:6c67)
+
+String_e2c67:
+ db "CANCEL@"
+; e2c6e
+
+Functione2c6e: ; e2c6e (38:6c6e)
+ ld a, [de]
+ and a
+ ret z
+ cp $ff
+ jr nz, .asm_e2c7c
+ ld de, String_e2c67
+ call PlaceString
+ ret
+.asm_e2c7c
+ inc de
+ ld a, [de]
+ ld b, a
+ inc de
+ ld a, [de]
+ ld e, a
+ ld a, b
+ and a
+ jr z, .asm_e2cc8
+ cp $f
+ jr z, .asm_e2cf1
+ push hl
+ call Functione3396
+ ld a, b
+ call GetSRAMBank
+ push hl
+ ld bc, $16
+ add hl, bc
+ ld bc, $20
+ ld a, e
+ call AddNTimes
+ ld a, [hl]
+ pop hl
+ and a
+ jr z, .asm_e2cc2
+ ld bc, $372
+ add hl, bc
+ ld bc, $b
+ ld a, e
+ call AddNTimes
+ ld de, StringBuffer1
+ ld bc, $b
+ call CopyBytes
+ call CloseSRAM
+ pop hl
+ ld de, StringBuffer1
+ call PlaceString
+ ret
+.asm_e2cc2
+ call CloseSRAM
+ pop hl
+ jr .asm_e2d23
+.asm_e2cc8
+ push hl
+ ld hl, PartySpecies
+ ld d, $0
+ add hl, de
+ ld a, [hl]
+ and a
+ jr z, .asm_e2cee
+ ld hl, PartyMonNicknames
+ ld bc, $b
+ ld a, e
+ call AddNTimes
+ ld de, StringBuffer1
+ ld bc, $b
+ call CopyBytes
+ pop hl
+ ld de, StringBuffer1
+ call PlaceString
+ ret
+.asm_e2cee
+ pop hl
+ jr .asm_e2d23
+.asm_e2cf1
+ push hl
+ ld a, BANK(sBox)
+ call GetSRAMBank
+ ld hl, sBoxSpecies
+ ld d, $0
+ add hl, de
+ ld a, [hl]
+ and a
+ jr z, .asm_e2d1f
+ ld hl, sBoxMonNicknames
+ ld bc, PKMN_NAME_LENGTH
+ ld a, e
+ call AddNTimes
+ ld de, StringBuffer1
+ ld bc, PKMN_NAME_LENGTH
+ call CopyBytes
+ call CloseSRAM
+ pop hl
+ ld de, StringBuffer1
+ call PlaceString
+ ret
+.asm_e2d1f
+ call CloseSRAM
+ pop hl
+.asm_e2d23
+ ld de, String_e2d2a
+ call PlaceString
+ ret
+; e2d2a (38:6d2a)
+
+String_e2d2a:
+ db "-----@"
+; e2d30
+
+Functione2d30: ; e2d30 (38:6d30)
+ xor a
+ ld hl, OverworldMap
+ ld bc, $5a
+ call ByteFill
+ ld de, OverworldMap
+ xor a
+ ld [wd003], a
+ ld [wd004], a
+ ld a, [wcb2e]
+ and a
+ jr z, .asm_e2d87
+ cp $f
+ jr z, .asm_e2db7
+ ld b, a
+ call Functione3396
+ ld a, b
+ call GetSRAMBank
+ inc hl
+.asm_e2d57
+ ld a, [hl]
+ cp $ff
+ jr z, .asm_e2d79
+ and a
+ jr z, .asm_e2d79
+ ld [de], a
+ inc de
+ ld a, [wcb2e]
+ ld [de], a
+ inc de
+ ld a, [wd003]
+ ld [de], a
+ inc a
+ ld [wd003], a
+ inc de
+ inc hl
+ ld a, [wd004]
+ inc a
+ ld [wd004], a
+ jr .asm_e2d57
+.asm_e2d79
+ call CloseSRAM
+ ld a, $ff
+ ld [de], a
+ ld a, [wd004]
+ inc a
+ ld [wcb2c], a
+ ret
+.asm_e2d87
+ ld hl, PartySpecies
+.asm_e2d8a
+ ld a, [hl]
+ cp $ff
+ jr z, .asm_e2dac
+ and a
+ jr z, .asm_e2dac
+ ld [de], a
+ inc de
+ ld a, [wcb2e]
+ ld [de], a
+ inc de
+ ld a, [wd003]
+ ld [de], a
+ inc a
+ ld [wd003], a
+ inc de
+ inc hl
+ ld a, [wd004]
+ inc a
+ ld [wd004], a
+ jr .asm_e2d8a
+.asm_e2dac
+ ld a, $ff
+ ld [de], a
+ ld a, [wd004]
+ inc a
+ ld [wcb2c], a
+ ret
+.asm_e2db7
+ ld a, BANK(sBox)
+ call GetSRAMBank
+ ld hl, sBoxSpecies
+.asm_e2dbf
+ ld a, [hl]
+ cp $ff
+ jr z, .asm_e2de1
+ and a
+ jr z, .asm_e2de1
+ ld [de], a
+ inc de
+ ld a, [wcb2e]
+ ld [de], a
+ inc de
+ ld a, [wd003]
+ ld [de], a
+ inc a
+ ld [wd003], a
+ inc de
+ inc hl
+ ld a, [wd004]
+ inc a
+ ld [wd004], a
+ jr .asm_e2dbf
+.asm_e2de1
+ call CloseSRAM
+ ld a, $ff
+ ld [de], a
+ ld a, [wd004]
+ inc a
+ ld [wcb2c], a
+ ret
+
+Functione2def: ; e2def (38:6def)
+ ld a, [wcb2b]
+ ld hl, wcb2a
+ add [hl]
+ ld e, a
+ ld d, $0
+ ld hl, OverworldMap
+rept 3
+ add hl, de
+endr
+ ld a, [hl]
+ ret
+
+Functione2e01: ; e2e01 (38:6e01)
+ ld a, [wcb2c]
+ and a
+ jr nz, .asm_e2e0b
+ call ClearSprites
+ ret
+.asm_e2e0b
+ ld hl, Unknown_e2e2b
+ ld de, Sprites
+.done1
+ ld a, [hl]
+ cp $ff
+ ret z
+ ld a, [wcb2b]
+ and $7
+ swap a
+ add [hl]
+ inc hl
+ 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
+ jr .done1
+; e2e2b (38:6e2b)
+
+Unknown_e2e2b: ; e2e2b
+ db $26, $50, $00, $00
+ db $26, $58, $00, $00
+ db $26, $60, $00, $00
+ db $26, $68, $00, $00
+ db $26, $70, $00, $00
+ db $26, $78, $00, $00
+ db $26, $80, $00, $00
+ db $26, $88, $00, $00
+ db $26, $90, $00, $00
+ db $26, $97, $00, $00
+ db $39, $50, $00, $40
+ db $39, $58, $00, $40
+ db $39, $60, $00, $40
+ db $39, $68, $00, $40
+ db $39, $70, $00, $40
+ db $39, $78, $00, $40
+ db $39, $80, $00, $40
+ db $39, $88, $00, $40
+ db $39, $90, $00, $40
+ db $39, $97, $00, $40
+ db $2e, $4e, $01, $00
+ db $31, $4e, $01, $40
+ db $2e, $99, $01, $20
+ db $31, $99, $01, $60
+ db $ff
+; e2e8c
+
+Functione2e8c: ; e2e8c
+ ld hl, Unknown_e2eac
+ ld de, Sprites
+.asm_e2e92
+ ld a, [hl]
+ cp $ff
+ ret z
+ ld a, [wcb2b]
+ and $7
+ swap a
+ add [hl]
+ inc hl
+ 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
+ jr .asm_e2e92
+; e2eac
+
+Unknown_e2eac: ; e2eac
+ db $27, $50, $06, $00
+ db $2b, $58, $00, $40
+ db $2b, $60, $00, $40
+ db $2b, $68, $00, $40
+ db $2b, $70, $00, $40
+ db $2b, $78, $00, $40
+ db $2b, $80, $00, $40
+ db $2b, $88, $00, $40
+ db $2b, $90, $00, $40
+ db $27, $98, $07, $00
+ db $ff
+; e2ed5
+
+Functione2ed5: ; e2ed5
+.asm_e2ed5
+ push bc
+ push hl
+.asm_e2ed7
+ ld [hli], a
+ dec c
+ jr nz, .asm_e2ed7
+ pop hl
+ ld bc, SCREEN_WIDTH
+ add hl, bc
+ pop bc
+ dec b
+ jr nz, .asm_e2ed5
+ ret
+; e2ee5
+
+Functione2ee5: ; e2ee5
+ ld hl, wcb2e
+ ld a, [wcb31]
+ cp [hl]
+ jr z, .asm_e2f00
+ ld a, [wcb2e]
+ and a
+ jr z, .asm_e2ef8
+ ld e, $15
+ jr .asm_e2efa
+
+.asm_e2ef8
+ ld e, $7
+
+.asm_e2efa
+ ld a, [wcb2c]
+ cp e
+ jr nc, .asm_e2f02
+
+.asm_e2f00
+ and a
+ ret
+
+.asm_e2f02
+ ld de, PCString_TheresNoRoom
+ call Functione2a6e
+ ld de, SFX_WRONG
+ call WaitPlaySFX
+ call WaitSFX
+ ld c, 50
+ call DelayFrames
+ scf
+ ret
+; e2f18
+
+Functione2f18: ; e2f18 (38:6f18)
+ ld a, [wcb2e]
+ and a
+ jr nz, .Okay
+ ld a, [wcb2c]
+ cp $3
+ jr c, .ItsYourLastPokemon
+ ld a, [wcb2b]
+ ld hl, wcb2a
+ add [hl]
+ ld [CurPartyMon], a
+ callba CheckCurPartyMonFainted
+ jr c, .AllOthersFainted
+ ld a, [wcb32]
+ and a
+ jr nz, .HasMail
+.Okay
+ and a
+ ret
+.HasMail
+ ld de, PCString_RemoveMail
+ jr .NotOkay
+.AllOthersFainted
+ ld de, PCString_NoMoreUsablePKMN
+ jr .NotOkay
+.ItsYourLastPokemon
+ ld de, PCString_ItsYourLastPKMN
+.NotOkay
+ call Functione2a6e
+ ld de, SFX_WRONG
+ call WaitPlaySFX
+ call WaitSFX
+ ld c, 50
+ call DelayFrames
+ scf
+ ret
+
+Functione2f5f: ; e2f5f (38:6f5f)
+ ld a, [CurPartySpecies]
+ cp EGG
+ jr z, .asm_e2f68
+ and a
+ ret
+.asm_e2f68
+ ld de, PCString_NoReleasingEGGS
+ call Functione2a6e
+ ld de, SFX_WRONG
+ call WaitPlaySFX
+ call WaitSFX
+ ld c, 50
+ call DelayFrames
+ scf
+ ret
+
+Functione2f7e: ; e2f7e (38:6f7e)
+ call LowVolume
+ call Functione2fd6
+ ld a, $3
+ ld [MonType], a
+ predef StatsScreenInit
+ call Functione33e8
+ call MaxVolume
+ ret
+
+Functione2f95: ; e2f95 (38:6f95)
+ ld hl, hJoyPressed ; $ffa7
+ ld a, [hl]
+ and A_BUTTON | B_BUTTON | D_RIGHT | D_LEFT
+ ld [wcf73], a
+ jr nz, .pressed_a_b_right_left
+ ld a, [hl]
+ and D_DOWN | D_UP
+ ld [wcf73], a
+ jr nz, .pressed_down_up
+ jr .pressed_a_b_right_left
+
+.pressed_down_up
+ call Functione2998
+ and a
+ jr z, .asm_e2fd1
+ call Functione2def
+ ld [wd265], a
+ call Functione2b6d
+ ld a, [wd265]
+ ld [CurPartySpecies], a
+ ld [CurSpecies], a
+ ld hl, TempMonDVs
+ predef GetUnownLetter
+ call GetBaseData
+ call Functione2fd6
+.pressed_a_b_right_left
+ ret
+
+.asm_e2fd1
+ xor a
+ ld [wcf73], a
+ ret
+
+Functione2fd6: ; e2fd6 (38:6fd6)
+ ld a, [wcb2b]
+ ld hl, wcb2a
+ add [hl]
+ ld [CurPartyMon], a
+ ld a, [wcb2e]
+ and a
+ jr z, .asm_e3020
+ cp $f
+ jr nz, .asm_e3048
+ ld a, BANK(sBox)
+ call GetSRAMBank
+ ld hl, sBoxSpecies
+ call Functione3357
+ ld hl, sBoxMonNicknames
+ call Functione3363
+ ld hl, sBoxMonOT
+ call Functione3376
+ ld hl, sBoxMons
+ ld bc, BOXMON_STRUCT_LENGTH
+ ld a, [CurPartyMon]
+ call AddNTimes
+ ld de, wd018_Mon
+ ld bc, PARTYMON_STRUCT_LENGTH
+ call CopyBytes
+ call CloseSRAM
+ callba Function5088b
+ ret
+
+.asm_e3020
+ ld hl, PartySpecies
+ call Functione3357
+ ld hl, PartyMonNicknames
+ call Functione3363
+ ld hl, PartyMonOT
+ call Functione3376
+ ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species)
+ ld bc, PARTYMON_STRUCT_LENGTH
+ ld a, [CurPartyMon]
+ call AddNTimes
+ ld de, wd018_Mon
+ ld bc, PARTYMON_STRUCT_LENGTH
+ call CopyBytes
+ ret
+
+.asm_e3048
+ ld b, a
+ call Functione3396
+ ld a, b
+ call GetSRAMBank
+ push hl
+ inc hl
+ call Functione3357
+ pop hl
+ push hl
+ ld bc, $372
+ add hl, bc
+ call Functione3363
+ pop hl
+ push hl
+ ld bc, $296
+ add hl, bc
+ call Functione3376
+ pop hl
+ ld bc, $16
+ add hl, bc
+ ld bc, $20
+ call Functione3389
+ call CloseSRAM
+ callba Function5088b
+ ret
+
+Functione307c: ; e307c (38:707c)
+ ld a, [wcb2b]
+ ld hl, wcb2a
+ add [hl]
+ ld [CurPartyMon], a
+ ld hl, PartyMonNicknames
+ ld a, [CurPartyMon]
+ call GetNick
+ ld a, PC_DEPOSIT
+ ld [wPokemonWithdrawDepositParameter], a
+ predef SentGetPkmnIntoFromBox
+ jr c, .asm_boxisfull
+ xor a
+ ld [wPokemonWithdrawDepositParameter], a
+ callba Functione039
+ ld a, [CurPartySpecies]
+ call PlayCry
+ hlcoord 0, 0
+ lb bc, 15, 8
+ call ClearBox
+ hlcoord 8, 14
+ lb bc, 1, 3
+ call ClearBox
+ hlcoord 0, 15
+ lb bc, 1, 18
+ call TextBox
+ call WaitBGMap
+ hlcoord 1, 16
+ ld de, PCString_Stored
+ call PlaceString
+ ld l, c
+ ld h, b
+ ld de, StringBuffer1
+ call PlaceString
+ ld a, "!"
+ ld [bc], a
+ ld c, 50
+ call DelayFrames
+ and a
+ ret
+
+.asm_boxisfull
+ ld de, PCString_BoxFull
+ call Functione2a6e
+ ld de, SFX_WRONG
+ call WaitPlaySFX
+ call WaitSFX
+ ld c, 50
+ call DelayFrames
+ scf
+ ret
+
+TryWithdrawPokemon: ; e30fa (38:70fa)
+ ld a, [wcb2b]
+ ld hl, wcb2a
+ add [hl]
+ ld [CurPartyMon], a
+ ld a, BANK(sBoxMonNicknames)
+ call GetSRAMBank
+ ld a, [CurPartyMon]
+ ld hl, sBoxMonNicknames
+ call GetNick
+ call CloseSRAM
+ xor a
+ ld [wPokemonWithdrawDepositParameter], a
+ predef SentGetPkmnIntoFromBox
+ jr c, .PartyFull
+ ld a, PC_DEPOSIT
+ ld [wPokemonWithdrawDepositParameter], a
+ callba Functione039
+ ld a, [CurPartySpecies]
+ call PlayCry
+ hlcoord 0, 0
+ lb bc, 15, 8
+ call ClearBox
+ hlcoord 8, 14
+ lb bc, 1, 3
+ call ClearBox
+ hlcoord 0, 15
+ lb bc, 1, 18
+ call TextBox
+ call WaitBGMap
+ hlcoord 1, 16
+ ld de, PCString_Got
+ call PlaceString
+ ld l, c
+ ld h, b
+ ld de, StringBuffer1
+ call PlaceString
+ ld a, $e7
+ ld [bc], a
+ ld c, 50
+ call DelayFrames
+ and a
+ ret
+
+.PartyFull
+ ld de, PCString_PartyFull
+ call Functione2a6e
+ ld de, SFX_WRONG
+ call WaitPlaySFX
+ call WaitSFX
+ ld c, 50
+ call DelayFrames
+ scf
+ ret
+
+
+Functione3180: ; e3180 (38:7180)
+ hlcoord 0, 0
+ lb bc, 15, 8
+ call ClearBox
+ hlcoord 8, 14
+ lb bc, 1, 3
+ call ClearBox
+ hlcoord 0, 15
+ lb bc, 1, 18
+ call TextBox
+
+ call WaitBGMap
+ ld a, [CurPartySpecies]
+ call GetCryIndex
+ jr c, .asm_e31ab
+ ld e, c
+ ld d, b
+ call PlayCryHeader
+.asm_e31ab
+
+ ld a, [CurPartySpecies]
+ ld [wd265], a
+ call GetPokemonName
+ hlcoord 1, 16
+ ld de, PCString_ReleasedPKMN
+ call PlaceString
+ ld c, 80
+ call DelayFrames
+ hlcoord 0, 15
+ lb bc, 1, 18
+ call TextBox
+ hlcoord 1, 16
+ ld de, PCString_Bye
+ call PlaceString
+ ld l, c
+ ld h, b
+ inc hl
+ ld de, StringBuffer1
+ call PlaceString
+ ld l, c
+ ld h, b
+ ld [hl], $e7
+ ld c, 50
+ call DelayFrames
+ ret
+; e31e7 (38:71e7)
+
+Functione31e7: ; e31e7
+ push hl
+ push de
+ push bc
+ push af
+ hlcoord 0, 15
+ lb bc, 1, 18
+ call TextBox
+ hlcoord 1, 16
+ ld de, String_e3233
+ call PlaceString
+ ld c, 20
+ call DelayFrames
+ pop af
+ pop bc
+ pop de
+ pop hl
+ ld a, [wCurBox]
+ push af
+ ld bc, 0
+ ld a, [wcb31]
+ and a
+ jr nz, .asm_e3215
+ set 0, c
+
+.asm_e3215
+ ld a, [wcb2e]
+ and a
+ jr nz, .asm_e321d
+ set 1, c
+
+.asm_e321d
+ ld hl, Jumptable_e3245
+rept 2
+ add hl, bc
+endr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, Functione322a
+ push de
+ jp [hl]
+; e322a
+
+Functione322a: ; e322a
+ pop af
+ ld e, a
+ callba Function14ad5
+ ret
+; e3233
+
+String_e3233:
+ db "Saving… Leave ON!@"
+; e3245
+
+Jumptable_e3245: ; e3245
+ dw Functione324d
+ dw Functione3267
+ dw Functione327d
+ dw Functione3284
+; e324d
+
+Functione324d: ; e324d
+ ld hl, wcb31
+ ld a, [wcb2e]
+ cp [hl]
+ jr z, .asm_e325d
+ call Functione32b0
+ call Functione32fa
+ ret
+
+.asm_e325d
+ call Functione32b0
+ call Functione328e
+ call Functione32fa
+ ret
+; e3267
+
+Functione3267: ; e3267
+ call Functione3316
+ ld a, $1
+ ld [wc2cd], a
+ callba SaveGameData
+ xor a
+ ld [wc2cd], a
+ call Functione32fa
+ ret
+; e327d
+
+Functione327d: ; e327d
+ call Functione32b0
+ call Functione3346
+ ret
+; e3284
+
+Functione3284: ; e3284
+ call Functione3316
+ call Functione328e
+ call Functione3346
+ ret
+; e328e
+
+Functione328e: ; e328e
+ ld a, [wcb2b]
+ ld hl, wcb2a
+ add [hl]
+ ld e, a
+ ld a, [wcb30]
+ ld hl, wcb2f
+ add [hl]
+ cp e
+ ret nc
+ ld hl, wcb2b
+ ld a, [hl]
+ and a
+ jr z, .asm_e32a8
+ dec [hl]
+ ret
+
+.asm_e32a8
+ ld hl, wcb2a
+ ld a, [hl]
+ and a
+ ret z
+ dec [hl]
+ ret
+; e32b0
+
+Functione32b0: ; e32b0
+ ld a, [wcb31]
+ dec a
+ ld e, a
+ callba Function14ac2
+ ld a, [wcb30]
+ ld hl, wcb2f
+ add [hl]
+ ld [CurPartyMon], a
+ ld a, $1
+ call GetSRAMBank
+ ld hl, sBoxSpecies
+ call Functione3357
+ ld hl, sBoxMonNicknames
+ call Functione3363
+ ld hl, sBoxMonOT
+ call Functione3376
+ ld hl, sBoxMons
+ ld bc, BOXMON_STRUCT_LENGTH
+ call Functione3389
+ call CloseSRAM
+ callba Function5088b
+ ld a, PC_DEPOSIT
+ ld [wPokemonWithdrawDepositParameter], a
+ callba Functione039
+ ret
+; e32fa
+
+Functione32fa: ; e32fa
+ ld a, [wcb2e]
+ dec a
+ ld e, a
+ callba Function14ac2
+ ld a, [wcb2b]
+ ld hl, wcb2a
+ add [hl]
+ ld [CurPartyMon], a
+ callba Function51322
+ ret
+; e3316
+
+Functione3316: ; e3316
+ ld a, [wcb30]
+ ld hl, wcb2f
+ add [hl]
+ ld [CurPartyMon], a
+ ld hl, PartySpecies
+ call Functione3357
+ ld hl, PartyMonNicknames
+ call Functione3363
+ ld hl, PartyMonOT
+ call Functione3376
+ ld hl, PartyMon1Species
+ ld bc, PARTYMON_STRUCT_LENGTH
+ call Functione3389
+ xor a
+ ld [wPokemonWithdrawDepositParameter], a
+ callba Functione039
+ ret
+; e3346
+
+Functione3346: ; e3346
+ ld a, [wcb2b]
+ ld hl, wcb2a
+ add [hl]
+ ld [CurPartyMon], a
+ callba Function5138b
+ ret
+; e3357
+
+Functione3357: ; e3357 (38:7357)
+ ld a, [CurPartyMon]
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [hl]
+ ld [CurPartySpecies], a
+ ret
+
+Functione3363: ; e3363 (38:7363)
+ ld bc, $b
+ ld a, [CurPartyMon]
+ call AddNTimes
+ ld de, wd002
+ ld bc, $b
+ call CopyBytes
+ ret
+
+Functione3376: ; e3376 (38:7376)
+ ld bc, $b
+ ld a, [CurPartyMon]
+ call AddNTimes
+ ld de, wd00d
+ ld bc, $b
+ call CopyBytes
+ ret
+
+Functione3389: ; e3389 (38:7389)
+ ld a, [CurPartyMon]
+ call AddNTimes
+ ld de, wd018
+ call CopyBytes
+ ret
+
+Functione3396: ; e3396 (38:7396)
+ dec b
+ ld c, b
+ ld b, 0
+ ld hl, Unknown_e33a6
+rept 3
+ add hl, bc
+endr
+ ld a, [hli]
+ ld b, a
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ret
+; e33a6 (38:73a6)
+
+Unknown_e33a6: ; e33a6
+ ; bank, address
+ dba sBox1
+ dba sBox2
+ dba sBox3
+ dba sBox4
+ dba sBox5
+ dba sBox6
+ dba sBox7
+ dba sBox8
+ dba sBox9
+ dba sBox10
+ dba sBox11
+ dba sBox12
+ dba sBox13
+ dba sBox14
+; e33d0
+
+Functione33d0: ; e33d0 (38:73d0)
+ ld b, a
+ call GetSGBLayout
+ ld a, $e4
+ call DmgToCgbBGPals
+ ld a, $fc
+ call Functioncf8
+ ret
+
+Functione33df: ; e33df (38:73df)
+ ld e, a
+ ld d, $0
+rept 2
+ add hl, de
+endr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ret
+
+Functione33e8: ; e33e8 (38:73e8)
+ call DisableLCD
+ ld hl, VTiles2 tile $00
+ ld bc, $310
+ xor a
+ call ByteFill
+ call LoadStandardFont
+ call LoadFontsBattleExtra
+ ld hl, PCMailGFX
+ ld de, VTiles2 tile $5c
+ ld bc, $40
+ call CopyBytes
+ ld hl, PCSelectLZ
+ ld de, VTiles0 tile $00
+ call Decompress
+ ld a, 6
+ call SkipMusic
+ call EnableLCD
+ ret
+; e3419 (38:7419)
+
+PCSelectLZ: INCBIN "gfx/pc.2bpp.lz"
+PCMailGFX: INCBIN "gfx/pc_mail.2bpp"
+; e34dd
+
+PCString_ChooseaPKMN: db "Choose a <PK><MN>.@"
+PCString_WhatsUp: db "What's up?@"
+PCString_ReleasePKMN: db "Release <PK><MN>?@"
+PCString_MoveToWhere: db "Move to where?@"
+PCString_ItsYourLastPKMN: db "It's your last <PK><MN>!@"
+PCString_TheresNoRoom: db "There's no room!@"
+PCString_NoMoreUsablePKMN: db "No more usable <PK><MN>!@"
+PCString_RemoveMail: db "Remove MAIL.@"
+PCString_ReleasedPKMN: db "Released <PK><MN>.@"
+PCString_Bye: db "Bye,@"
+PCString_Stored: db "Stored @"
+PCString_Got: db "Got @"
+PCString_Non: db "Non.@"
+PCString_BoxFull: db "The BOX is full.@"
+PCString_PartyFull: db "The party's full!@"
+PCString_NoReleasingEGGS: db "No releasing EGGS!@"
+; e35aa
+
+
+_ChangeBox: ; e35aa (38:75aa)
+ call LoadStandardMenuDataHeader
+ call Functione35e2
+.loop
+ xor a
+ ld [hBGMapMode], a
+ call Functione36cf
+ call Functione379c
+ ld hl, _ChangeBox_menudataheader
+ call CopyMenuDataHeader
+ xor a
+ ld [wd0e4], a
+ hlcoord 0, 4
+ lb bc, 8, 9
+ call TextBox
+ call HandleScrollingMenu
+ ld a, [wcf73]
+ cp $2
+ jr z, .done
+ call Functione37af
+ call Functione36f9
+ jr .loop
+.done
+ call WriteBackup
+ ret
+
+Functione35e2: ; e35e2 (38:75e2)
+ xor a
+ ld [hBGMapMode], a
+ hlcoord 0, 0
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ ld a, " "
+ call ByteFill
+ ret
+; e35f1 (38:75f1)
+
+_ChangeBox_menudataheader: ; 0xe35f1
+ db $40 ; flags
+ db 05, 01 ; start coords
+ db 12, 09 ; end coords
+ dw .menudata2
+ db 1 ; default option
+; 0xe35f9
+
+.menudata2: ; 0xe35f9
+ db $22 ; flags
+ db 4, 0
+ db 1
+ dba .boxes
+ dba .boxnames
+ dba NULL
+ dba Functione3632
+; e3609
+
+.boxes: ; e3609
+ db NUM_BOXES
+x = 1
+rept NUM_BOXES
+ db x
+x = x + 1
+endr
+ db -1
+; e3619
+
+.boxnames: ; e3619
+ push de
+ ld a, [MenuSelection]
+ dec a
+ call GetBoxName
+ pop hl
+ call PlaceString
+ ret
+; e3626
+
+GetBoxName: ; e3626 (38:7626)
+ ld bc, BOX_NAME_LENGTH
+ ld hl, wBoxNames
+ call AddNTimes
+ ld d, h
+ ld e, l
+ ret
+; e3632 (38:7632)
+
+Functione3632: ; e3632
+ hlcoord 11, 7
+ lb bc, 5, 7
+ call TextBox
+ ld a, [MenuSelection]
+ cp -1
+ ret z
+ hlcoord 12, 9
+ ld de, String_e3663
+ call PlaceString
+ call GetBoxCount
+ ld [wd265], a
+ hlcoord 13, 11
+ ld de, wd265
+ lb bc, 1, 2
+ call PrintNum
+ ld de, String_e3668
+ call PlaceString
+ ret
+; e3663
+
+String_e3663: ; e3663
+ db "#MON@"
+; e3668
+
+String_e3668: ; e3668
+ ; db "/20@"
+ db "/"
+ db "0" + MONS_PER_BOX / 10 ; "2"
+ db "0" + MONS_PER_BOX % 10 ; "0"
+ db "@"
+; e366c
+
+GetBoxCount: ; e366c (38:766c)
+ ld a, [wCurBox]
+ ld c, a
+ ld a, [MenuSelection]
+ dec a
+ cp c
+ jr z, .activebox
+ ld c, a
+ ld b, 0
+ ld hl, .boxbanks
+rept 3
+ add hl, bc
+endr
+ ld a, [hli]
+ ld b, a
+ call GetSRAMBank
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [hl]
+ call CloseSRAM
+ ld c, a
+ ld a, [wSavedAtLeastOnce]
+ and a
+ jr z, .newfile
+ ld a, c
+ ret
+
+.newfile
+ xor a
+ ret
+
+.activebox
+ ld a, BANK(sBoxCount)
+ ld b, a
+ call GetSRAMBank
+ ld hl, sBoxCount
+ ld a, [hl]
+ call CloseSRAM
+ ret
+; e36a5 (38:76a5)
+
+.boxbanks: ; e36a5
+ dba sBox1
+ dba sBox2
+ dba sBox3
+ dba sBox4
+ dba sBox5
+ dba sBox6
+ dba sBox7
+ dba sBox8
+ dba sBox9
+ dba sBox10
+ dba sBox11
+ dba sBox12
+ dba sBox13
+ dba sBox14
+; e36cf
+
+Functione36cf: ; e36cf (38:76cf)
+ hlcoord 0, 0
+ ld b, 2
+ ld c, 18
+ call TextBox
+ hlcoord 1, 2
+ ld de, String_e36f1
+ call PlaceString
+ ld a, [wCurBox]
+ and $f
+ call GetBoxName
+ hlcoord 11, 2
+ call PlaceString
+ ret
+; e36f1 (38:76f1)
+
+String_e36f1: ; e36f1
+ db "CURRENT@"
+; e36f9
+
+Functione36f9: ; e36f9 (38:76f9)
+ ld hl, MenuDataHeader_0xe377b
+ call LoadMenuDataHeader
+ call InterpretMenu2
+ call ExitMenu
+ ret c
+ ld a, [MenuSelection2]
+ cp $1
+ jr z, .asm_e3734
+ cp $2
+ jr z, .asm_e3745
+ cp $3
+ jr z, .asm_e3717
+ and a
+ ret
+
+.asm_e3717
+ call GetBoxCount
+ and a
+ jr z, .asm_e372f
+ ld e, l
+ ld d, h
+ ld a, [MenuSelection]
+ dec a
+ ld c, a
+ callba Function844bc
+ call Functione35e2
+ and a
+ ret
+
+.asm_e372f
+ call Functione37be
+ and a
+ ret
+
+.asm_e3734
+ ld a, [MenuSelection]
+ dec a
+ ld e, a
+ ld a, [wCurBox]
+ cp e
+ ret z
+ callba Function14a83
+ ret
+
+.asm_e3745
+ ld b, $4
+ ld de, wd002
+ callba NamingScreen
+ call ClearTileMap
+ call LoadStandardFont
+ call LoadFontsBattleExtra
+ ld a, [MenuSelection]
+ dec a
+ call GetBoxName
+ ld e, l
+ ld d, h
+ ld hl, wd002
+ ld c, $8
+ call InitString
+ ld a, [MenuSelection]
+ dec a
+ call GetBoxName
+ ld de, wd002
+ call CopyName2
+ ret
+; e3778 (38:7778)
+
+ hlcoord 11, 7 ; XXX
+
+MenuDataHeader_0xe377b: ; 0xe377b
+ db $40 ; flags
+ db 04, 11 ; start coords
+ db 13, 19 ; end coords
+ dw MenuData2_0xe3783
+ db 1 ; default option
+; 0xe3783
+
+MenuData2_0xe3783: ; 0xe3783
+ db $80 ; flags
+ db 4 ; items
+ db "SWITCH@"
+ db "NAME@"
+ db "PRINT@"
+ db "QUIT@"
+; 0xe379c
+
+Functione379c: ; e379c (38:779c)
+ ld de, String_e37a1
+ jr Functione37e3
+; e37a1 (38:77a1)
+
+String_e37a1: ; e37a1
+ db "Choose a BOX.@"
+; e37af
+
+Functione37af: ; e37af (38:77af)
+ ld de, String_e37b4
+ jr Functione37e3
+; e37b4 (38:77b4)
+
+String_e37b4: ; e37b4
+ db "What's up?@"
+; e37be
+
+Functione37be: ; e37be (38:77be)
+ ld de, String_e37d3
+ call Functione37e3
+ ld de, SFX_WRONG
+ call WaitPlaySFX
+ call WaitSFX
+ ld c, 50
+ call DelayFrames
+ ret
+; e37d3 (38:77d3)
+
+String_e37d3: ; e37d3
+ db "There's no #MON.@"
+; e37e3
+
+Functione37e3: ; e37e3 (38:77e3)
+ push de
+ hlcoord 0, 14
+ lb bc, 2, 18
+ call TextBox
+ pop de
+ hlcoord 1, 16
+ call PlaceString
+ ld a, $1
+ ld [hBGMapMode], a
+ ret
diff --git a/engine/card_flip.asm b/engine/card_flip.asm
new file mode 100755
index 000000000..cf19cdbaf
--- /dev/null
+++ b/engine/card_flip.asm
@@ -0,0 +1,2560 @@
+_CardFlip: ; e00ee (38:40ee)
+ ld hl, Options
+ set 4, [hl]
+ call ClearBGPalettes
+ call ClearTileMap
+ call ClearSprites
+ ld de, MUSIC_NONE
+ call PlayMusic
+ call DelayFrame
+ call DisableLCD
+ call LoadStandardFont
+ call LoadFontsExtra
+ ld hl, LZ_e0d16
+ ld de, VTiles2 tile $00
+ call Decompress
+ ld hl, LZ_e0ea8
+ ld de, VTiles2 tile $3e
+ call Decompress
+ ld hl, LZ_e0cdb
+ ld de, VTiles0 tile $00
+ call Decompress
+ ld hl, GFX_e0cf6
+ ld de, VTiles1 tile $6f
+ ld bc, $10
+ call CopyBytes
+ ld hl, GFX_e0d06
+ ld de, VTiles1 tile $75
+ ld bc, $10
+ call CopyBytes
+ call Functione0521
+ call Functione04c1
+ call Functione0c37
+ call EnableLCD
+ call Function3200
+ ld a, $e4
+ call DmgToCgbBGPals
+ ld de, $e4e4
+ call DmgToCgbObjPals
+ call DelayFrame
+ xor a
+ ld [wJumptableIndex], a
+ ld a, $2
+ ld [wcf64], a
+ ld [wcf65], a
+ ld de, MUSIC_GAME_CORNER
+ call PlayMusic
+.MasterLoop
+ ld a, [wJumptableIndex]
+ bit 7, a
+ jr nz, .leavethegame
+ call .CardFlip
+ jr .MasterLoop
+.leavethegame
+ call WaitSFX
+ ld de, SFX_QUIT_SLOTS
+ call PlaySFX
+ call WaitSFX
+ call ClearBGPalettes
+ ld hl, Options
+ res 4, [hl]
+ ret
+
+.CardFlip: ; e0191 (38:4191)
+ ld a, [wJumptableIndex]
+ ld e, a
+ ld d, 0
+ ld hl, .Jumptable
+rept 2
+ add hl, de
+endr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; e01a0 (38:41a0)
+
+.Jumptable: ; e01a0
+ dw .AskPlayWithThree
+ dw .DeductCoins
+ dw .ChooseACard
+ dw .PlaceYourBet
+ dw .CheckTheCard
+ dw .TabulateTheResult
+ dw .PlayAgain
+ dw .Quit
+; e01b0
+
+.Increment: ; e01b0
+ ld hl, wJumptableIndex
+ inc [hl]
+ ret
+; e01b5
+
+.AskPlayWithThree: ; e01b5
+ ld hl, .PlayWithThreeCoinsText
+ call Functione0489
+ call YesNoBox
+ jr c, .SaidNo
+ call Functione0366
+ call .Increment
+ ret
+
+.SaidNo
+ ld a, $7
+ ld [wJumptableIndex], a
+ ret
+; e01cd
+
+.PlayWithThreeCoinsText: ; 0xe01cd
+ ; Play with three coins?
+ text_jump UnknownText_0x1c5793
+ db "@"
+; 0xe01d2
+
+.DeductCoins: ; e01d2
+ ld a, [Coins]
+ ld h, a
+ ld a, [Coins + 1]
+ ld l, a
+ ld a, h
+ and a
+ jr nz, .deduct ; You have at least 256 coins.
+ ld a, l
+ cp 3
+ jr nc, .deduct ; You have at least 3 coins.
+ ld hl, .NotEnoughCoinsText
+ call Functione0489
+ ld a, $7
+ ld [wJumptableIndex], a
+ ret
+
+.deduct
+ ld de, -3
+ add hl, de
+ ld a, h
+ ld [Coins], a
+ ld a, l
+ ld [Coins + 1], a
+ ld de, SFX_TRANSACTION
+ call PlaySFX
+ xor a
+ ld [hBGMapMode], a
+ call Functione049c
+ ld a, $1
+ ld [hBGMapMode], a
+ call WaitSFX
+ call .Increment
+ ret
+; e0212
+
+.NotEnoughCoinsText: ; 0xe0212
+ ; Not enough coins…
+ text_jump UnknownText_0x1c57ab
+ db "@"
+; 0xe0217
+
+.ChooseACard: ; e0217
+ xor a
+ ld [hBGMapMode], a
+ hlcoord 0, 0
+ lb bc, 12, 9
+ call Functione04e5
+ hlcoord 9, 0
+ ld bc, SCREEN_WIDTH
+ ld a, [wc6e8]
+ call AddNTimes
+ ld [hl], $f5
+ ld a, $1
+ ld [hBGMapMode], a
+ ld c, 20
+ call DelayFrames
+ hlcoord 2, 0
+ call Functione03c1
+ ld a, $1
+ ld [hBGMapMode], a
+ ld c, 20
+ call DelayFrames
+ hlcoord 2, 6
+ call Functione03c1
+ call WaitBGMap
+ ld hl, .ChooseACardText
+ call Functione0489
+ xor a
+ ld [wcf66], a
+.loop
+ call JoyTextDelay
+ ld a, [hJoyLast]
+ and A_BUTTON
+ jr nz, .next
+ ld de, SFX_KINESIS
+ call PlaySFX
+ call Functione0849
+ ld c, 4
+ call DelayFrames
+ ld hl, wcf66
+ ld a, [hl]
+ xor $1
+ ld [hl], a
+ jr .loop
+
+.next
+ ld de, SFX_SLOT_MACHINE_START
+ call PlaySFX
+ ld a, $3
+.loop2
+ push af
+ call Functione0849
+ ld c, 4
+ call DelayFrames
+ call ClearSprites
+ ld c, 4
+ call DelayFrames
+ pop af
+ dec a
+ jr nz, .loop2
+ ld hl, wcf66
+ ld a, [hl]
+ push af
+ xor $1
+ ld [hl], a
+ call Functione03ac
+ lb bc, 6, 5
+ call Functione04e5
+ pop af
+ ld [wcf66], a
+ call .Increment
+ ret
+; e02b2
+
+.ChooseACardText: ; 0xe02b2
+ ; Choose a card.
+ text_jump UnknownText_0x1c57be
+ db "@"
+; 0xe02b7
+
+.PlaceYourBet: ; e02b7
+ ld hl, .PlaceYourBetText
+ call Functione0489
+.betloop
+ call JoyTextDelay
+ ld a, [hJoyLast]
+ and A_BUTTON
+ jr nz, .betdone
+ call Functione089c
+ call Functione0960
+ call DelayFrame
+ jr .betloop
+
+.betdone
+ call .Increment
+ ret
+; e02d5
+
+.PlaceYourBetText: ; 0xe02d5
+ ; Place your bet.
+ text_jump UnknownText_0x1c57ce
+ db "@"
+; 0xe02da
+
+.CheckTheCard: ; e02da
+ xor a
+ ld [hVBlankCounter], a
+ call Functione0960
+ call WaitSFX
+ ld de, SFX_CHOOSE_A_CARD
+ call PlaySFX
+ call WaitSFX
+ ld a, [wc6e8]
+ ld e, a
+ ld d, 0
+ ld hl, wc6d0
+rept 2
+ add hl, de
+endr
+ ld a, [wcf66]
+ ld e, a
+ add hl, de
+ ld a, [hl]
+ ld [CurEnemyMoveNum], a
+ ld e, a
+ ld hl, wc6ea
+ add hl, de
+ ld [hl], $1
+ call Functione03ac
+ call Functione03ec
+ call Function3200
+ call .Increment
+ ret
+; e0314
+
+.TabulateTheResult: ; e0314
+ call Functione0637
+ call WaitPressAorB_BlinkCursor
+ call .Increment
+ ret
+; e031e
+
+.PlayAgain: ; e031e
+ call ClearSprites
+ ld hl, .PlayAgainText
+ call Functione0489
+ call YesNoBox
+ jr nc, .Continue
+ call .Increment
+ ret
+
+.Continue
+ ld a, [wc6e8]
+ inc a
+ ld [wc6e8], a
+ cp $c
+ jr c, .KeepTheCurrentDeck
+ call Functione04c1
+ ld a, $1
+ ld [hBGMapMode], a
+ call Functione0366
+ ld hl, .CardsShuffledText
+ call PrintText
+ jr .LoopAround
+
+.KeepTheCurrentDeck
+ call Functione0534
+
+.LoopAround
+ ld a, $1
+ ld [wJumptableIndex], a
+ ret
+; e0356
+
+.PlayAgainText: ; 0xe0356
+ ; Want to play again?
+ text_jump UnknownText_0x1c57df
+ db "@"
+; 0xe035b
+
+.CardsShuffledText: ; 0xe035b
+ ; The cards have been shuffled.
+ text_jump UnknownText_0x1c57f4
+ db "@"
+; 0xe0360
+
+.Quit: ; e0360
+ ld hl, wJumptableIndex
+ set 7, [hl]
+ ret
+; e0366
+
+Functione0366: ; e0366
+ ld hl, wc6d0
+ ld bc, $18
+ xor a
+ call ByteFill
+ ld de, wc6d0
+ ld c, $17
+.asm_e0375
+ call Random
+ and $1f
+ cp $18
+ jr nc, .asm_e0375
+ ld l, a
+ ld h, $0
+ add hl, de
+ ld a, [hl]
+ and a
+ jr nz, .asm_e0375
+ ld [hl], c
+ dec c
+ jr nz, .asm_e0375
+ xor a
+ ld [wc6e8], a
+ ld hl, wc6ea
+ ld bc, $18
+ call ByteFill
+ ret
+; e0398
+
+Functione0398: ; e0398
+ ld hl, 0
+ ld bc, 6
+ ld a, [wcf64]
+ call AddNTimes
+ ld b, $0
+ ld a, [wcf65]
+ ld c, a
+ add hl, bc
+ ret
+; e03ac
+
+Functione03ac: ; e03ac
+ ld a, [wcf66]
+ and a
+ jr nz, .asm_e03ba
+ hlcoord 2, 0
+ ld bc, $1018
+ jr .asm_e03c0
+
+.asm_e03ba
+ hlcoord 2, 6
+ ld bc, $4018
+
+.asm_e03c0
+ ret
+; e03c1
+
+Functione03c1: ; e03c1
+ xor a
+ ld [hBGMapMode], a
+ ld de, Unknown_e03ce
+ lb bc, 6, 5
+ call Functione04f7
+ ret
+; e03ce
+
+Unknown_e03ce: ; e03ce
+ db $08, $09, $09, $09, $0a
+ db $0b, $28, $2b, $28, $0c
+ db $0b, $2c, $2d, $2e, $0c
+ db $0b, $2f, $30, $31, $0c
+ db $0b, $32, $33, $34, $0c
+ db $0d, $0e, $0e, $0e, $0f
+; e03ec
+
+Functione03ec: ; e03ec
+ xor a
+ ld [hBGMapMode], a
+ push hl
+ push hl
+ ld de, Unknown_e043b
+ lb bc, 6, 5
+ call Functione04f7
+ ld a, [CurEnemyMoveNum]
+ ld e, a
+ ld d, 0
+ ld hl, Unknown_e0459
+rept 2
+ add hl, de
+endr
+ ld a, [hli]
+ ld e, a
+ ld d, [hl]
+ pop hl
+ ld bc, $17
+ add hl, bc
+ ld [hl], e
+ ld bc, SCREEN_HEIGHT
+ add hl, bc
+ ld a, d
+ ld de, SCREEN_WIDTH
+ ld b, $3
+.asm_e0418
+ push hl
+ ld c, $3
+.asm_e041b
+ ld [hli], a
+ inc a
+ dec c
+ jr nz, .asm_e041b
+ pop hl
+ add hl, de
+ dec b
+ jr nz, .asm_e0418
+ pop hl
+ ld a, [hCGB]
+ and a
+ ret z
+ ld de, AttrMap - TileMap
+ add hl, de
+ ld a, [CurEnemyMoveNum]
+ and 3
+ inc a
+ lb bc, 6, 5
+ call Functione04e7
+ ret
+; e043b
+
+Unknown_e043b: ; e043b
+ db $18, $19, $19, $19, $1a
+ db $1b, $35, $7f, $7f, $1c
+ db $0b, $28, $28, $28, $0c
+ db $0b, $28, $28, $28, $0c
+ db $0b, $28, $28, $28, $0c
+ db $1d, $1e, $1e, $1e, $1f
+; e0459
+
+Unknown_e0459: ; e0459
+ db $f7,$4e, $f7,$57, $f7,$69, $f7,$60
+ db $f8,$4e, $f8,$57, $f8,$69, $f8,$60
+ db $f9,$4e, $f9,$57, $f9,$69, $f9,$60
+ db $fa,$4e, $fa,$57, $fa,$69, $fa,$60
+ db $fb,$4e, $fb,$57, $fb,$69, $fb,$60
+ db $fc,$4e, $fc,$57, $fc,$69, $fc,$60
+; e0489
+
+Functione0489: ; e0489
+ push hl
+ hlcoord 0, 12
+ ld b, $4
+ ld c, $12
+ call TextBox
+ pop hl
+ call PrintTextBoxText
+ call Functione049c
+ ret
+; e049c
+
+Functione049c: ; e049c
+ hlcoord 9, 15
+ ld b, $1
+ ld c, $9
+ call TextBox
+ hlcoord 10, 16
+ ld de, String_e04bc
+ call PlaceString
+ hlcoord 15, 16
+ ld de, Coins
+ lb bc, PRINTNUM_LEADINGZEROS | 2, 4
+ call PrintNum
+ ret
+; e04bc
+
+String_e04bc:
+ db "COIN@"
+; e04c1
+
+Functione04c1: ; e04c1 (38:44c1)
+ xor a
+ ld [hBGMapMode], a
+ hlcoord 0, 0
+ ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
+ ld a, $29
+ call ByteFill
+ hlcoord 9, 0
+ ld de, Unknown_e110c
+ lb bc, 12, 11
+ call Functione04f7
+ hlcoord 0, 12
+ lb bc, 4, 18
+ call TextBox
+ ret
+; e04e5 (38:44e5)
+
+Functione04e5: ; e04e5
+ ld a, $29
+
+Functione04e7: ; e04e7 (38:44e7)
+ push bc
+ push hl
+.asm_e04e9
+ ld [hli], a
+ dec c
+ jr nz, .asm_e04e9
+ pop hl
+ ld bc, $14
+ add hl, bc
+ pop bc
+ dec b
+ jr nz, Functione04e7
+ ret
+
+Functione04f7: ; e04f7 (38:44f7)
+ push bc
+ push hl
+.asm_e04f9
+ ld a, [de]
+ inc de
+ ld [hli], a
+ dec c
+ jr nz, .asm_e04f9
+ pop hl
+ ld bc, $14
+ add hl, bc
+ pop bc
+ dec b
+ jr nz, Functione04f7
+ ret
+; e0509 (38:4509)
+
+Functione0509: ; e0509
+ ld de, Sprites
+ ld a, [hli]
+.asm_e050d
+ push af
+ ld a, [hli]
+ add b
+ ld [de], a
+ inc de
+ ld a, [hli]
+ add c
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ pop af
+ dec a
+ jr nz, .asm_e050d
+ ret
+; e0521
+
+Functione0521: ; e0521 (38:4521)
+ ld de, VTiles1 tile $76
+ ld hl, $8f62
+ ld bc, $9e
+ call CopyBytes
+ ld hl, $8ffe
+ xor a
+ ld [hli], a
+ ld [hl], a
+ ret
+; e0534 (38:4534)
+
+Functione0534: ; e0534
+ xor a
+ ld [hBGMapMode], a
+ ld a, [CurEnemyMoveNum]
+ ld e, a
+ ld d, 0
+ and 3
+ ld c, a
+ ld b, 0
+ ld a, e
+ and $1c
+ srl a
+ add Jumptable_e0553 % $100
+ ld l, a
+ ld a, 0
+ adc Jumptable_e0553 / $100
+ ld h, a
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; e0553
+
+Jumptable_e0553: ; e0553
+ dw Functione055f
+ dw Functione0583
+ dw Functione05a7
+ dw Functione05cb
+ dw Functione05ef
+ dw Functione0613
+; e055f
+
+Functione055f: ; e055f
+ ld hl, wc6e6 + 8
+ add hl, de
+ ld a, [hl]
+ and a
+ jr nz, .asm_e0575
+ hlcoord 13, 3
+rept 2
+ add hl, bc
+endr
+ ld [hl], $36
+ ld bc, SCREEN_WIDTH
+ add hl, bc
+ ld [hl], $37
+ ret
+
+.asm_e0575
+ hlcoord 13, 3
+rept 2
+ add hl, bc
+endr
+ ld [hl], $36
+ ld bc, SCREEN_WIDTH
+ add hl, bc
+ ld [hl], $3d
+ ret
+; e0583
+
+Functione0583: ; e0583
+ ld hl, wc6e6
+ add hl, de
+ ld a, [hl]
+ and a
+ jr nz, .asm_e0599
+ hlcoord 13, 4
+rept 2
+ add hl, bc
+endr
+ ld [hl], $3b
+ ld bc, SCREEN_WIDTH
+ add hl, bc
+ ld [hl], $3a
+ ret
+
+.asm_e0599
+ hlcoord 13, 4
+rept 2
+ add hl, bc
+endr
+ ld [hl], $3d
+ ld bc, SCREEN_WIDTH
+ add hl, bc
+ ld [hl], $3a
+ ret
+; e05a7
+
+Functione05a7: ; e05a7
+ ld hl, wc6e6 + 8
+ add hl, de
+ ld a, [hl]
+ and a
+ jr nz, .asm_e05bd
+ hlcoord 13, 6
+rept 2
+ add hl, bc
+endr
+ ld [hl], $36
+ ld bc, SCREEN_WIDTH
+ add hl, bc
+ ld [hl], $38
+ ret
+
+.asm_e05bd
+ hlcoord 13, 6
+rept 2
+ add hl, bc
+endr
+ ld [hl], $36
+ ld bc, SCREEN_WIDTH
+ add hl, bc
+ ld [hl], $3d
+ ret
+; e05cb
+
+Functione05cb: ; e05cb
+ ld hl, wc6e6
+ add hl, de
+ ld a, [hl]
+ and a
+ jr nz, .asm_e05e1
+ hlcoord 13, 7
+rept 2
+ add hl, bc
+endr
+ ld [hl], $3c
+ ld bc, SCREEN_WIDTH
+ add hl, bc
+ ld [hl], $3a
+ ret
+
+.asm_e05e1
+ hlcoord 13, 7
+rept 2
+ add hl, bc
+endr
+ ld [hl], $3d
+ ld bc, SCREEN_WIDTH
+ add hl, bc
+ ld [hl], $3a
+ ret
+; e05ef
+
+Functione05ef: ; e05ef
+ ld hl, wc6e6 + 8
+ add hl, de
+ ld a, [hl]
+ and a
+ jr nz, .asm_e0605
+ hlcoord 13, 9
+rept 2
+ add hl, bc
+endr
+ ld [hl], $36
+ ld bc, SCREEN_WIDTH
+ add hl, bc
+ ld [hl], $39
+ ret
+
+.asm_e0605
+ hlcoord 13, 9
+rept 2
+ add hl, bc
+endr
+ ld [hl], $36
+ ld bc, SCREEN_WIDTH
+ add hl, bc
+ ld [hl], $3d
+ ret
+; e0613
+
+Functione0613: ; e0613
+ ld hl, wc6e6
+ add hl, de
+ ld a, [hl]
+ and a
+ jr nz, .asm_e0629
+ hlcoord 13, 10
+rept 2
+ add hl, bc
+endr
+ ld [hl], $3c
+ ld bc, SCREEN_WIDTH
+ add hl, bc
+ ld [hl], $3a
+ ret
+
+.asm_e0629
+ hlcoord 13, 10
+rept 2
+ add hl, bc
+endr
+ ld [hl], $3d
+ ld bc, SCREEN_WIDTH
+ add hl, bc
+ ld [hl], $3a
+ ret
+; e0637
+
+Functione0637: ; e0637
+ call Functione0398
+ add hl, hl
+ ld de, Jumptable_e0643
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; e0643
+
+Jumptable_e0643: ; e0643
+ dw Functione06a3
+ dw Functione06a3
+ dw Functione06a6
+ dw Functione06a6
+ dw Functione06b0
+ dw Functione06b0
+ dw Functione06a3
+ dw Functione06a3
+ dw Functione06ec
+ dw Functione06f6
+ dw Functione0702
+ dw Functione070e
+ dw Functione06c2
+ dw Functione0722
+ dw Functione0770
+ dw Functione0774
+ dw Functione0778
+ dw Functione077c
+ dw Functione06c2
+ dw Functione072c
+ dw Functione0780
+ dw Functione0784
+ dw Functione0788
+ dw Functione078c
+ dw Functione06cc
+ dw Functione0738
+ dw Functione0790
+ dw Functione0794
+ dw Functione0798
+ dw Functione079c
+ dw Functione06cc
+ dw Functione0744
+ dw Functione07a0
+ dw Functione07a4
+ dw Functione07a8
+ dw Functione07ac
+ dw Functione06d8
+ dw Functione0750
+ dw Functione07b0
+ dw Functione07b4
+ dw Functione07b8
+ dw Functione07bc
+ dw Functione06d8
+ dw Functione075c
+ dw Functione07c0
+ dw Functione07c4
+ dw Functione07c8
+ dw Functione07cc
+; e06a3
+
+Functione06a3: ; e06a3
+ jp Functione07db
+; e06a6
+
+Functione06a6: ; e06a6
+ ld a, [CurEnemyMoveNum]
+ and $2
+ jp nz, Functione07db
+ jr Functione06ba
+
+Functione06b0: ; e06b0
+ ld a, [CurEnemyMoveNum]
+ and $2
+ jr nz, Functione06ba
+ jp Functione07db
+
+Functione06ba: ; e06ba
+ ld c, $6
+ ld de, SFX_2ND_PLACE
+ jp Functione07eb
+; e06c2
+
+Functione06c2: ; e06c2
+ ld a, [CurEnemyMoveNum]
+ and $18
+ jr z, Functione06e4
+ jp Functione07db
+
+Functione06cc: ; e06cc
+ ld a, [CurEnemyMoveNum]
+ and $18
+ cp $8
+ jr z, Functione06e4
+ jp Functione07db
+
+Functione06d8: ; e06d8
+ ld a, [CurEnemyMoveNum]
+ and $18
+ cp $10
+ jr z, Functione06e4
+ jp Functione07db
+
+Functione06e4: ; e06e4
+ ld c, $9
+ ld de, SFX_2ND_PLACE
+ jp Functione07eb
+; e06ec
+
+Functione06ec: ; e06ec
+ ld a, [CurEnemyMoveNum]
+ and $3
+ jr z, Functione071a
+ jp Functione07db
+
+Functione06f6: ; e06f6
+ ld a, [CurEnemyMoveNum]
+ and $3
+ cp $1
+ jr z, Functione071a
+ jp Functione07db
+
+Functione0702: ; e0702
+ ld a, [CurEnemyMoveNum]
+ and $3
+ cp $2
+ jr z, Functione071a
+ jp Functione07db
+
+Functione070e: ; e070e
+ ld a, [CurEnemyMoveNum]
+ and $3
+ cp $3
+ jr z, Functione071a
+ jp Functione07db
+
+Functione071a: ; e071a
+ ld c, $c
+ ld de, SFX_2ND_PLACE
+ jp Functione07eb
+; e0722
+
+Functione0722: ; e0722
+ ld a, [CurEnemyMoveNum]
+ and $1c
+ jr z, Functione0768
+ jp Functione07db
+
+Functione072c: ; e072c
+ ld a, [CurEnemyMoveNum]
+ and $1c
+ cp $4
+ jr z, Functione0768
+ jp Functione07db
+
+Functione0738: ; e0738
+ ld a, [CurEnemyMoveNum]
+ and $1c
+ cp $8
+ jr z, Functione0768
+ jp Functione07db
+
+Functione0744: ; e0744
+ ld a, [CurEnemyMoveNum]
+ and $1c
+ cp $c
+ jr z, Functione0768
+ jp Functione07db
+
+Functione0750: ; e0750
+ ld a, [CurEnemyMoveNum]
+ and $1c
+ cp $10
+ jr z, Functione0768
+ jp Functione07db
+
+Functione075c: ; e075c
+ ld a, [CurEnemyMoveNum]
+ and $1c
+ cp $14
+ jr z, Functione0768
+ jp Functione07db
+
+Functione0768: ; e0768
+ ld c, $12
+ ld de, SFX_2ND_PLACE
+ jp Functione07eb
+; e0770
+
+
+Functione0770: ; e0770
+ ld e, $0
+ jr Functione07ce
+
+Functione0774: ; e0774
+ ld e, $1
+ jr Functione07ce
+
+Functione0778: ; e0778
+ ld e, $2
+ jr Functione07ce
+
+Functione077c: ; e077c
+ ld e, $3
+ jr Functione07ce
+
+Functione0780: ; e0780
+ ld e, $4
+ jr Functione07ce
+
+Functione0784: ; e0784
+ ld e, $5
+ jr Functione07ce
+
+Functione0788: ; e0788
+ ld e, $6
+ jr Functione07ce
+
+Functione078c: ; e078c
+ ld e, $7
+ jr Functione07ce
+
+Functione0790: ; e0790
+ ld e, $8
+ jr Functione07ce
+
+Functione0794: ; e0794
+ ld e, $9
+ jr Functione07ce
+
+Functione0798: ; e0798
+ ld e, $a
+ jr Functione07ce
+
+Functione079c: ; e079c
+ ld e, $b
+ jr Functione07ce
+
+Functione07a0: ; e07a0
+ ld e, $c
+ jr Functione07ce
+
+Functione07a4: ; e07a4
+ ld e, $d
+ jr Functione07ce
+
+Functione07a8: ; e07a8
+ ld e, $e
+ jr Functione07ce
+
+Functione07ac: ; e07ac
+ ld e, $f
+ jr Functione07ce
+
+Functione07b0: ; e07b0
+ ld e, $10
+ jr Functione07ce
+
+Functione07b4: ; e07b4
+ ld e, $11
+ jr Functione07ce
+
+Functione07b8: ; e07b8
+ ld e, $12
+ jr Functione07ce
+
+Functione07bc: ; e07bc
+ ld e, $13
+ jr Functione07ce
+
+Functione07c0: ; e07c0
+ ld e, $14
+ jr Functione07ce
+
+Functione07c4: ; e07c4
+ ld e, $15
+ jr Functione07ce
+
+Functione07c8: ; e07c8
+ ld e, $16
+ jr Functione07ce
+
+Functione07cc: ; e07cc
+ ld e, $17
+
+Functione07ce: ; e07ce
+ ld a, [CurEnemyMoveNum]
+ cp e
+ jr nz, Functione07db
+ ld c, $48
+ ld de, SFX_2ND_PLACE
+ jr Functione07eb
+
+Functione07db: ; e07db
+ ld de, SFX_WRONG
+ call PlaySFX
+ ld hl, UnknownText_0xe0816
+ call Functione0489
+ call WaitSFX
+ ret
+
+Functione07eb: ; e07eb
+ push bc
+ push de
+ ld hl, UnknownText_0xe0811
+ call Functione0489
+ pop de
+ call PlaySFX
+ call WaitSFX
+ pop bc
+.asm_e07fb
+ push bc
+ call Functione0833
+ jr c, .asm_e0804
+ call Functione081b
+
+.asm_e0804
+ call Functione049c
+ ld c, 2
+ call DelayFrames
+ pop bc
+ dec c
+ jr nz, .asm_e07fb
+ ret
+; e0811
+
+UnknownText_0xe0811: ; 0xe0811
+ ; Yeah!
+ text_jump UnknownText_0x1c5813
+ db "@"
+; 0xe0816
+
+UnknownText_0xe0816: ; 0xe0816
+ ; Darn…
+ text_jump UnknownText_0x1c581a
+ db "@"
+; 0xe081b
+
+Functione081b: ; e081b
+ ld a, [Coins]
+ ld h, a
+ ld a, [Coins + 1]
+ ld l, a
+ inc hl
+ ld a, h
+ ld [Coins], a
+ ld a, l
+ ld [Coins + 1], a
+ ld de, SFX_PAY_DAY
+ call PlaySFX
+ ret
+; e0833
+
+Functione0833: ; e0833
+ ld a, [Coins]
+ cp 9999 / $100
+ jr c, .asm_e0847
+ jr z, .asm_e083e
+ jr .asm_e0845
+
+.asm_e083e
+ ld a, [Coins + 1]
+ cp 9999 % $100
+ jr c, .asm_e0847
+
+.asm_e0845
+ scf
+ ret
+
+.asm_e0847
+ and a
+ ret
+; e0849
+
+Functione0849: ; e0849
+ call Functione03ac
+ ld hl, Unknown_e0853
+ call Functione0509
+ ret
+; e0853
+
+Unknown_e0853: ; e0853
+ db 18
+ db $00, $00, $04, $00
+ db $00, $08, $06, $00
+ db $00, $10, $06, $00
+ db $00, $18, $06, $00
+ db $00, $20, $04, $20
+ db $08, $00, $05, $00
+ db $08, $20, $05, $20
+ db $10, $00, $05, $00
+ db $10, $20, $05, $20
+ db $18, $00, $05, $00
+ db $18, $20, $05, $20
+ db $20, $00, $05, $00
+ db $20, $20, $05, $20
+ db $28, $00, $04, $40
+ db $28, $08, $06, $40
+ db $28, $10, $06, $40
+ db $28, $18, $06, $40
+ db $28, $20, $04, $60
+; e089c
+
+Functione089c: ; e089c
+ ld hl, hJoyLast
+ ld a, [hl]
+ and D_LEFT
+ jp nz, Functione08b8
+ ld a, [hl]
+ and D_RIGHT
+ jp nz, Functione08ef
+ ld a, [hl]
+ and D_UP
+ jp nz, Functione090a
+ ld a, [hl]
+ and D_DOWN
+ jp nz, Functione093d
+ ret
+; e08b8
+
+Functione08b8: ; e08b8
+ ld hl, wcf65
+ ld a, [wcf64]
+ and a
+ jr z, .asm_e08d5
+ cp $1
+ jr z, .asm_e08cc
+ ld a, [hl]
+ and a
+ ret z
+ dec [hl]
+ jp Functione0959
+
+.asm_e08cc
+ ld a, [hl]
+ cp $3
+ jr c, .asm_e08e2
+ dec [hl]
+ jp Functione0959
+
+.asm_e08d5
+ ld a, [hl]
+ and $e
+ ld [hl], a
+ cp $3
+ jr c, .asm_e08e2
+rept 2
+ dec [hl]
+endr
+ jp Functione0959
+
+.asm_e08e2
+ ld a, $2
+ ld [wcf64], a
+ ld a, $1
+ ld [wcf65], a
+ jp Functione0959
+; e08ef
+
+Functione08ef: ; e08ef
+ ld hl, wcf65
+ ld a, [wcf64]
+ and a
+ jr z, .asm_e08ff
+ ld a, [hl]
+ cp $5
+ ret nc
+ inc [hl]
+ jr Functione0959
+
+.asm_e08ff
+ ld a, [hl]
+ and $e
+ ld [hl], a
+ cp $4
+ ret nc
+rept 2
+ inc [hl]
+endr
+ jr Functione0959
+
+Functione090a: ; e090a
+ ld hl, wcf64
+ ld a, [wcf65]
+ and a
+ jr z, .asm_e0925
+ cp $1
+ jr z, .asm_e091d
+ ld a, [hl]
+ and a
+ ret z
+ dec [hl]
+ jr Functione0959
+
+.asm_e091d
+ ld a, [hl]
+ cp $3
+ jr c, .asm_e0931
+ dec [hl]
+ jr Functione0959
+
+.asm_e0925
+ ld a, [hl]
+ and $e
+ ld [hl], a
+ cp $3
+ jr c, .asm_e0931
+rept 2
+ dec [hl]
+endr
+ jr Functione0959
+
+.asm_e0931
+ ld a, $1
+ ld [wcf64], a
+ ld a, $2
+ ld [wcf65], a
+ jr Functione0959
+
+Functione093d: ; e093d
+ ld hl, wcf64
+ ld a, [wcf65]
+ and a
+ jr z, .asm_e0950
+ ld hl, wcf64
+ ld a, [hl]
+ cp $7
+ ret nc
+ inc [hl]
+ jr Functione0959
+
+.asm_e0950
+ ld a, [hl]
+ and $e
+ ld [hl], a
+ cp $6
+ ret nc
+rept 2
+ inc [hl]
+endr
+
+Functione0959: ; e0959
+ ld de, SFX_POKEBALLS_PLACED_ON_TABLE
+ call PlaySFX
+ ret
+; e0960
+
+Functione0960: ; e0960
+ call ClearSprites
+ ld a, [hCGB]
+ and a
+ jr nz, .asm_e096d
+ ld a, [hVBlankCounter]
+ and $4
+ ret nz
+
+.asm_e096d
+ call Functione0398
+rept 2
+ add hl, hl
+endr
+ ld de, Unknown_e0981
+ add hl, de
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ call Functione0509
+ ret
+; e0981
+
+Unknown_e0981: ; e0981
+ dbbw $58, $10, Unknown_e0c26
+ dbbw $60, $10, Unknown_e0c26
+ dbbw $68, $10, Unknown_e0b8d
+ dbbw $68, $10, Unknown_e0b8d
+ dbbw $88, $10, Unknown_e0b8d
+ dbbw $88, $10, Unknown_e0b8d
+
+ dbbw $58, $18, Unknown_e0c26
+ dbbw $60, $18, Unknown_e0c26
+ dbbw $68, $18, Unknown_e0a5a
+ dbbw $78, $18, Unknown_e0a5a
+ dbbw $88, $18, Unknown_e0a5a
+ dbbw $98, $18, Unknown_e0a5a
+
+ dbbw $58, $28, Unknown_e0b14
+ dbbw $60, $28, Unknown_e0ac3
+ dbbw $68, $28, Unknown_e0a41
+ dbbw $78, $28, Unknown_e0a41
+ dbbw $88, $28, Unknown_e0a41
+ dbbw $98, $28, Unknown_e0a41
+ dbbw $58, $28, Unknown_e0b14
+
+ dbbw $60, $34, Unknown_e0ac3
+ dbbw $68, $34, Unknown_e0a41
+ dbbw $78, $34, Unknown_e0a41
+ dbbw $88, $34, Unknown_e0a41
+ dbbw $98, $34, Unknown_e0a41
+
+ dbbw $58, $40, Unknown_e0b14
+ dbbw $60, $40, Unknown_e0ac3
+ dbbw $68, $40, Unknown_e0a41
+ dbbw $78, $40, Unknown_e0a41
+ dbbw $88, $40, Unknown_e0a41
+ dbbw $98, $40, Unknown_e0a41
+ dbbw $58, $40, Unknown_e0b14
+
+ dbbw $60, $4c, Unknown_e0ac3
+ dbbw $68, $4c, Unknown_e0a41
+ dbbw $78, $4c, Unknown_e0a41
+ dbbw $88, $4c, Unknown_e0a41
+ dbbw $98, $4c, Unknown_e0a41
+
+ dbbw $58, $58, Unknown_e0b14
+ dbbw $60, $58, Unknown_e0ac3
+ dbbw $68, $58, Unknown_e0a41
+ dbbw $78, $58, Unknown_e0a41
+ dbbw $88, $58, Unknown_e0a41
+ dbbw $98, $58, Unknown_e0a41
+ dbbw $58, $58, Unknown_e0b14
+
+ dbbw $60, $64, Unknown_e0ac3
+ dbbw $68, $64, Unknown_e0a41
+ dbbw $78, $64, Unknown_e0a41
+ dbbw $88, $64, Unknown_e0a41
+ dbbw $98, $64, Unknown_e0a41
+; e0a41
+
+Unknown_e0a41: ; e0a41
+ db 6
+ db $00, $ff, $00, $80
+ db $00, $00, $02, $80
+ db $00, $08, $03, $80
+ db $05, $ff, $00, $c0
+ db $05, $00, $02, $c0
+ db $05, $08, $03, $80
+
+Unknown_e0a5a: ; e0a5a
+ db 26
+ db $00, $ff, $00, $80
+ db $00, $00, $02, $80
+ db $00, $08, $00, $a0
+ db $08, $ff, $01, $80
+ db $08, $08, $01, $a0
+ db $10, $ff, $01, $80
+ db $10, $08, $03, $80
+ db $18, $ff, $01, $80
+ db $18, $08, $03, $80
+ db $20, $ff, $01, $80
+ db $20, $08, $03, $80
+ db $28, $ff, $01, $80
+ db $28, $08, $03, $80
+ db $30, $ff, $01, $80
+ db $30, $08, $03, $80
+ db $38, $ff, $01, $80
+ db $38, $08, $03, $80
+ db $40, $ff, $01, $80
+ db $40, $08, $03, $80
+ db $48, $ff, $01, $80
+ db $48, $08, $03, $80
+ db $50, $ff, $01, $80
+ db $50, $08, $03, $80
+ db $51, $ff, $00, $c0
+ db $51, $00, $02, $c0
+ db $51, $08, $03, $80
+
+Unknown_e0ac3: ; e0ac3
+ db 20
+ db $00, $ff, $00, $80
+ db $00, $00, $02, $80
+ db $00, $08, $02, $80
+ db $00, $10, $03, $80
+ db $00, $18, $02, $80
+ db $00, $20, $03, $80
+ db $00, $28, $02, $80
+ db $00, $30, $03, $80
+ db $00, $38, $02, $80
+ db $00, $40, $03, $80
+ db $05, $ff, $00, $c0
+ db $05, $00, $02, $c0
+ db $05, $08, $02, $c0
+ db $05, $10, $03, $80
+ db $05, $18, $02, $c0
+ db $05, $20, $03, $80
+ db $05, $28, $02, $c0
+ db $05, $30, $03, $80
+ db $05, $38, $02, $c0
+ db $05, $40, $03, $80
+
+Unknown_e0b14: ; e0b14
+ db 30
+ db $00, $00, $00, $80
+ db $00, $08, $02, $80
+ db $00, $10, $02, $80
+ db $00, $18, $03, $80
+ db $00, $20, $02, $80
+ db $00, $28, $03, $80
+ db $00, $30, $02, $80
+ db $00, $38, $03, $80
+ db $00, $40, $02, $80
+ db $00, $48, $03, $80
+ db $08, $00, $01, $80
+ db $08, $18, $03, $80
+ db $08, $28, $03, $80
+ db $08, $38, $03, $80
+ db $08, $48, $03, $80
+ db $10, $00, $01, $80
+ db $10, $18, $03, $80
+ db $10, $28, $03, $80
+ db $10, $38, $03, $80
+ db $10, $48, $03, $80
+ db $11, $00, $00, $c0
+ db $11, $08, $02, $c0
+ db $11, $10, $02, $c0
+ db $11, $18, $03, $80
+ db $11, $20, $03, $80
+ db $11, $28, $03, $80
+ db $11, $30, $03, $80
+ db $11, $38, $03, $80
+ db $11, $40, $03, $80
+ db $11, $48, $03, $80
+
+Unknown_e0b8d: ; e0b8d
+ db 38
+ db $00, $ff, $00, $80
+ db $00, $18, $00, $a0
+ db $08, $ff, $01, $80
+ db $08, $18, $01, $a0
+ db $10, $ff, $01, $80
+ db $10, $18, $01, $a0
+ db $18, $ff, $01, $80
+ db $18, $08, $03, $80
+ db $18, $18, $03, $80
+ db $20, $ff, $01, $80
+ db $20, $08, $03, $80
+ db $20, $18, $03, $80
+ db $28, $ff, $01, $80
+ db $28, $08, $03, $80
+ db $28, $18, $03, $80
+ db $30, $ff, $01, $80
+ db $30, $08, $03, $80
+ db $30, $18, $03, $80
+ db $38, $ff, $01, $80
+ db $38, $08, $03, $80
+ db $38, $18, $03, $80
+ db $40, $ff, $01, $80
+ db $40, $08, $03, $80
+ db $40, $18, $03, $80
+ db $48, $ff, $01, $80
+ db $48, $08, $03, $80
+ db $48, $18, $03, $80
+ db $50, $ff, $01, $80
+ db $50, $08, $03, $80
+ db $50, $18, $03, $80
+ db $58, $ff, $01, $80
+ db $58, $08, $03, $80
+ db $58, $18, $03, $80
+ db $59, $ff, $00, $c0
+ db $59, $00, $02, $c0
+ db $59, $08, $03, $c0
+ db $59, $10, $02, $c0
+ db $59, $18, $03, $e0
+
+Unknown_e0c26: ; e0c26
+ db 4
+ db $00, $00, $00, $80
+ db $00, $08, $00, $a0
+ db $08, $00, $00, $c0
+ db $08, $08, $00, $e0
+; e0c37
+
+Functione0c37: ; e0c37 (38:4c37)
+ ld a, [hCGB]
+ and a
+ ret z
+ hlcoord 0, 0, AttrMap
+ ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
+ xor a
+ call ByteFill
+ hlcoord 12, 1, AttrMap
+ lb bc, 2, 2
+ ld a, $1
+ call Functione04e7
+ hlcoord 14, 1, AttrMap
+ lb bc, 2, 2
+ ld a, $2
+ call Functione04e7
+ hlcoord 16, 1, AttrMap
+ lb bc, 2, 2
+ ld a, $3
+ call Functione04e7
+ hlcoord 18, 1, AttrMap
+ lb bc, 2, 2
+ ld a, $4
+ call Functione04e7
+ hlcoord 9, 0, AttrMap
+ lb bc, 12, 1
+ ld a, $1
+ call Functione04e7
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld hl, Palette_e0c93
+ ld de, Unkn1Pals
+ ld bc, $48
+ call CopyBytes
+ pop af
+ ld [rSVBK], a
+ ret
+; e0c93 (38:4c93)
+
+Palette_e0c93: ; e0c93
+ RGB 31, 31, 31
+ RGB 17, 07, 31
+ RGB 06, 19, 08
+ RGB 00, 00, 00
+
+ RGB 31, 31, 31
+ RGB 29, 25, 00
+ RGB 06, 19, 08
+ RGB 00, 00, 00
+
+ RGB 31, 31, 31
+ RGB 31, 13, 30
+ RGB 06, 19, 08
+ RGB 00, 00, 00
+
+ RGB 31, 31, 31
+ RGB 08, 17, 30
+ RGB 06, 19, 08
+ RGB 00, 00, 00
+
+ RGB 31, 31, 31
+ RGB 08, 31, 08
+ RGB 06, 19, 08
+ RGB 00, 00, 00
+
+ RGB 31, 31, 31
+ RGB 17, 07, 31
+ RGB 06, 19, 08
+ RGB 00, 00, 00
+
+ RGB 31, 31, 31
+ RGB 17, 07, 31
+ RGB 06, 19, 08
+ RGB 00, 00, 00
+
+ RGB 31, 31, 31
+ RGB 17, 07, 31
+ RGB 06, 19, 08
+ RGB 00, 00, 00
+
+ RGB 31, 31, 31
+ RGB 31, 31, 31
+ RGB 31, 00, 00
+ RGB 31, 00, 00
+; e0cdb
+
+LZ_e0cdb: ; e0cdb
+INCBIN "gfx/unknown/0e0cdb.2bpp.lz"
+
+GFX_e0cf6: ; e0cf6
+INCBIN "gfx/unknown/0e0cf6.2bpp"
+
+GFX_e0d06: ; e0d06
+INCBIN "gfx/unknown/0e0d06.2bpp"
+
+LZ_e0d16: ; e0d16
+INCBIN "gfx/unknown/0e0d16.2bpp.lz"
+
+LZ_e0ea8: ; e0ea8
+INCBIN "gfx/unknown/0e0ea8.2bpp.lz"
+
+Unknown_e110c: ; e110c
+ db $ef, $15, $27, $2a, $2a, $06, $27, $2a, $2a, $06, $27
+ db $ef, $07, $27, $3e, $3f, $42, $43, $46, $47, $4a, $4b
+ db $ef, $17, $26, $40, $41, $44, $45, $48, $49, $4c, $4d
+ db $ef, $25, $04, $00, $01, $00, $01, $00, $01, $00, $01
+ db $ef, $05, $14, $10, $11, $10, $11, $10, $11, $10, $11
+ db $ef, $16, $24, $20, $21, $20, $21, $20, $21, $20, $21
+ db $ef, $25, $04, $00, $02, $00, $02, $00, $02, $00, $02
+ db $ef, $05, $14, $10, $12, $10, $12, $10, $12, $10, $12
+ db $ef, $16, $24, $20, $22, $20, $22, $20, $22, $20, $22
+ db $ef, $25, $04, $00, $03, $00, $03, $00, $03, $00, $03
+ db $ef, $05, $14, $10, $13, $10, $13, $10, $13, $10, $13
+ db $ef, $16, $24, $20, $23, $20, $23, $20, $23, $20, $23
+; e1190
+
+Functione1190: ; e1190
+ ld a, [hInMenu]
+ push af
+ ld a, $1
+ ld [hInMenu], a
+ call ClearBGPalettes
+ call ClearTileMap
+ call ClearSprites
+ xor a
+ ld [hBGMapMode], a
+ call DisableLCD
+ ld hl, wc608
+ ld bc, $1e0
+ xor a
+ call ByteFill
+ ld hl, GFX_e17c5
+ ld de, VTiles1 tile $60
+ ld bc, $40
+ call CopyBytes
+ ld hl, LZ_e1805
+ ld de, VTiles1 tile $6d
+ call Decompress
+ call Functione17a3
+ hlcoord 0, 0
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ ld a, $ee
+ call ByteFill
+ hlcoord 4, 3
+ lb bc, 12, 12
+ ld a, $ef
+ call Functione13ee
+ call Functione124e
+ call Functione13fe
+ call Functione127d
+ xor a
+ ld [hSCY], a
+ ld [hSCX], a
+ ld [rWY], a
+ ld [wJumptableIndex], a
+ ld [wcf64], a
+ ld [wcf65], a
+ ld [wcf66], a
+ ld a, $93
+ ld [rLCDC], a
+ call WaitBGMap
+ ld b, $18
+ call GetSGBLayout
+ ld a, $e4
+ call DmgToCgbBGPals
+ ld a, $24
+ call Functioncf8
+ xor a
+ ld [wd0ec], a
+ call DelayFrame
+.asm_e1217
+ call JoyTextDelay
+ ld a, [wJumptableIndex]
+ bit 7, a
+ jr nz, .asm_e123d
+ call Functione12ca
+ ld a, [wcf64]
+ and a
+ jr nz, .asm_e1230
+ ld a, [hVBlankCounter]
+ and $10
+ jr z, .asm_e1235
+
+.asm_e1230
+ call Functione14d9
+ jr .asm_e1238
+
+.asm_e1235
+ call ClearSprites
+
+.asm_e1238
+ call DelayFrame
+ jr .asm_e1217
+
+.asm_e123d
+ pop af
+ ld [hInMenu], a
+ call ClearBGPalettes
+ call ClearTileMap
+ call ClearSprites
+ ld a, $e3
+ ld [rLCDC], a
+ ret
+; e124e
+
+Functione124e: ; e124e
+ ld c, $1
+ ld b, $10
+.asm_e1252
+ call Random
+ and $f
+ ld hl, Unknown_e126d
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld e, [hl]
+ ld hl, wc6d0
+ add hl, de
+ ld a, [hl]
+ and a
+ jr nz, .asm_e1252
+ ld [hl], c
+ inc c
+ dec b
+ jr nz, .asm_e1252
+ ret
+; e126d
+
+Unknown_e126d: ; e126d
+ db $00, $01, $02, $03
+ db $04, $05, $06, $0b
+ db $0c, $11, $12, $17
+ db $18, $1d, $1e, $23
+; e127d
+
+Functione127d: ; e127d
+ call Functione128d
+ hlcoord 5, 16
+ ld a, $f6
+ ld c, $a
+.asm_e1287
+ ld [hli], a
+ inc a
+ dec c
+ jr nz, .asm_e1287
+ ret
+; e128d
+
+Functione128d: ; e128d
+ hlcoord 4, 15
+ ld a, $f0
+ ld [hli], a
+ ld bc, $a
+ ld a, $f1
+ call ByteFill
+ hlcoord 15, 15
+ ld a, $f2
+ ld [hli], a
+ hlcoord 4, 16
+ ld a, $f3
+ ld [hli], a
+ ld bc, $a
+ ld a, $ef
+ call ByteFill
+ hlcoord 15, 16
+ ld a, $f3
+ ld [hli], a
+ hlcoord 4, 17
+ ld a, $f4
+ ld [hli], a
+ ld bc, $a
+ ld a, $f1
+ call ByteFill
+ hlcoord 15, 17
+ ld a, $f5
+ ld [hl], a
+ ret
+; e12ca
+
+Functione12ca: ; e12ca
+ ld a, [wJumptableIndex]
+ ld e, a
+ ld d, 0
+ ld hl, Jumptable_e12d9
+rept 2
+ add hl, de
+endr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; e12d9
+
+Jumptable_e12d9: ; e12d9
+ dw Functione12db
+; e12db
+
+Functione12db: ; e12db
+ ld a, [hJoyPressed]
+ and START
+ jp nz, Functione13de
+ ld a, [hJoyPressed]
+ and A_BUTTON
+ jp nz, Functione1376
+ ld hl, hJoyLast
+ ld a, [hl]
+ and D_UP
+ jr nz, .asm_e1301
+ ld a, [hl]
+ and D_DOWN
+ jr nz, .asm_e130d
+ ld a, [hl]
+ and D_LEFT
+ jr nz, .asm_e1325
+ ld a, [hl]
+ and D_RIGHT
+ jr nz, .asm_e1345
+ ret
+
+.asm_e1301
+ ld hl, wcf65
+ ld a, [hl]
+ cp $6
+ ret c
+ sub $6
+ ld [hl], a
+ jr .asm_e1364
+
+.asm_e130d
+ ld hl, wcf65
+ ld a, [hl]
+ cp $19
+ ret z
+ cp $1a
+ ret z
+ cp $1b
+ ret z
+ cp $1c
+ ret z
+ cp $1e
+ ret nc
+ add $6
+ ld [hl], a
+ jr .asm_e1364
+
+.asm_e1325
+ ld hl, wcf65
+ ld a, [hl]
+ and a
+ ret z
+ cp $6
+ ret z
+ cp $c
+ ret z
+ cp $12
+ ret z
+ cp $18
+ ret z
+ cp $1e
+ ret z
+ cp $23
+ jr z, .asm_e1341
+ dec [hl]
+ jr .asm_e1364
+
+.asm_e1341
+ ld [hl], $1e
+ jr .asm_e1364
+
+.asm_e1345
+ ld hl, wcf65
+ ld a, [hl]
+ cp $5
+ ret z
+ cp $b
+ ret z
+ cp $11
+ ret z
+ cp $17
+ ret z
+ cp $1d
+ ret z
+ cp $23
+ ret z
+ cp $1e
+ jr z, .asm_e1362
+ inc [hl]
+ jr .asm_e1364
+
+.asm_e1362
+ ld [hl], $23
+
+.asm_e1364
+ ld a, [wcf64]
+ and a
+ jr nz, .asm_e136f
+ ld de, SFX_POUND
+ jr .asm_e1372
+
+.asm_e136f
+ ld de, SFX_MOVE_PUZZLE_PIECE
+
+.asm_e1372
+ call PlaySFX
+ ret
+; e1376
+
+Functione1376: ; e1376
+ ld a, [wcf64]
+ and a
+ jr nz, .asm_e139f
+ call Functione1475
+ and a
+ jr z, Functione13e4
+ ld de, SFX_MEGA_KICK
+ call PlaySFX
+ ld [hl], $0
+ ld [wcf66], a
+ call Functione14d9
+ call Functione1441
+ call WaitBGMap
+ call WaitSFX
+ ld a, $1
+ ld [wcf64], a
+ ret
+
+.asm_e139f
+ call Functione1475
+ and a
+ jr nz, Functione13e4
+ ld de, SFX_PLACE_PUZZLE_PIECE_DOWN
+ call PlaySFX
+ ld a, [wcf66]
+ ld [hl], a
+ call Functione141f
+ call WaitBGMap
+ xor a
+ ld [wcf66], a
+ call Functione14d9
+ xor a
+ ld [wcf64], a
+ call WaitSFX
+ call Functione14a0
+ ret nc
+ call Functione128d
+ call ClearSprites
+ ld de, SFX_1ST_PLACE
+ call PlaySFX
+ call WaitSFX
+ call SimpleWaitPressAorB
+ ld a, $1
+ ld [wd0ec], a
+
+Functione13de: ; e13de
+ ld hl, wJumptableIndex
+ set 7, [hl]
+ ret
+
+Functione13e4: ; e13e4
+ ld de, SFX_WRONG
+ call PlaySFX
+ call WaitSFX
+ ret
+; e13ee
+
+Functione13ee: ; e13ee
+ ld de, SCREEN_WIDTH
+.asm_e13f1
+ push bc
+ push hl
+.asm_e13f3
+ ld [hli], a
+ dec c
+ jr nz, .asm_e13f3
+ pop hl
+ add hl, de
+ pop bc
+ dec b
+ jr nz, .asm_e13f1
+ ret
+; e13fe
+
+Functione13fe: ; e13fe
+ xor a
+ ld [wcf65], a
+ ld c, $24
+.asm_e1404
+ push bc
+ call Functione1475
+ ld [wcf66], a
+ and a
+ jr z, .asm_e1413
+ call Functione141f
+ jr .asm_e1416
+
+.asm_e1413
+ call Functione1441
+
+.asm_e1416
+ ld hl, wcf65
+ inc [hl]
+ pop bc
+ dec c
+ jr nz, .asm_e1404
+ ret
+; e141f
+
+Functione141f: ; e141f
+ ld a, $2
+ call Functione1463
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push hl
+ call Functione1481
+ pop hl
+ ld de, SCREEN_WIDTH
+ ld b, $3
+.asm_e1431
+ ld c, $3
+ push hl
+.asm_e1434
+ ld [hli], a
+ inc a
+ dec c
+ jr nz, .asm_e1434
+ add $9
+ pop hl
+ add hl, de
+ dec b
+ jr nz, .asm_e1431
+ ret
+; e1441
+
+Functione1441: ; e1441
+ ld a, $2
+ call Functione1463
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push hl
+ ld a, $4
+ call Functione1463
+ ld a, [hl]
+ pop hl
+ ld de, SCREEN_WIDTH
+ ld b, $3
+.asm_e1456
+ ld c, $3
+ push hl
+.asm_e1459
+ ld [hli], a
+ dec c
+ jr nz, .asm_e1459
+ pop hl
+ add hl, de
+ dec b
+ jr nz, .asm_e1456
+ ret
+; e1463
+
+Functione1463: ; e1463
+ ld e, a
+ ld d, 0
+ ld hl, Unknown_e1559
+ add hl, de
+ ld a, [wcf65]
+ ld e, a
+rept 4
+ add hl, de
+endr
+rept 2
+ add hl, de
+endr
+ ret
+; e1475
+
+Functione1475: ; e1475
+ ld hl, wc6d0
+ ld a, [wcf65]
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld a, [hl]
+ ret
+; e1481
+
+Functione1481: ; e1481
+ ld a, [wcf66]
+ ld hl, Unknown_e148f
+ add l
+ ld l, a
+ ld a, $0
+ adc h
+ ld h, a
+ ld a, [hl]
+ ret
+; e148f
+
+Unknown_e148f: ; e148f
+ db $e0
+ db $00, $03, $06, $09
+ db $24, $27, $2a, $2d
+ db $48, $4b, $4e, $51
+ db $6c, $6f, $72, $75
+; e14a0
+
+Functione14a0: ; e14a0
+ ld hl, Unknown_e14b5
+ ld de, wc6d0
+ ld c, $24
+.asm_e14a8
+ ld a, [de]
+ cp [hl]
+ jr nz, .asm_e14b3
+ inc de
+ inc hl
+ dec c
+ jr nz, .asm_e14a8
+ scf
+ ret
+
+.asm_e14b3
+ and a
+ ret
+; e14b5
+
+Unknown_e14b5: ; e14b5
+ db $00, $00, $00, $00, $00, $00
+ db $00, $01, $02, $03, $04, $00
+ db $00, $05, $06, $07, $08, $00
+ db $00, $09, $0a, $0b, $0c, $00
+ db $00, $0d, $0e, $0f, $10, $00
+ db $00, $00, $00, $00, $00, $00
+; e14d9
+
+Functione14d9: ; e14d9
+ call Functione1481
+ ld [wd002], a
+ xor a
+ call Functione1463
+ ld a, [hli]
+ ld b, [hl]
+ ld c, a
+ ld a, [wd002]
+ cp $e0
+ jr z, .asm_e14f2
+ ld hl, Unknown_e150f
+ jr .asm_e14f5
+
+.asm_e14f2
+ ld hl, Unknown_e1534
+
+.asm_e14f5
+ ld de, Sprites
+.asm_e14f8
+ ld a, [hli]
+ cp $ff
+ ret z
+ add b
+ ld [de], a
+ inc de
+ ld a, [hli]
+ add c
+ ld [de], a
+ inc de
+ ld a, [wd002]
+ add [hl]
+ ld [de], a
+ inc hl
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ jr .asm_e14f8
+; e150f
+
+Unknown_e150f: ; e150f
+ db $f4, $f4, $00, $00
+ db $f4, $fc, $01, $00
+ db $f4, $04, $02, $00
+ db $fc, $f4, $0c, $00
+ db $fc, $fc, $0d, $00
+ db $fc, $04, $0e, $00
+ db $04, $f4, $18, $00
+ db $04, $fc, $19, $00
+ db $04, $04, $1a, $00
+ db $ff
+
+Unknown_e1534: ; e1534
+ db $f4, $f4, $00, $00
+ db $f4, $fc, $01, $00
+ db $f4, $04, $00, $20
+ db $fc, $f4, $02, $00
+ db $fc, $fc, $03, $00
+ db $fc, $04, $02, $20
+ db $04, $f4, $00, $40
+ db $04, $fc, $01, $40
+ db $04, $04, $00, $60
+ db $ff
+
+Unknown_e1559: ; e1559
+
+macro_e1559: macro
+ db \1, \2
+ dwcoord \3, \4
+ db \5, \6
+endm
+
+ macro_e1559 $1c, $1c, 1, 0, $ee, $00
+ macro_e1559 $34, $1c, 4, 0, $ee, $00
+ macro_e1559 $4c, $1c, 7, 0, $ee, $00
+ macro_e1559 $64, $1c, 10, 0, $ee, $00
+ macro_e1559 $7c, $1c, 13, 0, $ee, $00
+ macro_e1559 $94, $1c, 16, 0, $ee, $00
+ macro_e1559 $1c, $34, 1, 3, $ee, $00
+ macro_e1559 $34, $34, 4, 3, $ef, $00
+ macro_e1559 $4c, $34, 7, 3, $ef, $00
+ macro_e1559 $64, $34, 10, 3, $ef, $00
+ macro_e1559 $7c, $34, 13, 3, $ef, $00
+ macro_e1559 $94, $34, 16, 3, $ee, $00
+ macro_e1559 $1c, $4c, 1, 6, $ee, $00
+ macro_e1559 $34, $4c, 4, 6, $ef, $00
+ macro_e1559 $4c, $4c, 7, 6, $ef, $00
+ macro_e1559 $64, $4c, 10, 6, $ef, $00
+ macro_e1559 $7c, $4c, 13, 6, $ef, $00
+ macro_e1559 $94, $4c, 16, 6, $ee, $00
+ macro_e1559 $1c, $64, 1, 9, $ee, $00
+ macro_e1559 $34, $64, 4, 9, $ef, $00
+ macro_e1559 $4c, $64, 7, 9, $ef, $00
+ macro_e1559 $64, $64, 10, 9, $ef, $00
+ macro_e1559 $7c, $64, 13, 9, $ef, $00
+ macro_e1559 $94, $64, 16, 9, $ee, $00
+ macro_e1559 $1c, $7c, 1, 12, $ee, $00
+ macro_e1559 $34, $7c, 4, 12, $ef, $00
+ macro_e1559 $4c, $7c, 7, 12, $ef, $00
+ macro_e1559 $64, $7c, 10, 12, $ef, $00
+ macro_e1559 $7c, $7c, 13, 12, $ef, $00
+ macro_e1559 $94, $7c, 16, 12, $ee, $00
+ macro_e1559 $1c, $94, 1, 15, $ee, $00
+ macro_e1559 $34, $94, 4, 15, $ee, $00
+ macro_e1559 $4c, $94, 7, 15, $ee, $00
+ macro_e1559 $64, $94, 10, 15, $ee, $00
+ macro_e1559 $7c, $94, 13, 15, $ee, $00
+ macro_e1559 $94, $94, 16, 15, $ee, $00
+
+Functione1631: ; e1631
+ ld hl, VTiles2
+ ld de, VTiles0
+ ld b, $6
+.asm_e1639
+ push bc
+ push hl
+ push hl
+ call Functione1654
+ pop hl
+ ld bc, 8
+ add hl, bc
+ call Functione1654
+ pop hl
+ ld bc, $60
+ add hl, bc
+ pop bc
+ dec b
+ jr nz, .asm_e1639
+ call Functione16c7
+ ret
+; e1654
+
+Functione1654: ; e1654
+ ld c, $6
+.asm_e1656
+ push bc
+ push hl
+ push hl
+ ld c, $4
+.asm_e165b
+ push bc
+ ld a, [hli]
+ and $f0
+ swap a
+ call Functione16aa
+ ld c, a
+ ld a, [hli]
+ and $f0
+ swap a
+ call Functione16aa
+ ld b, a
+ ld a, c
+ ld [de], a
+ inc de
+ ld a, b
+ ld [de], a
+ inc de
+ ld a, c
+ ld [de], a
+ inc de
+ ld a, b
+ ld [de], a
+ inc de
+ pop bc
+ dec c
+ jr nz, .asm_e165b
+ pop hl
+ ld c, $4
+.asm_e1681
+ push bc
+ ld a, [hli]
+ and $f
+ call Functione16aa
+ ld c, a
+ ld a, [hli]
+ and $f
+ call Functione16aa
+ ld b, a
+ ld a, c
+ ld [de], a
+ inc de
+ ld a, b
+ ld [de], a
+ inc de
+ ld a, c
+ ld [de], a
+ inc de
+ ld a, b
+ ld [de], a
+ inc de
+ pop bc
+ dec c
+ jr nz, .asm_e1681
+ pop hl
+ ld bc, $10
+ add hl, bc
+ pop bc
+ dec c
+ jr nz, .asm_e1656
+ ret
+; e16aa
+
+Functione16aa: ; e16aa
+ push hl
+ ld hl, Unknown_e16b7
+ add l
+ ld l, a
+ ld a, 0
+ adc h
+ ld h, a
+ ld a, [hl]
+ pop hl
+ ret
+; e16b7
+
+Unknown_e16b7: ; e16b7
+ db $00, $03, $0c, $0f
+ db $30, $33, $3c, $3f
+ db $c0, $c3, $cc, $cf
+ db $f0, $f3, $fc, $ff
+; e16c7
+
+Functione16c7: ; e16c7
+ ld hl, Unknown_e1703
+ ld a, $8
+.asm_e16cc
+ push af
+ push hl
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ call Functione16e2
+ pop hl
+rept 4
+ inc hl
+endr
+ pop af
+ dec a
+ jr nz, .asm_e16cc
+ ret
+; e16e2
+
+Functione16e2: ; e16e2
+ lb bc, 4, 4
+.asm_e16e5
+ push bc
+.asm_e16e6
+ push de
+ push hl
+ ld b, $10
+.asm_e16ea
+ ld a, [de]
+ or [hl]
+ ld [hli], a
+ inc de
+ dec b
+ jr nz, .asm_e16ea
+ pop hl
+ ld de, $30
+ add hl, de
+ pop de
+ dec c
+ jr nz, .asm_e16e6
+ ld bc, $180
+ add hl, bc
+ pop bc
+ dec b
+ jr nz, .asm_e16e5
+ ret
+; e1703
+
+Unknown_e1703: ; e1703
+ dw GFX_e1723 + $00, $8000
+ dw GFX_e1723 + $10, $8010
+ dw GFX_e1723 + $20, $8020
+ dw GFX_e1723 + $30, $80c0
+ dw GFX_e1723 + $40, $80e0
+ dw GFX_e1723 + $50, $8180
+ dw GFX_e1723 + $60, $8190
+ dw GFX_e1723 + $70, $81a0
+; e1723
+
+GFX_e1723: ; e1723
+INCBIN "gfx/unknown/0e1723.2bpp"
+
+Functione17a3: ; e17a3
+ ld a, [ScriptVar]
+ and 3
+ ld e, a
+ ld d, 0
+ ld hl, Unknown_e17bd
+rept 2
+ add hl, de
+endr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, VTiles2
+ call Decompress
+ call Functione1631
+ ret
+; e17bd
+
+Unknown_e17bd: ; e17bd
+ dw LZ_e1bab
+ dw LZ_e1c9b
+ dw LZ_e19fb
+ dw LZ_e18ab
+; e17c5
+
+GFX_e17c5: ; e17c5
+INCBIN "gfx/unknown/0e17c5.2bpp"
+
+LZ_e1805: ; e1805
+INCBIN "gfx/unknown/0e1805.2bpp.lz"
+
+LZ_e18ab: ; e18ab
+INCBIN "gfx/unknown/0e18ab.2bpp.lz"
+
+LZ_e19fb: ; e19fb
+INCBIN "gfx/unknown/0e19fb.2bpp.lz"
+
+LZ_e1bab: ; e1bab
+INCBIN "gfx/unknown/0e1bab.2bpp.lz"
+
+LZ_e1c9b: ; e1c9b
+INCBIN "gfx/unknown/0e1c9b.2bpp.lz"
diff --git a/engine/credits.asm b/engine/credits.asm
index f03950d69..3cee62e13 100644
--- a/engine/credits.asm
+++ b/engine/credits.asm
@@ -131,7 +131,7 @@ Function109847:: ; 109847
ld a, $5
ld [rSVBK], a
- call WhiteBGMap
+ call ClearBGPalettes
call ClearTileMap
call ClearSprites
@@ -210,7 +210,7 @@ Function109847:: ; 109847
jr .asm_1098de
.asm_1098ee
- call WhiteBGMap
+ call ClearBGPalettes
xor a
ld [hLCDStatCustom], a
ld [hBGMapAddress], a
diff --git a/engine/diploma.asm b/engine/diploma.asm
index 86a9a6ceb..7699cf930 100644
--- a/engine/diploma.asm
+++ b/engine/diploma.asm
@@ -6,7 +6,7 @@ Function1dd702: ; 1dd702
; 1dd709
Function1dd709: ; 1dd709
- call WhiteBGMap
+ call ClearBGPalettes
call ClearTileMap
call ClearSprites
call DisableLCD
diff --git a/engine/dummy_game.asm b/engine/dummy_game.asm
new file mode 100755
index 000000000..86d505e0e
--- /dev/null
+++ b/engine/dummy_game.asm
@@ -0,0 +1,615 @@
+_DummyGame: ; e1e5b (38:5e5b)
+ call Functione1e67
+ call DelayFrame
+.asm_e1e61
+ call Functione1ebb
+ jr nc, .asm_e1e61
+ ret
+
+Functione1e67: ; e1e67 (38:5e67)
+ call DisableLCD
+ ld b, $8
+ call GetSGBLayout
+ callab Function8cf53
+ ld hl, LZ_e2221
+ ld de, VTiles2 tile $00
+ call Decompress
+ ld hl, Unknown_e00ed
+ ld de, VTiles0 tile $00
+ ld bc, $40
+ ld a, BANK(Unknown_e00ed)
+ call FarCopyBytes
+ ld a, $8
+ ld hl, wc300
+ ld [hli], a
+ ld [hl], $0
+ hlcoord 0, 0
+ ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
+ xor a
+ call ByteFill
+ xor a
+ ld [hSCY], a
+ ld [hSCX], a
+ ld [rWY], a
+ ld [wJumptableIndex], a
+ ld a, $1
+ ld [hBGMapMode], a
+ ld a, $e3
+ ld [rLCDC], a
+ ld a, $e4
+ call DmgToCgbBGPals
+ ld a, $e0
+ call Functioncf8
+ ret
+
+Functione1ebb: ; e1ebb (38:5ebb)
+ ld a, [wJumptableIndex]
+ bit 7, a
+ jr nz, .asm_e1ed0
+ call Functione1ed2
+ callab Function8cf69
+ call DelayFrame
+ and a
+ ret
+.asm_e1ed0
+ scf
+ ret
+
+Functione1ed2: ; e1ed2 (38:5ed2)
+ ld a, [wJumptableIndex]
+ ld e, a
+ ld d, 0
+ ld hl, Jumptable_e1ee1
+rept 2
+ add hl, de
+endr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; e1ee1 (38:5ee1)
+
+Jumptable_e1ee1: ; e1ee1
+ dw Functione1ef3
+ dw Functione1efb
+ dw Functione1f1c
+ dw Functione1f42
+ dw Functione1f61
+ dw Functione1f8b
+ dw Functione1fba
+ dw Functione1fcc
+ dw Functione2000
+; e1ef3
+
+Functione1ef3: ; e1ef3
+ call Functione2152
+ ld hl, wJumptableIndex
+ inc [hl]
+ ret
+; e1efb
+
+Functione1efb: ; e1efb
+ call Functione00ed
+ jr nc, .asm_e1f06
+ ld hl, wJumptableIndex
+ set 7, [hl]
+ ret
+
+.asm_e1f06
+ call Functione209d
+ ld hl, wJumptableIndex
+ inc [hl]
+ xor a
+ ld [wc708], a
+ ld hl, wc703
+rept 4
+ ld [hli], a
+endr
+ ld [hl], a
+ ld [wc709], a
+
+Functione1f1c: ; e1f1c
+ ld hl, wc708
+ ld a, [hl]
+ cp $2d
+ jr nc, .asm_e1f30
+ inc [hl]
+ call Functione2183
+ xor a
+ ld [wc6fd], a
+ call Functione2128
+ ret
+
+.asm_e1f30
+ ld de, $341c
+ ld a, $c
+ call Function3b2a
+ ld a, $5
+ ld [wc702], a
+ ld hl, wJumptableIndex
+ inc [hl]
+ ret
+; e1f42
+
+Functione1f42: ; e1f42
+ ld a, [wc702]
+ hlcoord 17, 0
+ add $f6
+ ld [hl], a
+ ld hl, wc702
+ ld a, [hl]
+ and a
+ jr nz, .asm_e1f58
+ ld a, $7
+ ld [wJumptableIndex], a
+ ret
+
+.asm_e1f58
+ dec [hl]
+ xor a
+ ld [wcf64], a
+ ld hl, wJumptableIndex
+ inc [hl]
+
+Functione1f61: ; e1f61
+ ld a, [wcf64]
+ and a
+ ret z
+ dec a
+ ld e, a
+ ld d, $0
+ ld hl, wc6d0
+ add hl, de
+ ld a, [hl]
+ cp $ff
+ ret z
+ ld [wc6fd], a
+ ld [wPlayerMinimized], a
+ ld a, e
+ ld [EnemyScreens], a
+ call Functione2183
+ call Functione2128
+ xor a
+ ld [wcf64], a
+ ld hl, wJumptableIndex
+ inc [hl]
+ ret
+; e1f8b
+
+Functione1f8b: ; e1f8b
+ ld a, [wcf64]
+ and a
+ ret z
+ dec a
+ ld hl, EnemyScreens
+ cp [hl]
+ ret z
+ ld e, a
+ ld d, $0
+ ld hl, wc6d0
+ add hl, de
+ ld a, [hl]
+ cp $ff
+ ret z
+ ld [wc6fd], a
+ ld [PlayerScreens], a
+ ld a, e
+ ld [wc701], a
+ call Functione2183
+ call Functione2128
+ ld a, $40
+ ld [wc708], a
+ ld hl, wJumptableIndex
+ inc [hl]
+
+Functione1fba: ; e1fba
+ ld hl, wc708
+ ld a, [hl]
+ and a
+ jr z, .asm_e1fc3
+ dec [hl]
+ ret
+
+.asm_e1fc3
+ call Functione2010
+ ld a, $3
+ ld [wJumptableIndex], a
+ ret
+; e1fcc
+
+Functione1fcc: ; e1fcc
+ ld a, [hJoypadPressed]
+ and A_BUTTON
+ ret z
+ xor a
+ ld [wc708], a
+.asm_e1fd5
+ ld hl, wc708
+ ld a, [hl]
+ cp $2d
+ jr nc, .asm_e1ff9
+ inc [hl]
+ push af
+ call Functione2183
+ pop af
+ push hl
+ ld e, a
+ ld d, $0
+ ld hl, wc6d0
+ add hl, de
+ ld a, [hl]
+ pop hl
+ cp $ff
+ jr z, .asm_e1fd5
+ ld [wc6fd], a
+ call Functione2128
+ jr .asm_e1fd5
+
+.asm_e1ff9
+ call WaitPressAorB_BlinkCursor
+ ld hl, wJumptableIndex
+ inc [hl]
+
+Functione2000: ; e2000
+ call Functione00ed
+ jr nc, .asm_e200b
+ ld hl, wJumptableIndex
+ set 7, [hl]
+ ret
+
+.asm_e200b
+ xor a
+ ld [wJumptableIndex], a
+ ret
+; e2010
+
+Functione2010: ; e2010
+ ld hl, wPlayerMinimized
+ ld a, [hli]
+ cp [hl]
+ jr nz, .asm_e2066
+ ld a, [EnemyScreens]
+ call Functione2183
+ call Functione2142
+ ld a, [wc701]
+ call Functione2183
+ call Functione2142
+ ld a, [EnemyScreens]
+ ld e, a
+ ld d, $0
+ ld hl, wc6d0
+ add hl, de
+ ld [hl], $ff
+ ld a, [wc701]
+ ld e, a
+ ld d, $0
+ ld hl, wc6d0
+ add hl, de
+ ld [hl], $ff
+ ld hl, wc703
+.asm_e2044
+ ld a, [hli]
+ and a
+ jr nz, .asm_e2044
+ dec hl
+ ld a, [wPlayerMinimized]
+ ld [hl], a
+ ld [wc6fd], a
+ ld hl, wc709
+ ld e, [hl]
+rept 2
+ inc [hl]
+endr
+ ld d, $0
+ hlcoord 5, 0
+ add hl, de
+ call Functione2128
+ ld hl, UnknownText_0xe2083
+ call PrintText
+ ret
+
+.asm_e2066
+ xor a
+ ld [wc6fd], a
+ ld a, [EnemyScreens]
+ call Functione2183
+ call Functione2128
+ ld a, [wc701]
+ call Functione2183
+ call Functione2128
+ ld hl, UnknownText_0xe2098
+ call PrintText
+ ret
+; e2083
+
+UnknownText_0xe2083: ; 0xe2083
+ start_asm
+; 0xe2084
+
+Functione2084: ; e2084
+ push bc
+ hlcoord 2, 13
+ call Functione2128
+ ld hl, UnknownText_0xe2093
+ pop bc
+rept 3
+ inc bc
+endr
+ ret
+; e2093
+
+UnknownText_0xe2093: ; 0xe2093
+ ; , yeah!
+ text_jump UnknownText_0x1c1a5b
+ db "@"
+; 0xe2098
+
+UnknownText_0xe2098: ; 0xe2098
+ ; Darn…
+ text_jump UnknownText_0x1c1a65
+ db "@"
+; 0xe209d
+
+Functione209d: ; e209d
+ ld hl, wc6d0
+ ld bc, $2d
+ xor a
+ call ByteFill
+ call Functione2101
+ ld c, $2
+ ld b, [hl]
+ call Functione20e5
+ ld c, $8
+ ld b, [hl]
+ call Functione20e5
+ ld c, $4
+ ld b, [hl]
+ call Functione20e5
+ ld c, $7
+ ld b, [hl]
+ call Functione20e5
+ ld c, $3
+ ld b, [hl]
+ call Functione20e5
+ ld c, $6
+ ld b, [hl]
+ call Functione20e5
+ ld c, $1
+ ld b, [hl]
+ call Functione20e5
+ ld c, $5
+ ld hl, wc6d0
+ ld b, $2d
+.asm_e20db
+ ld a, [hl]
+ and a
+ jr nz, .asm_e20e0
+ ld [hl], c
+
+.asm_e20e0
+ inc hl
+ dec b
+ jr nz, .asm_e20db
+ ret
+; e20e5
+
+Functione20e5: ; e20e5
+ push hl
+ ld de, wc6d0
+.asm_e20e9
+ call Random
+ and $3f
+ cp $2d
+ jr nc, .asm_e20e9
+ ld l, a
+ ld h, $0
+ add hl, de
+ ld a, [hl]
+ and a
+ jr nz, .asm_e20e9
+ ld [hl], c
+ dec b
+ jr nz, .asm_e20e9
+ pop hl
+ inc hl
+ ret
+; e2101
+
+Functione2101: ; e2101
+ ld a, [MenuSelection2]
+ dec a
+ ld l, a
+ ld h, 0
+rept 3
+ add hl, hl
+endr
+ ld de, Unknown_e2110
+ add hl, de
+ ret
+; e2110
+
+Unknown_e2110: ; e2110
+ db $02, $03, $06, $06, $06, $08, $08, $06
+ db $02, $02, $04, $06, $06, $08, $08, $09
+ db $02, $02, $02, $04, $07, $08, $08, $0c
+; e2128
+
+Functione2128: ; e2128
+ ld a, [wc6fd]
+ sla a
+ sla a
+ add $4
+ ld [hli], a
+ inc a
+ ld [hld], a
+ inc a
+ ld bc, SCREEN_WIDTH
+ add hl, bc
+ ld [hli], a
+ inc a
+ ld [hl], a
+ ld c, 3
+ call DelayFrames
+ ret
+; e2142
+
+Functione2142: ; e2142
+ ld a, $1
+ ld [hli], a
+ ld [hld], a
+ ld bc, SCREEN_WIDTH
+ add hl, bc
+ ld [hli], a
+ ld [hl], a
+ ld c, 3
+ call DelayFrames
+ ret
+; e2152
+
+Functione2152: ; e2152
+ hlcoord 0, 0
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ ld a, $1
+ call ByteFill
+ hlcoord 0, 0
+ ld de, String_e2177
+ call PlaceString
+ hlcoord 15, 0
+ ld de, String_e217d
+ call PlaceString
+ ld hl, UnknownText_0xe2176
+ call PrintText
+ ret
+; e2176
+
+UnknownText_0xe2176: ; 0xe2176
+ db "@"
+; 0xe2177
+
+String_e2177: db "とったもの@"
+String_e217d: db "あと かい@"
+; e2183
+
+Functione2183: ; e2183
+ ld d, $0
+.asm_e2185
+ sub $9
+ jr c, .asm_e218c
+ inc d
+ jr .asm_e2185
+
+.asm_e218c
+ add $9
+ ld e, a
+ hlcoord 1, 2
+ ld bc, $28
+.asm_e2195
+ ld a, d
+ and a
+ jr z, .asm_e219d
+ add hl, bc
+ dec d
+ jr .asm_e2195
+
+.asm_e219d
+ sla e
+ add hl, de
+ ret
+; e21a1
+
+Functione21a1: ; e21a1 (38:61a1)
+ ld a, [wJumptableIndex]
+ cp $7
+ jr nc, .quit
+ call JoyTextDelay
+ ld hl, hJoypadPressed ; $ffa3
+ ld a, [hl]
+ and A_BUTTON
+ jr nz, .pressed_a
+ ld a, [hl]
+ and D_LEFT
+ jr nz, .pressed_left
+ ld a, [hl]
+ and D_RIGHT
+ jr nz, .pressed_right
+ ld a, [hl]
+ and D_UP
+ jr nz, .pressed_up
+ ld a, [hl]
+ and D_DOWN
+ jr nz, .pressed_down
+ ret
+
+.quit
+ ld hl, 0
+ add hl, bc
+ ld [hl], $0
+ ret
+
+.pressed_a
+ ld hl, $c
+ add hl, bc
+ ld a, [hl]
+ inc a
+ ld [wcf64], a
+ ret
+
+.pressed_left
+ ld hl, $6
+ add hl, bc
+ ld a, [hl]
+ and a
+ ret z
+ sub $10
+ ld [hl], a
+ ld hl, $c
+ add hl, bc
+ dec [hl]
+ ret
+
+.pressed_right
+ ld hl, $6
+ add hl, bc
+ ld a, [hl]
+ cp $80
+ ret z
+ add $10
+ ld [hl], a
+ ld hl, $c
+ add hl, bc
+ inc [hl]
+ ret
+
+.pressed_up
+ ld hl, $7
+ add hl, bc
+ ld a, [hl]
+ and a
+ ret z
+ sub $10
+ ld [hl], a
+ ld hl, $c
+ add hl, bc
+ ld a, [hl]
+ sub $9
+ ld [hl], a
+ ret
+
+.pressed_down
+ ld hl, $7
+ add hl, bc
+ ld a, [hl]
+ cp $40
+ ret z
+ add $10
+ ld [hl], a
+ ld hl, $c
+ add hl, bc
+ ld a, [hl]
+ add $9
+ ld [hl], a
+ ret
+; e2221 (38:6221)
+
+LZ_e2221: ; e2221
+INCBIN "gfx/unknown/0e2221.2bpp.lz"
diff --git a/engine/events.asm b/engine/events.asm
index ff2f55dbe..3a3c2b9be 100644
--- a/engine/events.asm
+++ b/engine/events.asm
@@ -138,7 +138,7 @@ EnterMap: ; 9673e
call ClearAllScriptFlags3
ld a, [hMapEntryMethod]
- cp MAPSETUP_07
+ cp MAPSETUP_CONNECTION
jr nz, .dontset
call SetAll_ScriptFlags3
.dontset
@@ -322,9 +322,9 @@ PlayerEvents: ; 9681f
ld [ScriptRunning], a
call DoPlayerEvent
ld a, [ScriptRunning]
- cp PLAYEREVENT_4
+ cp PLAYEREVENT_CONNECTION
jr z, .ok2
- cp PLAYEREVENT_9
+ cp PLAYEREVENT_JOYCHANGEFACING
jr z, .ok2
xor a
@@ -1050,8 +1050,10 @@ DoPlayerEvent: ; 96beb
ld a, [ScriptRunning]
and a
ret z
+
cp PLAYEREVENT_MAPSCRIPT ; run script
ret z
+
cp NUM_PLAYER_EVENTS
ret nc
@@ -1071,24 +1073,24 @@ endr
; 96c0c
PlayerEventScriptPointers: ; 96c0c
- dba Invalid_0x96c2d ; 0
- dba SeenByTrainerScript ; 1
- dba TalkToTrainerScript ; 2
- dba FindItemInBallScript ; 3
- dba UnknownScript_0x96c4d ; 4
- dba WarpToNewMapScript ; 5
- dba FallIntoMapScript ; 6
- dba Script_OverworldWhiteout ; 7
- dba HatchEggScript ; 8
- dba UnknownScript_0x96c4f ; 9
- dba Invalid_0x96c2d ; 10
+ dba Invalid_0x96c2d ; 0
+ dba SeenByTrainerScript ; 1
+ dba TalkToTrainerScript ; 2
+ dba FindItemInBallScript ; 3
+ dba UnknownScript_0x96c4d ; 4
+ dba WarpToNewMapScript ; 5
+ dba FallIntoMapScript ; 6
+ dba Script_OverworldWhiteout ; 7
+ dba HatchEggScript ; 8
+ dba UnknownScript_0x96c4f ; 9
+ dba Invalid_0x96c2d ; 10
; 96c2d
Invalid_0x96c2d: ; 96c2d
end
; 96c2e
-UnknownScript_0x96c2e: ; 96c2e
+; unreferenced
end
; 96c2f
@@ -1099,12 +1101,12 @@ HatchEggScript: ; 96c2f
WarpToNewMapScript: ; 96c34
warpsound
- newloadmap MAPSETUP_05
+ newloadmap MAPSETUP_DOOR
end
; 96c38
FallIntoMapScript: ; 96c38
- newloadmap MAPSETUP_06
+ newloadmap MAPSETUP_FALL
playsound SFX_KINESIS
applymovement PLAYER, MovementData_0x96c48
playsound SFX_STRENGTH
@@ -1123,7 +1125,7 @@ LandAfterPitfallScript: ; 96c4a
; 96c4d
UnknownScript_0x96c4d: ; 4
- reloadandreturn MAPSETUP_07
+ reloadandreturn MAPSETUP_CONNECTION
; 96c4f
UnknownScript_0x96c4f: ; 9
diff --git a/engine/events_3.asm b/engine/events_3.asm
new file mode 100755
index 000000000..f9f8ffedc
--- /dev/null
+++ b/engine/events_3.asm
@@ -0,0 +1,863 @@
+ReturnFromMapSetupScript:: ; b8000
+ xor a
+ ld [hBGMapMode], a
+ ; For some reson, GameFreak chose to use a callba here instead of just falling through.
+ ; No other function in the game references the function at 2E:400A, here labeled
+ ; ReturnFromMapSetupScript.inefficientcallba.
+ callba .inefficientcallba ; this is a waste of 6 ROM bytes and 2 stack bytes
+ ret
+; b800a
+
+.inefficientcallba: ; b800a
+ ld a, [MapGroup]
+ ld b, a
+ ld a, [MapNumber]
+ ld c, a
+ call GetWorldMapLocation
+ ld [wCurrentLandmark], a
+ call .CheckNationalParkGate
+ jr z, .nationalparkgate
+
+ call GetMapPermission
+ cp GATE
+ jr nz, .not_gate
+
+.nationalparkgate
+ ld a, -1
+ ld [wCurrentLandmark], a
+
+.not_gate
+ ld hl, wEnteredMapFromContinue
+ bit 1, [hl]
+ res 1, [hl]
+ jr nz, .dont_do_map_sign
+
+ call .CheckMovingWithinLandmark
+ jr z, .dont_do_map_sign
+ ld a, [wCurrentLandmark]
+ ld [wPreviousLandmark], a
+
+ call .CheckSpecialMap
+ jr z, .dont_do_map_sign
+
+; Display for 60 frames
+ ld a, 60
+ ld [wLandmarkSignTimer], a
+ call LoadMapNameSignGFX
+ call InitMapNameFrame
+ callba Function104303
+ ret
+
+.dont_do_map_sign
+ ld a, [wCurrentLandmark]
+ ld [wPreviousLandmark], a
+ ld a, $90
+ ld [rWY], a
+ ld [hWY], a
+ xor a
+ ld [hLCDStatCustom], a
+ ret
+; b8064
+
+.CheckMovingWithinLandmark: ; b8064
+ ld a, [wCurrentLandmark]
+ ld c, a
+ ld a, [wPreviousLandmark]
+ cp c
+ ret z
+ cp $0
+ ret
+; b8070
+
+.CheckSpecialMap: ; b8070
+ cp -1
+ ret z
+ cp SPECIAL_MAP
+ ret z
+ cp RADIO_TOWER
+ ret z
+ cp LAV_RADIO_TOWER
+ ret z
+ cp UNDERGROUND
+ ret z
+ cp INDIGO_PLATEAU
+ ret z
+ cp POWER_PLANT
+ ret z
+ ld a, $1
+ and a
+ ret
+; b8089
+
+.CheckNationalParkGate: ; b8089
+ ld a, [MapGroup]
+ cp GROUP_ROUTE_35_NATIONAL_PARK_GATE
+ ret nz
+ ld a, [MapNumber]
+ cp MAP_ROUTE_35_NATIONAL_PARK_GATE
+ ret z
+ cp MAP_ROUTE_36_NATIONAL_PARK_GATE
+ ret
+; b8098
+
+
+PlaceMapNameSign:: ; b8098 (2e:4098)
+ ld hl, wLandmarkSignTimer
+ ld a, [hl]
+ and a
+ jr z, .disappear
+ dec [hl]
+ cp 60
+ ret z
+ cp 59
+ jr nz, .skip2
+ call InitMapNameFrame
+ call PlaceMapNameCenterAlign
+ callba Function104303
+.skip2
+ ld a, $80
+ ld a, $70
+ ld [rWY], a
+ ld [hWY], a
+ ret
+
+.disappear
+ ld a, $90
+ ld [rWY], a
+ ld [hWY], a
+ xor a
+ ld [hLCDStatCustom], a
+ ret
+
+
+LoadMapNameSignGFX: ; b80c6
+ ld de, MapEntryFrameGFX
+ ld hl, VTiles2 tile $60
+ lb bc, BANK(MapEntryFrameGFX), $e
+ call Get2bpp
+ ret
+; b80d3
+
+InitMapNameFrame: ; b80d3
+ hlcoord 0, 0
+ ld b, 2
+ ld c, 18
+ call InitMapSignAttrMap
+ call PlaceMapNameFrame
+ ret
+; b80e1
+
+
+PlaceMapNameCenterAlign: ; b80e1 (2e:40e1)
+ ld a, [wCurrentLandmark]
+ ld e, a
+ callba GetLandmarkName
+ call .GetNameLength
+ ld a, SCREEN_WIDTH
+ sub c
+ srl a
+ ld b, $0
+ ld c, a
+ hlcoord 0, 2
+ add hl, bc
+ ld de, StringBuffer1
+ call PlaceString
+ ret
+
+.GetNameLength: ; b8101 (2e:4101)
+ ld c, 0
+ push hl
+ ld hl, StringBuffer1
+.loop
+ ld a, [hli]
+ cp "@"
+ jr z, .stop
+ cp "%"
+ jr z, .loop
+ inc c
+ jr .loop
+.stop
+ pop hl
+ ret
+
+
+InitMapSignAttrMap: ; b8115
+ ld de, AttrMap - TileMap
+ add hl, de
+rept 2
+ inc b
+endr
+rept 2
+ inc c
+endr
+ ld a, $87
+.loop
+ push bc
+ push hl
+.inner_loop
+ ld [hli], a
+ dec c
+ jr nz, .inner_loop
+ pop hl
+ ld de, SCREEN_WIDTH
+ add hl, de
+ pop bc
+ dec b
+ jr nz, .loop
+ ret
+; b812f
+
+PlaceMapNameFrame: ; b812f
+ hlcoord 0, 0
+ ; top left
+ ld a, $61
+ ld [hli], a
+ ; top row
+ ld a, $62
+ call .FillTopBottom
+ ; top right
+ ld a, $64
+ ld [hli], a
+ ; left, first line
+ ld a, $65
+ ld [hli], a
+ ; first line
+ call .FillMiddle
+ ; right, first line
+ ld a, $6b
+ ld [hli], a
+ ; left, second line
+ ld a, $66
+ ld [hli], a
+ ; second line
+ call .FillMiddle
+ ; right, second line
+ ld a, $6c
+ ld [hli], a
+ ; bottom left
+ ld a, $67
+ ld [hli], a
+ ; bottom
+ ld a, $68
+ call .FillTopBottom
+ ; bottom right
+ ld a, $6a
+ ld [hl], a
+ ret
+; b815b
+
+.FillMiddle: ; b815b
+ ld c, 18
+ ld a, $6d
+.loop
+ ld [hli], a
+ dec c
+ jr nz, .loop
+ ret
+; b8164
+
+.FillTopBottom: ; b8164
+ ld c, 5
+ jr .enterloop
+
+.continueloop
+rept 2
+ ld [hli], a
+endr
+
+.enterloop
+ inc a
+rept 2
+ ld [hli], a
+endr
+ dec a
+ dec c
+ jr nz, .continueloop
+ ret
+; b8172
+
+CheckForSignpostItems: ; b8172
+; Checks to see if there are hidden items on the screen that have not yet been found. If it finds one, returns carry.
+ call GetMapScriptHeaderBank
+ ld [Buffer1], a
+; Get the coordinate of the bottom right corner of the screen, and load it in wd1ec/wd1ed.
+ ld a, [XCoord]
+ add SCREEN_WIDTH / 4
+ ld [wd1ed], a
+ ld a, [YCoord]
+ add SCREEN_HEIGHT / 4
+ ld [wd1ec], a
+; Get the pointer for the first signpost header in the map...
+ ld hl, wdc02
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+; ... before even checking to see if there are any signposts on this map.
+ ld a, [wCurrentMapSignpostCount]
+ and a
+ jr z, .nosignpostitems
+; For i = 1:wCurrentMapSignpostCount...
+.loop
+; Store the counter in Buffer2, and store the signpost header pointer in the stack.
+ ld [Buffer2], a
+ push hl
+; Get the Y coordinate of the signpost.
+ call .GetFarByte
+ ld e, a
+; Is the Y coordinate of the signpost on the screen? If not, go to the next signpost.
+ ld a, [wd1ec]
+ sub e
+ jr c, .next
+ cp SCREEN_HEIGHT / 2
+ jr nc, .next
+; Is the X coordinate of the signpost on the screen? If not, go to the next signpost.
+ call .GetFarByte
+ ld d, a
+ ld a, [wd1ed]
+ sub d
+ jr c, .next
+ cp SCREEN_WIDTH / 2
+ jr nc, .next
+; Is this signpost a hidden item? If not, go to the next signpost.
+ call .GetFarByte
+ cp SIGNPOST_ITEM
+ jr nz, .next
+; Has this item already been found? If not, set off the Itemfinder.
+ ld a, [Buffer1]
+ call GetFarHalfword
+ ld a, [Buffer1]
+ call GetFarHalfword
+ ld d, h
+ ld e, l
+ ld b, CHECK_FLAG
+ call EventFlagAction
+ ld a, c
+ and a
+ jr z, .itemnearby
+
+.next
+; Restore the signpost header pointer and increment it by the length of a signpost header.
+ pop hl
+ ld bc, 5
+ add hl, bc
+; Restore the signpost counter and decrement it. If it hits zero, there are no hidden items in range.
+ ld a, [Buffer2]
+ dec a
+ jr nz, .loop
+
+.nosignpostitems
+ xor a
+ ret
+
+.itemnearby
+ pop hl
+ scf
+ ret
+; b81e2
+
+.GetFarByte: ; b81e2
+ ld a, [Buffer1]
+ call GetFarByte
+ inc hl
+ ret
+; b81ea
+
+
+TreeMonEncounter: ; b81ea
+ callba MobileFn_1060ef
+
+ xor a
+ ld [TempWildMonSpecies], a
+ ld [CurPartyLevel], a
+
+ ld hl, TreeMonMaps
+ call GetTreeMonSet
+ jr nc, .no_battle
+
+ call GetTreeMons
+ jr nc, .no_battle
+
+ call GetTreeMon
+ jr nc, .no_battle
+
+ ld a, BATTLETYPE_TREE
+ ld [BattleType], a
+ ld a, 1
+ ld [ScriptVar], a
+ ret
+
+.no_battle
+ xor a
+ ld [ScriptVar], a
+ ret
+; b8219
+
+RockMonEncounter: ; b8219
+
+ xor a
+ ld [TempWildMonSpecies], a
+ ld [CurPartyLevel], a
+
+ ld hl, RockMonMaps
+ call GetTreeMonSet
+ jr nc, .no_battle
+
+ call GetTreeMons
+ jr nc, .no_battle
+
+ ld a, 10
+ call RandomRange
+ cp 4
+ jr nc, .no_battle
+
+ call SelectTreeMon
+ jr nc, .no_battle
+
+ ret
+
+.no_battle
+ xor a
+ ret
+; b823e
+
+ db $05 ; ????
+
+GetTreeMonSet: ; b823f
+; Return carry and treemon set in a
+; if the current map is in table hl.
+ ld a, [MapNumber]
+ ld e, a
+ ld a, [MapGroup]
+ ld d, a
+.loop
+ ld a, [hli]
+ cp -1
+ jr z, .not_in_table
+
+ cp d
+ jr nz, .skip2
+
+ ld a, [hli]
+ cp e
+ jr nz, .skip1
+
+ jr .in_table
+
+.skip2
+ inc hl
+.skip1
+ inc hl
+ jr .loop
+
+.not_in_table
+ xor a
+ ret
+
+.in_table
+ ld a, [hl]
+ scf
+ ret
+; b825e
+
+TreeMonMaps: ; b825e
+treemon_map: macro
+ map \1
+ db \2 ; treemon set
+endm
+ treemon_map ROUTE_26, 4
+ treemon_map ROUTE_27, 4
+ treemon_map ROUTE_28, 0
+ treemon_map ROUTE_29, 3
+ treemon_map ROUTE_30, 3
+ treemon_map ROUTE_31, 3
+ treemon_map ROUTE_32, 4
+ treemon_map ROUTE_33, 2
+ treemon_map ROUTE_34, 3
+ treemon_map ROUTE_35, 3
+ treemon_map ROUTE_36, 3
+ treemon_map ROUTE_37, 3
+ treemon_map ROUTE_38, 3
+ treemon_map ROUTE_39, 3
+ treemon_map ROUTE_40, 0
+ treemon_map ROUTE_41, 0
+ treemon_map ROUTE_42, 2
+ treemon_map ROUTE_43, 5
+ treemon_map ROUTE_44, 1
+ treemon_map ROUTE_45, 1
+ treemon_map ROUTE_46, 1
+ treemon_map NEW_BARK_TOWN, 0
+ treemon_map CHERRYGROVE_CITY, 0
+ treemon_map VIOLET_CITY, 0
+ treemon_map AZALEA_TOWN, 2
+ treemon_map CIANWOOD_CITY, 0
+ treemon_map GOLDENROD_CITY, 0
+ treemon_map OLIVINE_CITY, 0
+ treemon_map ECRUTEAK_CITY, 0
+ treemon_map MAHOGANY_TOWN, 0
+ treemon_map LAKE_OF_RAGE, 5
+ treemon_map BLACKTHORN_CITY, 0
+ treemon_map SILVER_CAVE_OUTSIDE, 0
+ treemon_map ILEX_FOREST, 6
+ db -1
+; b82c5
+
+RockMonMaps: ; b82c5
+ treemon_map CIANWOOD_CITY, 7
+ treemon_map ROUTE_40, 7
+ treemon_map DARK_CAVE_VIOLET_ENTRANCE, 7
+ treemon_map SLOWPOKE_WELL_B1F, 7
+ db -1
+; b82d2
+
+GetTreeMons: ; b82d2
+; Return the address of TreeMon table a in hl.
+; Return nc if table a doesn't exist.
+
+ cp 8
+ jr nc, .quit
+
+ and a
+ jr z, .quit
+
+ ld e, a
+ ld d, 0
+ ld hl, TreeMons
+rept 2
+ add hl, de
+endr
+
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+
+ scf
+ ret
+
+.quit
+ xor a
+ ret
+; b82e8
+
+TreeMons: ; b82e8
+ dw TreeMons1
+ dw TreeMons1
+ dw TreeMons2
+ dw TreeMons3
+ dw TreeMons4
+ dw TreeMons5
+ dw TreeMons6
+ dw RockMons
+ dw TreeMons1
+
+; Two tables each (normal, rare).
+; Structure:
+; db %, species, level
+
+TreeMons1: ; b82fa
+ db 50, SPEAROW, 10
+ db 15, SPEAROW, 10
+ db 15, SPEAROW, 10
+ db 10, AIPOM, 10
+ db 5, AIPOM, 10
+ db 5, AIPOM, 10
+ db -1
+
+ db 50, SPEAROW, 10
+ db 15, HERACROSS, 10
+ db 15, HERACROSS, 10
+ db 10, AIPOM, 10
+ db 5, AIPOM, 10
+ db 5, AIPOM, 10
+ db -1
+
+TreeMons2: ; b8320
+ db 50, SPEAROW, 10
+ db 15, EKANS, 10
+ db 15, SPEAROW, 10
+ db 10, AIPOM, 10
+ db 5, AIPOM, 10
+ db 5, AIPOM, 10
+ db -1
+
+ db 50, SPEAROW, 10
+ db 15, HERACROSS, 10
+ db 15, HERACROSS, 10
+ db 10, AIPOM, 10
+ db 5, AIPOM, 10
+ db 5, AIPOM, 10
+ db -1
+
+TreeMons3: ; b8346
+ db 50, HOOTHOOT, 10
+ db 15, SPINARAK, 10
+ db 15, LEDYBA, 10
+ db 10, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db -1
+
+ db 50, HOOTHOOT, 10
+ db 15, PINECO, 10
+ db 15, PINECO, 10
+ db 10, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db -1
+
+TreeMons4: ; b836c
+ db 50, HOOTHOOT, 10
+ db 15, EKANS, 10
+ db 15, HOOTHOOT, 10
+ db 10, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db -1
+
+ db 50, HOOTHOOT, 10
+ db 15, PINECO, 10
+ db 15, PINECO, 10
+ db 10, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db -1
+
+TreeMons5: ; b8392
+ db 50, HOOTHOOT, 10
+ db 15, VENONAT, 10
+ db 15, HOOTHOOT, 10
+ db 10, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db -1
+
+ db 50, HOOTHOOT, 10
+ db 15, PINECO, 10
+ db 15, PINECO, 10
+ db 10, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db -1
+
+TreeMons6: ; b83b8
+ db 50, HOOTHOOT, 10
+ db 15, PINECO, 10
+ db 15, PINECO, 10
+ db 10, NOCTOWL, 10
+ db 5, BUTTERFREE, 10
+ db 5, BEEDRILL, 10
+ db -1
+
+ db 50, HOOTHOOT, 10
+ db 15, CATERPIE, 10
+ db 15, WEEDLE, 10
+ db 10, HOOTHOOT, 10
+ db 5, METAPOD, 10
+ db 5, KAKUNA, 10
+ db -1
+
+RockMons: ; b83de
+ db 90, KRABBY, 15
+ db 10, SHUCKLE, 15
+ db -1
+; b83e5
+
+GetTreeMon: ; b83e5
+ push hl
+ call GetTreeScore
+ pop hl
+ and a
+ jr z, .bad
+ cp 1
+ jr z, .good
+ cp 2
+ jr z, .rare
+ ret
+
+.bad
+ ld a, 10
+ call RandomRange
+ and a
+ jr nz, NoTreeMon
+ jr SelectTreeMon
+
+.good
+ ld a, 10
+ call RandomRange
+ cp 5
+ jr nc, NoTreeMon
+ jr SelectTreeMon
+
+.rare
+ ld a, 10
+ call RandomRange
+ cp 8
+ jr nc, NoTreeMon
+ jr .skip
+.skip
+ ld a, [hli]
+ cp -1
+ jr nz, .skip
+ call SelectTreeMon
+ ret
+; b841f
+
+SelectTreeMon: ; b841f
+; Read a TreeMons table and pick one monster at random.
+
+ ld a, 100
+ call RandomRange
+.loop
+ sub [hl]
+ jr c, .ok
+rept 3
+ inc hl
+endr
+ jr .loop
+
+.ok
+ ld a, [hli]
+ cp $ff
+ jr z, NoTreeMon
+
+ ld a, [hli]
+ ld [TempWildMonSpecies], a
+ ld a, [hl]
+ ld [CurPartyLevel], a
+ scf
+ ret
+
+NoTreeMon: ; b843b
+ xor a
+ ld [TempWildMonSpecies], a
+ ld [CurPartyLevel], a
+ ret
+; b8443
+
+GetTreeScore: ; b8443
+ call .CoordScore
+ ld [Buffer1], a
+ call .OTIDScore
+ ld [Buffer2], a
+ ld c, a
+ ld a, [Buffer1]
+ sub c
+ jr z, .rare
+ jr nc, .ok
+ add 10
+.ok
+ cp 5
+ jr c, .good
+
+.bad
+ xor a
+ ret
+
+.good
+ ld a, 1
+ ret
+
+.rare
+ ld a, 2
+ ret
+; b8466
+
+.CoordScore: ; b8466
+ call GetFacingTileCoord
+ ld hl, 0
+ ld c, e
+ ld b, 0
+ ld a, d
+
+ and a
+ jr z, .next
+.loop
+ add hl, bc
+ dec a
+ jr nz, .loop
+.next
+
+ add hl, bc
+ ld c, d
+ add hl, bc
+
+ ld a, h
+ ld [hDividend], a
+ ld a, l
+ ld [hDividend + 1], a
+ ld a, 5
+ ld [hDivisor], a
+ ld b, 2
+ call Divide
+
+ ld a, [hQuotient + 1]
+ ld [hDividend], a
+ ld a, [hQuotient + 2]
+ ld [hDividend + 1], a
+ ld a, 10
+ ld [hDivisor], a
+ ld b, 2
+ call Divide
+
+ ld a, [hQuotient + 3]
+ ret
+; b849d
+
+.OTIDScore: ; b849d
+ ld a, [PlayerID]
+ ld [hDividend], a
+ ld a, [PlayerID + 1]
+ ld [hDividend + 1], a
+ ld a, 10
+ ld [hDivisor], a
+ ld b, 2
+ call Divide
+ ld a, [hQuotient + 3]
+ ret
+; b84b3
+
+LoadFishingGFX: ; b84b3
+ ld a, [rVBK]
+ push af
+ ld a, $1
+ ld [rVBK], a
+
+ ld de, FishingGFX
+ ld a, [PlayerGender]
+ bit 0, a
+ jr z, .got_gender
+ ld de, KrisFishingGFX
+.got_gender
+
+ ld hl, VTiles0 tile $02
+ call .LoadGFX
+ ld hl, VTiles0 tile $06
+ call .LoadGFX
+ ld hl, VTiles0 tile $0a
+ call .LoadGFX
+ ld hl, VTiles1 tile $7c
+ call .LoadGFX
+
+ pop af
+ ld [rVBK], a
+ ret
+; b84e3
+
+.LoadGFX: ; b84e3
+ lb bc, BANK(FishingGFX), 2
+ push de
+ call Get2bpp
+ pop de
+ ld hl, 2 tiles
+ add hl, de
+ ld d, h
+ ld e, l
+ ret
+; b84f2
+
+FishingGFX: ; b84f2
+INCBIN "gfx/overworld/chris_fish.2bpp"
+; b8582
+
+KrisFishingGFX: ; b8582
+INCBIN "gfx/overworld/kris_fish.2bpp"
+; b8612
diff --git a/engine/evolution_animation.asm b/engine/evolution_animation.asm
index 85bc8c5a8..69e7aec4c 100755
--- a/engine/evolution_animation.asm
+++ b/engine/evolution_animation.asm
@@ -372,7 +372,7 @@ INCBIN "gfx/evo/bubble_large.2bpp"
INCBIN "gfx/evo/bubble.2bpp"
Function4e881: ; 4e881
- call WhiteBGMap
+ call ClearBGPalettes
call ClearTileMap
call ClearSprites
call DisableLCD
@@ -405,7 +405,7 @@ UnknownText_0x4e8bd: ; 0x4e8bd
Function4e8c2: ; 4e8c2
- call WhiteBGMap
+ call ClearBGPalettes
call ClearTileMap
call ClearSprites
call DisableLCD
diff --git a/engine/flypoints.asm b/engine/flypoints.asm
new file mode 100755
index 000000000..7f6d384aa
--- /dev/null
+++ b/engine/flypoints.asm
@@ -0,0 +1,916 @@
+_FlyMap: ; 91af3
+ call ClearBGPalettes
+ call ClearTileMap
+ call ClearSprites
+ ld hl, hInMenu
+ ld a, [hl]
+ push af
+ ld [hl], $1
+ xor a
+ ld [hBGMapMode], a
+ callba Function8cf53
+ call Function91ff2
+ ld de, GFX_922e1
+ ld hl, VTiles2 tile $30
+ lb bc, BANK(GFX_922e1), 6
+ call Request1bpp
+ call FlyMap
+ call Function91c8f
+ ld b, $2
+ call GetSGBLayout
+ call SetPalettes
+.loop
+ call JoyTextDelay
+ ld hl, hJoyPressed
+ ld a, [hl]
+ and B_BUTTON
+ jr nz, .pressedB
+ ld a, [hl]
+ and A_BUTTON
+ jr nz, .pressedA
+ call FlyMapScroll
+ call GetMapCursorCoordinates
+ callba Function8cf69
+ call DelayFrame
+ jr .loop
+
+.pressedB
+ ld a, -1
+ jr .exit
+
+.pressedA
+ ld a, [wd002]
+ ld l, a
+ ld h, 0
+ add hl, hl
+ ld de, Flypoints + 1
+ add hl, de
+ ld a, [hl]
+
+.exit
+ ld [wd002], a
+ pop af
+ ld [hInMenu], a
+ call ClearBGPalettes
+ ld a, $90
+ ld [hWY], a
+ xor a
+ ld [hBGMapAddress], a
+ ld a, VBGMap0 / $100
+ ld [hBGMapAddress + 1], a
+ ld a, [wd002]
+ ld e, a
+ ret
+; 91b73
+
+FlyMapScroll: ; 91b73
+ ld a, [StartFlypoint]
+ ld e, a
+ ld a, [EndFlypoint]
+ ld d, a
+ ld hl, hJoyLast
+ ld a, [hl]
+ and D_UP
+ jr nz, .ScrollNext
+ ld a, [hl]
+ and D_DOWN
+ jr nz, .ScrollPrev
+ ret
+
+.ScrollNext
+ ld hl, wd002
+ ld a, [hl]
+ cp d
+ jr nz, .NotAtEndYet
+ ld a, e
+ dec a
+ ld [hl], a
+
+.NotAtEndYet
+ inc [hl]
+ call CheckIfVisitedFlypoint
+ jr z, .ScrollNext
+ jr .Finally
+
+.ScrollPrev
+ ld hl, wd002
+ ld a, [hl]
+ cp e
+ jr nz, .NotAtStartYet
+ ld a, d
+ inc a
+ ld [hl], a
+
+.NotAtStartYet
+ dec [hl]
+ call CheckIfVisitedFlypoint
+ jr z, .ScrollPrev
+
+.Finally
+ call TownMapBubble
+ call WaitBGMap
+ xor a
+ ld [hBGMapMode], a
+ ret
+; 91bb5
+
+TownMapBubble: ; 91bb5
+; Draw the bubble containing the location text in the town map HUD
+
+; Top-left corner
+ hlcoord 1, 0
+ ld a, $30
+ ld [hli], a
+
+; Top row
+ ld bc, 16
+ ld a, " "
+ call ByteFill
+
+; Top-right corner
+ ld a, $31
+ ld [hl], a
+ hlcoord 1, 1
+
+
+; Middle row
+ ld bc, 18
+ ld a, " "
+ call ByteFill
+
+
+; Bottom-left corner
+ hlcoord 1, 2
+ ld a, $32
+ ld [hli], a
+
+; Bottom row
+ ld bc, 16
+ ld a, " "
+ call ByteFill
+
+; Bottom-right corner
+ ld a, $33
+ ld [hl], a
+
+
+; Print "Where?"
+ hlcoord 2, 0
+ ld de, .Where
+ call PlaceString
+
+; Print the name of the default flypoint
+ call .Name
+
+; Up/down arrows
+ hlcoord 18, 1
+ ld [hl], $34
+ ret
+
+.Where
+ db "Where?@"
+
+.Name
+; We need the map location of the default flypoint
+ ld a, [wd002]
+ ld l, a
+ ld h, 0
+ add hl, hl ; two bytes per flypoint
+ ld de, Flypoints
+ add hl, de
+ ld e, [hl]
+
+ callba GetLandmarkName
+
+ hlcoord 2, 1
+ ld de, StringBuffer1
+ call PlaceString
+ ret
+; 91c17
+
+GetMapCursorCoordinates: ; 91c17
+ ld a, [wd002]
+ ld l, a
+ ld h, $0
+ add hl, hl
+ ld de, Flypoints
+ add hl, de
+ ld e, [hl]
+ callba GetLandmarkCoords
+ ld a, [wd003]
+ ld c, a
+ ld a, [wd004]
+ ld b, a
+ ld hl, $4
+ add hl, bc
+ ld [hl], e
+ ld hl, $5
+ add hl, bc
+ ld [hl], d
+ ret
+; 91c3c
+
+CheckIfVisitedFlypoint: ; 91c3c
+; Check if the flypoint loaded in [hl] has been visited yet.
+ push bc
+ push de
+ push hl
+ ld l, [hl]
+ ld h, 0
+ add hl, hl
+ ld de, Flypoints + 1
+ add hl, de
+ ld c, [hl]
+ call HasVisitedSpawn
+ pop hl
+ pop de
+ pop bc
+ and a
+ ret
+; 91c50
+
+HasVisitedSpawn: ; 91c50
+; Check if spawn point c has been visited.
+ ld hl, VisitedSpawns
+ ld b, CHECK_FLAG
+ ld d, 0
+ predef FlagPredef
+ ld a, c
+ ret
+; 91c5e
+
+Flypoints: ; 91c5e
+; landmark, spawn point
+
+ const_def
+
+flypoint: MACRO
+; \1\@FLY EQUS "FLY_\1"
+; \1\@SPAWN EQUS "SPAWN_\1"
+ ; const \1\@FLY
+ ; db \2, \1\@SPAWN
+ const FLY_\1
+ db \2, SPAWN_\1
+ENDM
+
+; Johto
+ flypoint NEW_BARK, NEW_BARK_TOWN
+ flypoint CHERRYGROVE, CHERRYGROVE_CITY
+ flypoint VIOLET, VIOLET_CITY
+ flypoint AZALEA, AZALEA_TOWN
+ flypoint GOLDENROD, GOLDENROD_CITY
+ flypoint ECRUTEAK, ECRUTEAK_CITY
+ flypoint OLIVINE, OLIVINE_CITY
+ flypoint CIANWOOD, CIANWOOD_CITY
+ flypoint MAHOGANY, MAHOGANY_TOWN
+ flypoint LAKE, LAKE_OF_RAGE
+ flypoint BLACKTHORN, BLACKTHORN_CITY
+ flypoint MT_SILVER, SILVER_CAVE
+
+; Kanto
+KANTO_FLYPOINT EQU const_value
+
+ flypoint PALLET, PALLET_TOWN
+ flypoint VIRIDIAN, VIRIDIAN_CITY
+ flypoint PEWTER, PEWTER_CITY
+ flypoint CERULEAN, CERULEAN_CITY
+ flypoint VERMILION, VERMILION_CITY
+ flypoint ROCK_TUNNEL, ROCK_TUNNEL
+ flypoint LAVENDER, LAVENDER_TOWN
+ flypoint CELADON, CELADON_CITY
+ flypoint SAFFRON, SAFFRON_CITY
+ flypoint FUCHSIA, FUCHSIA_CITY
+ flypoint CINNABAR, CINNABAR_ISLAND
+ flypoint INDIGO, INDIGO_PLATEAU
+
+ db -1
+; 91c8f
+
+Function91c8f: ; 91c8f
+ ret
+; 91c90
+
+FlyMap: ; 91c90
+
+ ld a, [MapGroup]
+ ld b, a
+ ld a, [MapNumber]
+ ld c, a
+ call GetWorldMapLocation
+
+; If we're not in a valid location, i.e. Pokecenter floor 2F,
+; the backup map information is used
+
+ cp SPECIAL_MAP
+ jr nz, .CheckRegion
+
+ ld a, [BackupMapGroup]
+ ld b, a
+ ld a, [BackupMapNumber]
+ ld c, a
+ call GetWorldMapLocation
+
+.CheckRegion
+; The first 46 locations are part of Johto. The rest are in Kanto
+ cp KANTO_LANDMARK
+ jr nc, .KantoFlyMap
+
+.JohtoFlyMap
+; Note that .NoKanto should be modified in tandem with this branch
+
+ push af
+
+; Start from New Bark Town
+ ld a, FLY_NEW_BARK
+ ld [wd002], a
+
+; Flypoints begin at New Bark Town...
+ ld [StartFlypoint], a
+; ..and end at Silver Cave
+ ld a, FLY_MT_SILVER
+ ld [EndFlypoint], a
+
+; Fill out the map
+ call FillJohtoMap
+ call .MapHud
+ pop af
+ call TownMapPlayerIcon
+ ret
+
+.KantoFlyMap
+
+; The event that there are no flypoints enabled in a map is not
+; accounted for. As a result, if you attempt to select a flypoint
+; when there are none enabled, the game will crash. Additionally,
+; the flypoint selection has a default starting point that
+; can be flown to even if none are enabled
+
+; To prevent both of these things from happening when the player
+; enters Kanto, fly access is restricted until Indigo Plateau is
+; visited and its flypoint enabled
+
+ push af
+ ld c, SPAWN_INDIGO
+ call HasVisitedSpawn
+ and a
+ jr z, .NoKanto
+
+; Kanto's map is only loaded if we've visited Indigo Plateau
+
+; Flypoints begin at Pallet Town...
+ ld a, FLY_PALLET
+ ld [StartFlypoint], a
+; ...and end at Indigo Plateau
+ ld a, FLY_INDIGO
+ ld [EndFlypoint], a
+
+; Because Indigo Plateau is the first flypoint the player
+; visits, it's made the default flypoint
+ ld [wd002], a
+
+; Fill out the map
+ call FillKantoMap
+ call .MapHud
+ pop af
+ call TownMapPlayerIcon
+ ret
+
+.NoKanto
+; If Indigo Plateau hasn't been visited, we use Johto's map instead
+
+; Start from New Bark Town
+ ld a, FLY_NEW_BARK
+ ld [wd002], a
+
+; Flypoints begin at New Bark Town...
+ ld [StartFlypoint], a
+; ..and end at Silver Cave
+ ld a, FLY_MT_SILVER
+ ld [EndFlypoint], a
+
+ call FillJohtoMap
+
+ pop af
+
+.MapHud
+ call TownMapBubble
+ call TownMapPals
+
+ ld hl, VBGMap0 ; BG Map 0
+ call TownMapBGUpdate
+
+ call TownMapMon
+ ld a, c
+ ld [wd003], a
+ ld a, b
+ ld [wd004], a
+ ret
+; 91d11
+
+Function91d11: ; 91d11
+ ld a, [wd002]
+ push af
+ ld a, [wd003]
+ push af
+ ld a, e
+ ld [wd002], a
+ call ClearSprites
+ xor a
+ ld [hBGMapMode], a
+ ld a, $1
+ ld [hInMenu], a
+ ld de, GFX_922d1
+ ld hl, VTiles0 tile $7f
+ lb bc, BANK(GFX_922d1), 1
+ call Request2bpp ; actually 1bpp
+ call Function91ed0
+ ld hl, VTiles0 tile $78
+ ld c, $4
+ call Request2bpp
+ call Function91ff2
+ call FillKantoMap
+ call Function91de9
+ call TownMapPals
+ ld hl, VBGMap1
+ call TownMapBGUpdate
+ call FillJohtoMap
+ call Function91de9
+ call TownMapPals
+ ld hl, VBGMap0
+ call TownMapBGUpdate
+ ld b, $2
+ call GetSGBLayout
+ call SetPalettes
+ xor a
+ ld [hBGMapMode], a
+ xor a
+ call Function91e1e
+.asm_91d6e
+ call JoyTextDelay
+ ld hl, hJoyPressed
+ ld a, [hl]
+ and A_BUTTON | B_BUTTON
+ jr nz, .asm_91d8f
+ ld a, [hJoypadDown]
+ and SELECT
+ jr nz, .asm_91d87
+ call Function91d9b
+ call Function91dcd
+ jr .asm_91d8a
+
+.asm_91d87
+ call Function91e5a
+
+.asm_91d8a
+ call DelayFrame
+ jr .asm_91d6e
+
+.asm_91d8f
+ call ClearSprites
+ pop af
+ ld [wd003], a
+ pop af
+ ld [wd002], a
+ ret
+; 91d9b
+
+Function91d9b: ; 91d9b
+ ld a, [hl]
+ and $20
+ jr nz, .asm_91da6
+ ld a, [hl]
+ and $10
+ jr nz, .asm_91db7
+ ret
+
+.asm_91da6
+ ld a, [hWY]
+ cp $90
+ ret z
+ call ClearSprites
+ ld a, $90
+ ld [hWY], a
+ xor a
+ call Function91e1e
+ ret
+
+.asm_91db7
+ ld a, [StatusFlags]
+ bit 6, a
+ ret z
+ ld a, [hWY]
+ and a
+ ret z
+ call ClearSprites
+ xor a
+ ld [hWY], a
+ ld a, $1
+ call Function91e1e
+ ret
+; 91dcd
+
+Function91dcd: ; 91dcd
+ ld a, [hVBlankCounter]
+ ld e, a
+ and $f
+ ret nz
+ ld a, e
+ and $10
+ jr nz, .asm_91ddc
+ call ClearSprites
+ ret
+
+.asm_91ddc
+ hlcoord 0, 0
+ ld de, Sprites
+ ld bc, $a0
+ call CopyBytes
+ ret
+; 91de9
+
+Function91de9: ; 91de9
+ hlcoord 0, 0
+ ld bc, SCREEN_WIDTH
+ ld a, $7f
+ call ByteFill
+ hlcoord 0, 1
+ ld a, $6
+ ld [hli], a
+ ld bc, SCREEN_HEIGHT
+ ld a, $7
+ call ByteFill
+ ld [hl], $17
+ call GetPokemonName
+ hlcoord 2, 0
+ call PlaceString
+ ld h, b
+ ld l, c
+ ld de, String_91e16
+ call PlaceString
+ ret
+; 91e16
+
+String_91e16:
+ db "'S NEST@"
+; 91e1e
+
+Function91e1e: ; 91e1e
+ ld [wd003], a
+ ld e, a
+ callba Function2a01f
+ decoord 0, 0
+ ld hl, Sprites
+.asm_91e2e
+ ld a, [de]
+ and a
+ jr z, .asm_91e4d
+ push de
+ ld e, a
+ push hl
+ callba GetLandmarkCoords
+ pop hl
+ ld a, d
+ sub $4
+ ld [hli], a
+ ld a, e
+ sub $4
+ ld [hli], a
+ ld a, $7f
+ ld [hli], a
+ xor a
+ ld [hli], a
+ pop de
+ inc de
+ jr .asm_91e2e
+
+.asm_91e4d
+ ld hl, Sprites
+ decoord 0, 0
+ ld bc, $a0
+ call CopyBytes
+ ret
+; 91e5a
+
+Function91e5a: ; 91e5a
+ call Function91ea9
+ ret c
+
+ ld a, [wd002]
+ ld e, a
+ callba GetLandmarkCoords
+ ld c, e
+ ld b, d
+ ld de, Unknown_91e9c
+ ld hl, Sprites
+.asm_91e70
+ ld a, [de]
+ cp $80
+ jr z, .asm_91e91
+
+ add b
+ ld [hli], a
+ inc de
+
+ ld a, [de]
+ add c
+ ld [hli], a
+ inc de
+
+ ld a, [de]
+ add $78
+ ld [hli], a
+ inc de
+
+ push bc
+ ld c, 0
+ ld a, [PlayerGender]
+ bit 0, a
+ jr z, .asm_91e8c
+ inc c
+.asm_91e8c
+ ld a, c
+ ld [hli], a
+ pop bc
+
+ jr .asm_91e70
+
+.asm_91e91
+ ld hl, Sprites + $10
+ ld bc, SpritesEnd - (Sprites + $10)
+ xor a
+ call ByteFill
+ ret
+; 91e9c
+
+Unknown_91e9c: ; 91e9c
+ db -8, -8, 0
+ db -8, 0, 1
+ db 0, -8, 2
+ db 0, 0, 3
+ db $80 ; terminator
+; 91ea9
+
+Function91ea9: ; 91ea9
+ ld a, [wd002]
+ cp FAST_SHIP
+ jr z, .johto
+ cp KANTO_LANDMARK
+ jr c, .johto
+
+.kanto
+ ld a, [wd003]
+ and a
+ jr z, .clear
+ jr .ok
+
+.johto
+ ld a, [wd003]
+ and a
+ jr nz, .clear
+
+.ok
+ and a
+ ret
+
+.clear
+ ld hl, Sprites
+ ld bc, SpritesEnd - Sprites
+ xor a
+ call ByteFill
+ scf
+ ret
+; 91ed0
+
+Function91ed0: ; 91ed0
+ ld a, [wd002]
+ cp FAST_SHIP
+ jr z, .asm_91ede
+ callba GetPlayerIcon
+ ret
+
+.asm_91ede
+ ld de, FastShipGFX
+ ld b, BANK(FastShipGFX)
+ ret
+; 91ee4
+
+TownMapBGUpdate: ; 91ee4
+; Update BG Map tiles and attributes
+
+; BG Map address
+ ld a, l
+ ld [hBGMapAddress], a
+ ld a, h
+ ld [hBGMapAddress + 1], a
+
+; Only update palettes on CGB
+ ld a, [hCGB]
+ and a
+ jr z, .tiles
+
+; BG Map mode 2 (palettes)
+ ld a, 2
+ ld [hBGMapMode], a
+
+; The BG Map is updated in thirds, so we wait
+; 3 frames to update the whole screen's palettes.
+ ld c, 3
+ call DelayFrames
+
+.tiles
+; Update BG Map tiles
+ call WaitBGMap
+
+; Turn off BG Map update
+ xor a
+ ld [hBGMapMode], a
+ ret
+; 91eff
+
+FillJohtoMap: ; 91eff
+ ld de, JohtoMap
+ jr FillTownMap
+
+FillKantoMap: ; 91f04
+ ld de, KantoMap
+
+FillTownMap: ; 91f07
+ hlcoord 0, 0
+.loop
+ ld a, [de]
+ cp $ff
+ ret z
+ ld a, [de]
+ ld [hli], a
+ inc de
+ jr .loop
+; 91f13
+
+TownMapPals: ; 91f13
+; Assign palettes based on tile ids
+
+ hlcoord 0, 0
+ decoord 0, 0, AttrMap
+ ld bc, 360
+.loop
+; Current tile
+ ld a, [hli]
+ push hl
+
+; HP/borders use palette 0
+ cp $60
+ jr nc, .pal0
+
+; The palette data is condensed to nybbles,
+; least-significant first.
+ ld hl, TownMapPalMap
+ srl a
+ jr c, .odd
+
+; Even-numbered tile ids take the bottom nybble...
+ add l
+ ld l, a
+ ld a, h
+ adc 0
+ ld h, a
+ ld a, [hl]
+ and %111
+ jr .update
+
+.odd
+; ...and odd ids take the top.
+ add l
+ ld l, a
+ ld a, h
+ adc 0
+ ld h, a
+ ld a, [hl]
+ swap a
+ and %111
+ jr .update
+
+.pal0
+ xor a
+
+.update
+ pop hl
+ ld [de], a
+ inc de
+ dec bc
+ ld a, b
+ or c
+ jr nz, .loop
+ ret
+
+TownMapPalMap:
+ db $11, $21, $22, $00, $11, $13, $54, $54, $11, $21, $22, $00
+ db $11, $10, $01, $00, $11, $21, $22, $00, $00, $00, $00, $00
+ db $00, $00, $44, $04, $00, $00, $00, $00, $33, $33, $33, $33
+ db $33, $33, $33, $03, $33, $33, $33, $33, $00, $00, $00, $00
+; 91f7b
+
+TownMapMon: ; 91f7b
+; Draw the FlyMon icon at town map location in
+
+; Get FlyMon species
+ ld a, [CurPartyMon]
+ ld hl, PartySpecies
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld a, [hl]
+ ld [wd265], a
+
+; Get FlyMon icon
+ ld e, 8 ; starting tile in VRAM
+ callba GetSpeciesIcon
+
+; Animation/palette
+ ld de, 0
+ ld a, $0
+ call Function3b2a
+
+ ld hl, 3
+ add hl, bc
+ ld [hl], 8
+ ld hl, 2
+ add hl, bc
+ ld [hl], 0
+ ret
+; 91fa6
+
+TownMapPlayerIcon: ; 91fa6
+; Draw the player icon at town map location in a
+ push af
+
+ callba GetPlayerIcon
+
+; Standing icon
+ ld hl, VTiles0 tile $10
+ ld c, 4 ; # tiles
+ call Request2bpp
+
+; Walking icon
+ ld hl, $c0
+ add hl, de
+ ld d, h
+ ld e, l
+ ld hl, VTiles0 tile $14
+ ld c, 4 ; # tiles
+ ld a, BANK(ChrisSpriteGFX) ; does nothing
+ call Request2bpp
+
+; Animation/palette
+ ld de, 0
+ ld b, $0a ; Male
+ ld a, [PlayerGender]
+ bit 0, a
+ jr z, .asm_91fd3
+ ld b, $1e ; Female
+.asm_91fd3
+ ld a, b
+ call Function3b2a
+
+ ld hl, $3
+ add hl, bc
+ ld [hl], $10
+
+ pop af
+ ld e, a
+ push bc
+ callba GetLandmarkCoords
+ pop bc
+
+ ld hl, 4
+ add hl, bc
+ ld [hl], e
+ ld hl, 5
+ add hl, bc
+ ld [hl], d
+ ret
+; 0x91ff2
+
+Function91ff2: ; 91ff2
+ ld hl, TownMapGFX
+ ld de, VTiles2
+ lb bc, BANK(TownMapGFX), $30
+ call DecompressRequest2bpp
+ ret
+; 91fff
+
+
+JohtoMap: ; 91fff
+INCBIN "gfx/misc/johto.bin"
+; 92168
+
+KantoMap: ; 92168
+INCBIN "gfx/misc/kanto.bin"
+; 922d1
+
+
+GFX_922d1: ; 922d1
+INCBIN "gfx/unknown/0922d1.2bpp"
+GFX_922e1: ; 922e1
+INCBIN "gfx/unknown/0922e1.2bpp"
+GFX_92301: ; 92301
+INCBIN "gfx/unknown/092301.2bpp"
diff --git a/engine/link.asm b/engine/link.asm
index 38ac235fb..a1fa0661b 100755
--- a/engine/link.asm
+++ b/engine/link.asm
@@ -1,6 +1,6 @@
LinkCommunications: ; 28000
- call WhiteBGMap
- ld c, $50
+ call ClearBGPalettes
+ ld c, 80
call DelayFrames
call ClearScreen
call ClearSprites
@@ -8,7 +8,7 @@ LinkCommunications: ; 28000
xor a
ld [hSCX], a
ld [hSCY], a
- ld c, $50
+ ld c, 80
call DelayFrames
call ClearScreen
call UpdateSprites
@@ -431,7 +431,7 @@ Function28177: ; 28177
ld de, OTName
ld bc, NAME_LENGTH
call CopyBytes
- call Function222a
+ call ReturnToMapFromSubmenu
ld a, [wc2d7]
push af
ld a, $1
@@ -509,7 +509,7 @@ UnknownText_0x283ed: ; 0x283ed
Function283f2: ; 283f2
ld a, $1
- ld [$ffcc], a
+ ld [hFFCC], a
.asm_283f6
ld a, [hl]
ld [hSerialSend], a
@@ -521,14 +521,14 @@ Function283f2: ; 283f2
.asm_28401
dec a
jr nz, .asm_28401
- ld a, [$ffcc]
+ ld a, [hFFCC]
and a
ld a, b
pop bc
jr z, .asm_28411
dec hl
xor a
- ld [$ffcc], a
+ ld [hFFCC], a
jr .asm_283f6
.asm_28411
@@ -2172,7 +2172,7 @@ Function28fa1: ; 28fa1
Function28fdb: ; 28fdb
xor a
ld [wJumptableIndex], a
- call WhiteBGMap
+ call ClearBGPalettes
call ClearSprites
call ClearTileMap
call DisableLCD
@@ -2495,7 +2495,7 @@ Function29220: ; 29220
; 29229
Function29229: ; 29229
- call WhiteBGMap
+ call ClearBGPalettes
call ClearTileMap
call ClearSprites
call DisableLCD
@@ -2623,7 +2623,7 @@ Function292ec: ; 292ec
Function292f6: ; 292f6
push af
- call WhiteBGMap
+ call ClearBGPalettes
call WaitTop
ld a, VBGMap1 / $100
ld [hBGMapAddress + 1], a
@@ -3902,7 +3902,7 @@ Function29dba: ; 29dba
Function29e0c: ; 29e0c
xor a
- ld [$ffca], a
+ ld [hFFCA], a
ld a, [wcf5b]
ld h, a
ld a, [wcf5c]
diff --git a/engine/map_objects.asm b/engine/map_objects.asm
index bc1ce4a67..4c2adc9aa 100644
--- a/engine/map_objects.asm
+++ b/engine/map_objects.asm
@@ -655,7 +655,7 @@ Function467b: ; 467b
ld hl, OBJECT_12
add hl, bc
ld [hl], a
- ld hl, OBJECT_27
+ ld hl, OBJECT_MOVEMENT_BYTE_INDEX
add hl, bc
rept 3
ld [hli], a
@@ -848,28 +848,28 @@ RestoreDefaultMovement: ; 4769
; 4780
ClearObjectStructField27: ; 4780
- ld hl, OBJECT_27
+ ld hl, OBJECT_MOVEMENT_BYTE_INDEX
add hl, bc
ld [hl], 0
ret
; 4787
IncrementObjectStructField27: ; 4787
- ld hl, OBJECT_27
+ ld hl, OBJECT_MOVEMENT_BYTE_INDEX
add hl, bc
inc [hl]
ret
; 478d
DecrementObjectStructField27: ; 478d
- ld hl, OBJECT_27
+ ld hl, OBJECT_MOVEMENT_BYTE_INDEX
add hl, bc
dec [hl]
ret
; 4793
JumptoObjectStructField27: ; 4793
- ld hl, OBJECT_27
+ ld hl, OBJECT_MOVEMENT_BYTE_INDEX
add hl, bc
ld a, [hl]
pop hl
@@ -1043,17 +1043,17 @@ Function47dd: ; 47dd
.ObeyDPad: ; 487c
ld hl, Function5000
- jp Function5041
+ jp HandleMovementData
; 4882
.Movement08: ; 4882
ld hl, Function5015
- jp Function5041
+ jp HandleMovementData
; 4888
.Movement09: ; 4888
ld hl, Function5026
- jp Function5041
+ jp HandleMovementData
; 488e
.Movement0a: ; 488e
@@ -1070,7 +1070,7 @@ Function47dd: ; 47dd
.Movement0d: ; 4897
ld hl, Function5000
- jp Function5041
+ jp HandleMovementData
; 489d
.Movement0e: ; 489d
@@ -1079,12 +1079,12 @@ Function47dd: ; 47dd
.Follow: ; 48a0
ld hl, Function54e6
- jp Function5041
+ jp HandleMovementData
; 48a6
.Script: ; 48a6
ld hl, Function500e
- jp Function5041
+ jp HandleMovementData
; 48ac
.Strength: ; 48ac
@@ -1149,12 +1149,15 @@ Function47dd: ; 47dd
ld hl, OBJECT_MAP_X
add hl, bc
ld d, [hl]
+
ld hl, OBJECT_MAP_Y
add hl, bc
ld e, [hl]
+
ld hl, OBJECT_32
add hl, bc
ld a, [hl]
+
push bc
call GetObjectStruct
ld hl, OBJECT_DIRECTION_WALKING
@@ -1162,6 +1165,7 @@ Function47dd: ; 47dd
ld a, [hl]
cp STANDING
jr z, .standing
+
ld hl, OBJECT_NEXT_MAP_X
add hl, bc
ld a, [hl]
@@ -2400,11 +2404,14 @@ UpdateJumpPosition: ; 4fd5
; 5000
Function5000: ; unscripted?
+; copy [wc3de] to [wc2df]
ld a, [wc2de]
ld hl, wc2df
ld [hl], a
- ld a, $3e
+; load [wc2de] with movement_step_sleep_1
+ ld a, movement_step_sleep_1
ld [wc2de], a
+; recover the previous value of [wc2de]
ld a, [hl]
ret
; 500e
@@ -2416,7 +2423,7 @@ Function500e: ; scripted
; 5015
Function5015: ; 5015
- ld hl, OBJECT_27
+ ld hl, OBJECT_MOVEMENT_BYTE_INDEX
add hl, bc
ld e, [hl]
inc [hl]
@@ -2431,7 +2438,7 @@ Function5015: ; 5015
; 5026
Function5026: ; 5026
- ld hl, OBJECT_27
+ ld hl, OBJECT_MOVEMENT_BYTE_INDEX
add hl, bc
ld e, [hl]
inc [hl]
@@ -2446,16 +2453,16 @@ Function5026: ; 5026
; 5037
Function5037: ; 5037
- ld hl, Function503d
- jp Function5041
+ ld hl, GetMovementPerson
+ jp HandleMovementData
; 503d
-Function503d: ; 503d
+GetMovementPerson: ; 503d
ld a, [wMovementPerson]
ret
; 5041
-Function5041: ; 5041
+HandleMovementData: ; 5041
call CopyMovementPointer
.loop
xor a
@@ -2484,7 +2491,7 @@ GetMovementByte: ; 505e
jp [hl]
; 5065
-Function5065: ; 5065
+ContinueReadingMovement: ; 5065
ld a, 1
ld [wc2ea], a
ret
@@ -2563,7 +2570,8 @@ Function54e6: ; 54e6
.done
call Function550a
ret c
- ld a, $3e
+
+ ld a, movement_step_sleep_1
ret
; 550a
@@ -2585,7 +2593,7 @@ Function550a: ; 550a
.nope
ld a, $ff
ld [wObjectFollow_Follower], a
- ld a, $47
+ ld a, movement_step_end
scf
ret
; 5529
@@ -2696,6 +2704,7 @@ Function5582: ; 5582
Function55ac: ; 55ac
call FindFirstEmptyObjectStruct
ret nc
+
ld d, h
ld e, l
callba Function8286
@@ -2703,11 +2712,14 @@ Function55ac: ; 55ac
; 55b9
Function55b9: ; 55b9
+; load into wc2f0:
+; -1, -1, [de], [de + 1], [de + 2], [hMapObjectIndexBuffer], [MapX], [MapY], -1
ld hl, wc2f0
ld [hl], -1
inc hl
ld [hl], -1
inc hl
+
ld a, [de]
inc de
ld [hli], a
@@ -2716,8 +2728,10 @@ Function55b9: ; 55b9
ld [hli], a
ld a, [de]
ld [hli], a
+
ld a, [hMapObjectIndexBuffer]
ld [hli], a
+
push hl
ld hl, OBJECT_MAP_X
add hl, bc
@@ -2726,6 +2740,7 @@ Function55b9: ; 55b9
add hl, bc
ld e, [hl]
pop hl
+
ld [hl], d
inc hl
ld [hl], e
@@ -2786,17 +2801,21 @@ Function561d: ; 561d
Function5629: ; 5629
cp NUM_OBJECTS
ret nc
+
call GetMapObject
ld hl, MAPOBJECT_OBJECT_STRUCT_ID
add hl, bc
ld a, [hl]
cp -1
ret z
+
cp NUM_OBJECT_STRUCTS
ret nc
+
call GetObjectStruct
call GetObjectSprite
ret z
+
call Function5673
ret
; 5645
@@ -2977,9 +2996,9 @@ Function56cd: ; 56cd
.ok7
ld a, d
- ld [$ffbf], a
+ ld [hFFBF], a
.loop
- ld a, [$ffbf]
+ ld a, [hFFBF]
ld d, a
ld a, [hUsedSpriteTile]
add e
@@ -3180,7 +3199,7 @@ ResetFollower: ; 5847
cp -1
ret z
call GetObjectStruct
- callba Function58e3
+ callba Function58e3 ; no need to bankswitch
ld a, -1
ld [wObjectFollow_Follower], a
ret
@@ -3294,16 +3313,19 @@ Function58e3: ; 58e3
add hl, bc
ld a, [hl]
cp -1
- jp z, Function5903
+ jp z, Function5903 ; a jr would have been appropriate here
+
push bc
call GetMapObject
ld hl, MAPOBJECT_MOVEMENT
add hl, bc
ld a, [hl]
pop bc
+
ld hl, OBJECT_MOVEMENTTYPE
add hl, bc
ld [hl], a
+
ld hl, OBJECT_09
add hl, bc
ld [hl], 0
@@ -3322,6 +3344,7 @@ Function5903: ; 5903
ld hl, OBJECT_MOVEMENTTYPE
add hl, bc
ld [hl], a
+
ld hl, OBJECT_09
add hl, bc
ld [hl], 0
@@ -3495,7 +3518,7 @@ Function59f3: ; 59f3
.next
ld a, [hli]
ld d, a
- and %11110000
+ and $f0
ret z
cp c
jr nz, .next
@@ -3503,20 +3526,20 @@ Function59f3: ; 59f3
push bc
push hl
ld a, d
- and %00001111
- call Function5ac2
- call Function5a0d
+ and $f
+ call .GetObjectStructPointer
+ call .asm_5a0d
pop hl
pop bc
jr .next
; 5a0d
-Function5a0d: ; 5a0d
+.asm_5a0d: ; 5a0d
ld hl, OBJECT_SPRITE_TILE
add hl, bc
ld a, [hl]
and %01111111
- ld [$ffc1], a
+ ld [hFFC1], a
xor a
bit 7, [hl]
@@ -3550,7 +3573,7 @@ Function5a0d: ; 5a0d
jr z, .skip4
or %10000000
.skip4
- ld [$ffc2], a
+ ld [hFFC2], a
ld hl, OBJECT_SPRITE_X
add hl, bc
@@ -3565,7 +3588,7 @@ Function5a0d: ; 5a0d
ld e, a
ld a, [wd14c]
add e
- ld [$ffbf], a
+ ld [hFFBF], a
ld hl, OBJECT_SPRITE_Y
add hl, bc
@@ -3580,7 +3603,7 @@ Function5a0d: ; 5a0d
ld e, a
ld a, [wd14d]
add e
- ld [$ffc0], a
+ ld [hFFC0], a
ld hl, OBJECT_FACING_STEP
add hl, bc
@@ -3609,14 +3632,14 @@ Function5a0d: ; 5a0d
jr nc, .full
.addsprite
- ld a, [$ffc0]
+ ld a, [hFFC0]
add [hl]
inc hl
ld [bc], a
inc c
- ld a, [$ffbf]
+ ld a, [hFFBF]
add [hl]
inc hl
@@ -3626,7 +3649,7 @@ Function5a0d: ; 5a0d
ld e, [hl]
inc hl
- ld a, [$ffc1]
+ ld a, [hFFC1]
bit 2, e
jr z, .nope1
xor a
@@ -3640,7 +3663,7 @@ Function5a0d: ; 5a0d
ld a, e
bit 1, a
jr z, .nope2
- ld a, [$ffc2]
+ ld a, [hFFC2]
or e
.nope2
and %11110000
@@ -3665,7 +3688,7 @@ Function5a0d: ; 5a0d
ret
; 5ac2
-Function5ac2: ; 5ac2
+.GetObjectStructPointer: ; 5ac2
ld c, a
ld b, 0
ld hl, .Addresses
diff --git a/engine/map_setup.asm b/engine/map_setup.asm
index 8ae9838f0..09fc4d155 100644
--- a/engine/map_setup.asm
+++ b/engine/map_setup.asm
@@ -17,28 +17,28 @@ endr
; 15377
MapSetupScripts: ; 15377
- dw MapSetupScript1
- dw MapSetupScript2
- dw MapSetupScript3
- dw MapSetupScript4
- dw MapSetupScript5
- dw MapSetupScript6
- dw MapSetupScript7
- dw MapSetupScript8
- dw MapSetupScript9
- dw MapSetupScript10
- dw MapSetupScript11
- dw MapSetupScript12
+ dw MapSetupScript_Warp
+ dw MapSetupScript_Continue
+ dw MapSetupScript_ReloadMap
+ dw MapSetupScript_Teleport
+ dw MapSetupScript_Door
+ dw MapSetupScript_Fall
+ dw MapSetupScript_Connection
+ dw MapSetupScript_LinkReturn
+ dw MapSetupScript_Train
+ dw MapSetupScript_Submenu
+ dw MapSetupScript_BadWarp
+ dw MapSetupScript_Fly
; 1538f
-MapSetupScript4: ; 1538f
+MapSetupScript_Teleport: ; 1538f
db map_prolong_sprites
-MapSetupScript12: ; 15390
+MapSetupScript_Fly: ; 15390
db map_fade_out_palettes
db map_keep_roam
-MapSetupScript1: ; 15392
+MapSetupScript_Warp: ; 15392
db map_lcd_off
db map_sound_off
db map_load_spawn
@@ -63,7 +63,7 @@ MapSetupScript1: ; 15392
db map_wildmons
db map_end_setup_script
-MapSetupScript11: ; 153a9
+MapSetupScript_BadWarp: ; 153a9
db map_load_spawn
db map_attributes
db map_change_callback
@@ -87,7 +87,7 @@ MapSetupScript11: ; 153a9
db map_wildmons
db map_end_setup_script
-MapSetupScript7: ; 153bf
+MapSetupScript_Connection: ; 153bf
db map_animations_off
db map_load_connection
db map_attributes
@@ -106,13 +106,13 @@ MapSetupScript7: ; 153bf
db map_animations_on
db map_end_setup_script
-MapSetupScript6: ; 153d0
+MapSetupScript_Fall: ; 153d0
db map_prolong_sprites
-MapSetupScript5: ; 153d1
+MapSetupScript_Door: ; 153d1
db map_fade_out_palettes
-MapSetupScript9: ; 153d2
+MapSetupScript_Train: ; 153d2
db map_load_warp
db map_attributes
db map_warp_face
@@ -135,7 +135,7 @@ MapSetupScript9: ; 153d2
db map_update_roam
db map_end_setup_script
-MapSetupScript3: ; 153e7
+MapSetupScript_ReloadMap: ; 153e7
db map_fade
db map_clear_bg_palettes
db map_lcd_off
@@ -153,7 +153,7 @@ MapSetupScript3: ; 153e7
db map_wildmons
db map_end_setup_script
-MapSetupScript8: ; 153f7
+MapSetupScript_LinkReturn: ; 153f7
db map_fade
db map_lcd_off
db map_sound_off
@@ -172,7 +172,7 @@ MapSetupScript8: ; 153f7
db map_text_scroll_off
db map_end_setup_script
-MapSetupScript2: ; 15408
+MapSetupScript_Continue: ; 15408
db map_lcd_off
db map_sound_off
db map_attributes_2
@@ -192,7 +192,7 @@ MapSetupScript2: ; 15408
db map_wildmons
db map_end_setup_script
-MapSetupScript10: ; 1541a
+MapSetupScript_Submenu: ; 1541a
db map_load_blocks
db map_connection_blocks
db map_end_setup_script
@@ -245,7 +245,7 @@ endr
MapSetupCommands: ; 15440
dba EnableLCD ; 00
dba DisableLCD ; 01
- dba SoundRestart ; 02
+ dba MapSetup_Sound_Off ; 02
dba PlayMapMusic ; 03
dba RestartMapMusic ; 04
dba FadeToMapMusic ; 05
@@ -271,9 +271,9 @@ MapSetupCommands: ; 15440
dba LoadWarpData ; 19
dba LoadMapAttributes ; 1a
dba LoadMapAttributes_IgnoreHidden ; 1b
- dba WhiteBGMap ; 1c
- dba FadeBlackBGMap ; 1d
- dba FadeInBGMap ; 1e
+ dba ClearBGPalettes ; 1c
+ dba FadeOutPalettes ; 1d
+ dba FadeInPalettes ; 1e
dba GetCoordOfUpperLeftCorner ; 1f
dba RestoreFacingAfterWarp ; 20
dba SpawnInFacingDown ; 21
diff --git a/engine/movement.asm b/engine/movement.asm
index 0a6851ed4..21dd89e9f 100644
--- a/engine/movement.asm
+++ b/engine/movement.asm
@@ -61,32 +61,32 @@ MovementPointers: ; 5075
dw Movement_fix_facing ; 3b
dw Movement_3c ; 3c
dw Movement_hide_person ; 3d
- dw Movement_show_person ; 3e
- dw Movement_3f ; 3f
- dw Movement_40 ; 40
- dw Movement_41 ; 41
- dw Movement_42 ; 42
- dw Movement_43 ; 43
- dw Movement_44 ; 44
- dw Movement_accelerate_last ; 45
+ dw Movement_step_sleep_1 ; 3e
+ dw Movement_step_sleep_2 ; 3f
+ dw Movement_step_sleep_3 ; 40
+ dw Movement_step_sleep_4 ; 41
+ dw Movement_step_sleep_5 ; 42
+ dw Movement_step_sleep_6 ; 43
+ dw Movement_step_sleep_7 ; 44
+ dw Movement_step_sleep_8 ; 45
dw Movement_step_sleep ; 46
dw Movement_step_end ; 47
dw Movement_48 ; 48
dw Movement_remove_person ; 49
- dw Movement_4a ; 4a
+ dw Movement_step_loop ; 4a
dw Movement_4b ; 4b
dw Movement_teleport_from ; 4c
dw Movement_teleport_to ; 4d
dw Movement_skyfall ; 4e
dw Movement_step_wait5 ; 4f
dw Movement_50 ; 50
- dw Movement_51 ; 51
- dw Movement_52 ; 52
+ dw Movement_fish_got_bite ; 51
+ dw Movement_fish_cast_rod ; 52
dw Movement_hide_emote ; 53
dw Movement_show_emote ; 54
dw Movement_step_shake ; 55
dw Movement_56 ; 56
- dw Movement_57 ; 57
+ dw Movement_rock_smash ; 57
dw Movement_58 ; 58
dw Movement_59 ; 59
; 5129
@@ -139,7 +139,7 @@ Movement_step_wait5: ; 5145
ld [hl], $3
ld hl, OBJECT_DIRECTION_WALKING
add hl, bc
- ld [hl], $ff
+ ld [hl], STANDING
ret
; 516a
@@ -156,14 +156,14 @@ Movement_58: ; 516a
ld [hl], a
ld hl, OBJECT_DIRECTION_WALKING
add hl, bc
- ld [hl], $ff
+ ld [hl], STANDING
ld hl, OBJECT_09
add hl, bc
ld [hl], $12
ret
; 5189
-Movement_51: ; 5189
+Movement_fish_got_bite: ; 5189
ld hl, OBJECT_11
add hl, bc
ld [hl], $6
@@ -173,7 +173,7 @@ Movement_51: ; 5189
ret
; 5196
-Movement_57: ; 5196
+Movement_rock_smash: ; 5196
call GetMovementByte
ld hl, OBJECT_STEP_DURATION
add hl, bc
@@ -187,7 +187,7 @@ Movement_57: ; 5196
ret
; 51ab
-Movement_52: ; 51ab
+Movement_fish_cast_rod: ; 51ab
ld hl, OBJECT_11
add hl, bc
ld [hl], $6
@@ -197,11 +197,11 @@ Movement_52: ; 51ab
ret
; 51b8
-Movement_4a: ; 51b8
- ld hl, OBJECT_27
+Movement_step_loop: ; 51b8
+ ld hl, OBJECT_MOVEMENT_BYTE_INDEX
add hl, bc
ld [hl], $0
- jp Function5065
+ jp ContinueReadingMovement
; 51c1
Movement_step_end: ; 51c1
@@ -209,11 +209,14 @@ Movement_step_end: ; 51c1
ld hl, OBJECT_MOVEMENTTYPE
add hl, bc
ld [hl], a
- ld hl, OBJECT_27
+
+ ld hl, OBJECT_MOVEMENT_BYTE_INDEX
add hl, bc
ld [hl], $0
+
ld hl, VramState
res 7, [hl]
+
ld hl, OBJECT_09
add hl, bc
ld [hl], $1
@@ -225,16 +228,20 @@ Movement_48: ; 51db
ld hl, OBJECT_MOVEMENTTYPE
add hl, bc
ld [hl], a
- ld hl, OBJECT_27
+
+ ld hl, OBJECT_MOVEMENT_BYTE_INDEX
add hl, bc
ld [hl], $0
+
call GetMovementByte
ld hl, OBJECT_STEP_DURATION
add hl, bc
ld [hl], a
+
ld hl, OBJECT_09
add hl, bc
ld [hl], $3
+
ld hl, VramState
res 7, [hl]
ret
@@ -245,10 +252,10 @@ Movement_remove_person: ; 51fd
ld hl, wObjectFollow_Leader
ld a, [hMapObjectIndexBuffer]
cp [hl]
- jr nz, .asm_520a
- ld [hl], $ff
+ jr nz, .not_leading
+ ld [hl], -1
-.asm_520a
+.not_leading
ld hl, VramState
res 7, [hl]
ret
@@ -258,43 +265,45 @@ Movement_4b: ; 5210
ld hl, OBJECT_11
add hl, bc
ld [hl], $1
+
ld hl, OBJECT_09
add hl, bc
ld [hl], $4
+
ld hl, VramState
res 7, [hl]
ret
; 5222
-Movement_show_person: ; 5222
+Movement_step_sleep_1: ; 5222
ld a, $1
jr Function5247
-Movement_3f: ; 5226
+Movement_step_sleep_2: ; 5226
ld a, $2
jr Function5247
-Movement_40: ; 522a
+Movement_step_sleep_3: ; 522a
ld a, $3
jr Function5247
-Movement_41: ; 522e
+Movement_step_sleep_4: ; 522e
ld a, $4
jr Function5247
-Movement_42: ; 5232
+Movement_step_sleep_5: ; 5232
ld a, $5
jr Function5247
-Movement_43: ; 5236
+Movement_step_sleep_6: ; 5236
ld a, $6
jr Function5247
-Movement_44: ; 523a
+Movement_step_sleep_7: ; 523a
ld a, $7
jr Function5247
-Movement_accelerate_last: ; 523e
+Movement_step_sleep_8: ; 523e
ld a, $8
jr Function5247
@@ -309,15 +318,18 @@ Function5247: ; 5247
ld hl, OBJECT_STEP_DURATION
add hl, bc
ld [hl], a
+
ld hl, OBJECT_09
add hl, bc
ld [hl], $3
+
ld hl, OBJECT_11
add hl, bc
ld [hl], $1
+
ld hl, OBJECT_DIRECTION_WALKING
add hl, bc
- ld [hl], $ff
+ ld [hl], STANDING
ret
; 525f
@@ -334,7 +346,7 @@ Movement_50: ; 525f
ld [hl], $3
ld hl, OBJECT_DIRECTION_WALKING
add hl, bc
- ld [hl], $ff
+ ld [hl], STANDING
ret
; 5279
@@ -351,7 +363,7 @@ Movement_56: ; 5279
ld [hl], $b
ld hl, OBJECT_DIRECTION_WALKING
add hl, bc
- ld [hl], $ff
+ ld [hl], STANDING
ret
; 5293
@@ -359,52 +371,52 @@ Movement_38: ; 5293
ld hl, OBJECT_FLAGS1
add hl, bc
res 3, [hl]
- jp Function5065
+ jp ContinueReadingMovement
; 529c
Movement_39: ; 529c
ld hl, OBJECT_FLAGS1
add hl, bc
set 3, [hl]
- jp Function5065
+ jp ContinueReadingMovement
; 52a5
Movement_remove_fixed_facing: ; 52a5
ld hl, OBJECT_FLAGS1
add hl, bc
res 2, [hl]
- jp Function5065
+ jp ContinueReadingMovement
; 52ae
Movement_fix_facing: ; 52ae
ld hl, OBJECT_FLAGS1
add hl, bc
set 2, [hl]
- jp Function5065
+ jp ContinueReadingMovement
; 52b7
Movement_3c: ; 52b7
ld hl, OBJECT_FLAGS1
add hl, bc
res 0, [hl]
- jp Function5065
+ jp ContinueReadingMovement
; 52c0
Movement_hide_person: ; 52c0
ld hl, OBJECT_FLAGS1
add hl, bc
set 0, [hl]
- jp Function5065
+ jp ContinueReadingMovement
; 52c9
Movement_hide_emote: ; 52c9
call Function5579
- jp Function5065
+ jp ContinueReadingMovement
; 52cf
Movement_show_emote: ; 52cf
call Function5547
- jp Function5065
+ jp ContinueReadingMovement
; 52d5
Movement_step_shake: ; 52d5
@@ -413,7 +425,7 @@ Movement_step_shake: ; 52d5
call GetMovementByte
call Function5565
- jp Function5065
+ jp ContinueReadingMovement
; 52de
Movement_turn_head_down: ; 52de
@@ -441,7 +453,7 @@ TurnHead: ; 52ee
ld [hl], $1
ld hl, OBJECT_DIRECTION_WALKING
add hl, bc
- ld [hl], $ff
+ ld [hl], STANDING
ret
; 5300
diff --git a/engine/namingscreen.asm b/engine/namingscreen.asm
index 4618f4e20..21ec969b4 100755
--- a/engine/namingscreen.asm
+++ b/engine/namingscreen.asm
@@ -40,7 +40,7 @@ NamingScreen: ; 116c1
; 116f8
Function116f8: ; 116f8
- call WhiteBGMap
+ call ClearBGPalettes
ld b, $8
call GetSGBLayout
call DisableLCD
diff --git a/engine/pack.asm b/engine/pack.asm
index aa20184b9..2ba9c9d3a 100644
--- a/engine/pack.asm
+++ b/engine/pack.asm
@@ -594,7 +594,7 @@ Function103fd: ; 103fd
ld [Options], a
ld a, $8
ld [PartyMenuActionText], a
- call WhiteBGMap
+ call ClearBGPalettes
callba Function5004f
callba Function50405
callba Function503e0
@@ -922,7 +922,7 @@ Function105dc: ; 105dc (4:45dc)
ret
.asm_1066c: ; 1066c (4:466c)
- call WhiteBGMap
+ call ClearBGPalettes
jr .asm_1067e
.BattleOnly: ; 10671 (4:4671)
@@ -1401,7 +1401,7 @@ Function108d4: ; 108d4 (4:48d4)
Function10955: ; 10955
- call WhiteBGMap
+ call ClearBGPalettes
call ClearTileMap
call ClearSprites
call DisableLCD
diff --git a/engine/party_menu.asm b/engine/party_menu.asm
index 6c27cb73e..4d50ee8e4 100644
--- a/engine/party_menu.asm
+++ b/engine/party_menu.asm
@@ -2,10 +2,10 @@ SelectMonFromParty: ; 50000
call DisableSpriteUpdates
xor a
ld [PartyMenuActionText], a
- call WhiteBGMap
+ call ClearBGPalettes
call Function5003f
call WaitBGMap
- call Function32f9
+ call SetPalettes
call DelayFrame
call PartyMenuSelect
call Function2b74
@@ -17,12 +17,12 @@ Function5001d: ; 5001d
ld a, b
ld [PartyMenuActionText], a
call DisableSpriteUpdates
- call WhiteBGMap
+ call ClearBGPalettes
call Function5003f
call WaitBGMap
ld b, $a
call GetSGBLayout
- call Function32f9
+ call SetPalettes
call DelayFrame
call PartyMenuSelect
call Function2b74
@@ -57,43 +57,42 @@ WritePartyMenuTilemap: ; 0x5005f
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld a, " "
call ByteFill ; blank the tilemap
- call Function50396 ; This reads from a pointer table???
+ call GetPartyMenuTilemapPointers ; This reads from a pointer table???
.loop
ld a, [hli]
- cp -1
- jr z, .asm_50084 ; 0x5007a $8
+ cp $ff
+ jr z, .end ; 0x5007a $8
push hl
- ld hl, .jumptable
+ ld hl, .Jumptable
rst JumpTable
pop hl
jr .loop ; 0x50082 $f3
-
-.asm_50084
+.end
pop af
ld [Options], a
ret
; 0x50089
-.jumptable: ; 50089
- dw .displaynicks ; 0
- dw .drawhpbars ; 1
- dw Function50138 ; 2
- dw Function50176 ; 3
- dw Function501b2 ; 4
- dw Function501e0 ; 5
- dw Function5022f ; 6
- dw Function502b1 ; 7
- dw Function50307 ; 8
+.Jumptable: ; 50089
+ dw PlacePartyNicknames
+ dw PlacePartyHPBar
+ dw PlacePartyMenuHPDigits
+ dw PlacePartyMonLevel
+ dw PlacePartyMonStatus
+ dw PlacePartyMonTMHMCompatibility
+ dw PlacePartyMonEvoStoneCompatibility
+ dw PlacePartyMonGender
+ dw PlacePartyMonMobileBattleSelection
; 5009b
-.displaynicks: ; 5009b
+PlacePartyNicknames: ; 5009b
hlcoord 3, 1
ld a, [PartyCount]
and a
- jr z, .done
+ jr z, .end
ld c, a
ld b, $0
-.loop2
+.loop
push bc
push hl
push hl
@@ -103,28 +102,28 @@ WritePartyMenuTilemap: ; 0x5005f
pop hl
call PlaceString
pop hl
- ld de, $0028
+ ld de, 2 * SCREEN_WIDTH
add hl, de
pop bc
inc b
dec c
- jr nz, .loop2
+ jr nz, .loop
-.done
+.end
rept 2
dec hl
endr
- ld de, .cancelstring
+ ld de, .CANCEL
call PlaceString
ret
; 500c8
-.cancelstring: ; 500c8
+.CANCEL: ; 500c8
db "CANCEL@"
; 500cf
-.drawhpbars: ; 500cf
+PlacePartyHPBar: ; 500cf
xor a
ld [wcda9], a
ld a, [PartyCount]
@@ -133,17 +132,17 @@ endr
ld c, a
ld b, $0
hlcoord 11, 2
-.loop3
+.loop
push bc
push hl
- call Function50389
+ call PartyMenuCheckEgg
jr z, .skip
push hl
- call _fillhpbar
+ call PlacePartymonHPBar
pop hl
- ld d, 6
- ld b, 0
- call DrawHPBar
+ ld d, $6
+ ld b, $0
+ call DrawBattleHPBar
ld hl, wcd9b
ld a, [wcda9]
ld c, a
@@ -157,31 +156,31 @@ endr
ld hl, wcda9
inc [hl]
pop hl
- ld de, $0028
+ ld de, 2 * SCREEN_WIDTH
add hl, de
pop bc
inc b
dec c
- jr nz, .loop3
+ jr nz, .loop
ld b, $a
call GetSGBLayout
ret
; 50117
-_fillhpbar: ; 50117
+PlacePartymonHPBar: ; 50117
ld a, b
- ld bc, PartyMon2 - PartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
ld hl, PartyMon1HP
call AddNTimes
ld a, [hli]
or [hl]
- jr nz, .notfainted
+ jr nz, .not_fainted
xor a
ld e, a
ld c, a
ret
-.notfainted
+.not_fainted
dec hl
ld a, [hli]
ld b, a
@@ -191,25 +190,25 @@ _fillhpbar: ; 50117
ld d, a
ld a, [hli]
ld e, a
- predef ComputeHPBarLength
+ predef DrawPartyMenuHPBar
ret
; 50138
-Function50138: ; 50138
+PlacePartyMenuHPDigits: ; 50138
ld a, [PartyCount]
and a
ret z
ld c, a
ld b, $0
hlcoord 13, 1
-.asm_50143
+.loop
push bc
push hl
- call Function50389
- jr z, .asm_5016b
+ call PartyMenuCheckEgg
+ jr z, .next
push hl
ld a, b
- ld bc, PartyMon2 - PartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
ld hl, PartyMon1HP
call AddNTimes
ld e, l
@@ -219,7 +218,7 @@ Function50138: ; 50138
lb bc, 2, 3
call PrintNum
pop de
- ld a, $f3
+ ld a, "/"
ld [hli], a
rept 2
inc de
@@ -227,32 +226,32 @@ endr
lb bc, 2, 3
call PrintNum
-.asm_5016b
+.next
pop hl
- ld de, $0028
+ ld de, 2 * SCREEN_WIDTH
add hl, de
pop bc
inc b
dec c
- jr nz, .asm_50143
+ jr nz, .loop
ret
; 50176
-Function50176: ; 50176
+PlacePartyMonLevel: ; 50176
ld a, [PartyCount]
and a
ret z
ld c, a
ld b, 0
hlcoord 8, 2
-.asm_50181
+.loop
push bc
push hl
- call Function50389
- jr z, .asm_501a7
+ call PartyMenuCheckEgg
+ jr z, .next
push hl
ld a, b
- ld bc, PartyMon2 - PartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
ld hl, PartyMon1Level
call AddNTimes
ld e, l
@@ -260,70 +259,72 @@ Function50176: ; 50176
pop hl
ld a, [de]
cp 100 ; This is distinct from MAX_LEVEL.
- jr nc, .asm_501a1
+ jr nc, .ThreeDigits
ld a, "<LV>"
ld [hli], a
- ld bc, $4102
-.asm_501a1
+ lb bc, PRINTNUM_RIGHTALIGN | 1, 2
+ ; jr .okay
+.ThreeDigits
lb bc, PRINTNUM_RIGHTALIGN | 1, 3
+; .okay
call PrintNum
-.asm_501a7
+.next
pop hl
ld de, SCREEN_WIDTH * 2
add hl, de
pop bc
inc b
dec c
- jr nz, .asm_50181
+ jr nz, .loop
ret
; 501b2
-Function501b2: ; 501b2
+PlacePartyMonStatus: ; 501b2
ld a, [PartyCount]
and a
ret z
ld c, a
ld b, 0
hlcoord 5, 2
-.asm_501bd
+.loop
push bc
push hl
- call Function50389
- jr z, .asm_501d5
+ call PartyMenuCheckEgg
+ jr z, .next
push hl
ld a, b
- ld bc, PartyMon2 - PartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
ld hl, PartyMon1Status
call AddNTimes
ld e, l
ld d, h
pop hl
- call Function50d0a
+ call PlaceStatusString
-.asm_501d5
+.next
pop hl
ld de, SCREEN_WIDTH * 2
add hl, de
pop bc
inc b
dec c
- jr nz, .asm_501bd
+ jr nz, .loop
ret
; 501e0
-Function501e0: ; 501e0
+PlacePartyMonTMHMCompatibility: ; 501e0
ld a, [PartyCount]
and a
ret z
ld c, a
ld b, 0
hlcoord 12, 2
-.asm_501eb
+.loop
push bc
push hl
- call Function50389
- jr z, .asm_5020a
+ call PartyMenuCheckEgg
+ jr z, .next
push hl
ld hl, PartySpecies
ld e, b
@@ -333,56 +334,56 @@ Function501e0: ; 501e0
ld [CurPartySpecies], a
predef CanLearnTMHMMove
pop hl
- call Function50215
+ call .PlaceAbleNotAble
call PlaceString
-.asm_5020a
+.next
pop hl
ld de, SCREEN_WIDTH * 2
add hl, de
pop bc
inc b
dec c
- jr nz, .asm_501eb
+ jr nz, .loop
ret
; 50215
-Function50215: ; 50215
+.PlaceAbleNotAble: ; 50215
ld a, c
and a
- jr nz, .asm_5021d
- ld de, String_50226
+ jr nz, .able
+ ld de, .string_not_able
ret
-.asm_5021d
- ld de, String_50221
+.able
+ ld de, .string_able
ret
; 50221
-String_50221: ; 50221
+.string_able: ; 50221
db "ABLE@"
; 50226
-String_50226: ; 50226
+.string_not_able: ; 50226
db "NOT ABLE@"
; 5022f
-Function5022f: ; 5022f
+PlacePartyMonEvoStoneCompatibility: ; 5022f
ld a, [PartyCount]
and a
ret z
ld c, a
ld b, 0
hlcoord 12, 2
-.asm_5023a
+.loop
push bc
push hl
- call Function50389
- jr z, .asm_5025d
+ call PartyMenuCheckEgg
+ jr z, .next
push hl
ld a, b
- ld bc, PartyMon2 - PartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
ld hl, PartyMon1Species
call AddNTimes
ld a, [hl]
@@ -393,22 +394,22 @@ Function5022f: ; 5022f
rept 2
add hl, de
endr
- call Function50268
+ call .DetermineCompatibility
pop hl
call PlaceString
-.asm_5025d
+.next
pop hl
- ld de, $0028
+ ld de, 2 * SCREEN_WIDTH
add hl, de
pop bc
inc b
dec c
- jr nz, .asm_5023a
+ jr nz, .loop
ret
; 50268
-Function50268: ; 50268
+.DetermineCompatibility: ; 50268
ld de, StringBuffer1
ld a, BANK(EvosAttacksPointers)
ld bc, 2
@@ -422,15 +423,15 @@ Function50268: ; 50268
ld bc, $a
call FarCopyBytes
ld hl, StringBuffer1
-.asm_50287
+.loop2
ld a, [hli]
and a
- jr z, .asm_5029f
+ jr z, .nope
rept 2
inc hl
endr
cp EVOLVE_ITEM
- jr nz, .asm_50287
+ jr nz, .loop2
rept 2
dec hl
endr
@@ -439,35 +440,35 @@ endr
rept 2
inc hl
endr
- jr nz, .asm_50287
- ld de, String_502a3
+ jr nz, .loop2
+ ld de, .string_able
ret
-.asm_5029f
- ld de, String_502a8
+.nope
+ ld de, .string_not_able
ret
; 502a3
-String_502a3: ; 502a3
+.string_able: ; 502a3
db "ABLE@"
; 502a8
-String_502a8: ; 502a8
+.string_not_able: ; 502a8
db "NOT ABLE@"
; 502b1
-Function502b1: ; 502b1
+PlacePartyMonGender: ; 502b1
ld a, [PartyCount]
and a
ret z
ld c, a
ld b, 0
hlcoord 12, 2
-.asm_502bc
+.loop
push bc
push hl
- call Function50389
- jr z, .asm_502e3
+ call PartyMenuCheckEgg
+ jr z, .next
ld [CurPartySpecies], a
push hl
ld a, b
@@ -475,86 +476,86 @@ Function502b1: ; 502b1
xor a
ld [MonType], a
call GetGender
- ld de, String_502fe
- jr c, .asm_502df
- ld de, String_502ee
- jr nz, .asm_502df
- ld de, String_502f5
+ ld de, .unknown
+ jr c, .got_gender
+ ld de, .male
+ jr nz, .got_gender
+ ld de, .female
-.asm_502df
+.got_gender
pop hl
call PlaceString
-.asm_502e3
+.next
pop hl
- ld de, $0028
+ ld de, 2 * SCREEN_WIDTH
add hl, de
pop bc
inc b
dec c
- jr nz, .asm_502bc
+ jr nz, .loop
ret
; 502ee
-String_502ee: ; 502ee
+.male: ; 502ee
db "♂…MALE@"
; 502f5
-String_502f5: ; 502f5
+.female: ; 502f5
db "♀…FEMALE@"
; 502fe
-String_502fe: ; 502fe
+.unknown: ; 502fe
db "…UNKNOWN@"
; 50307
-Function50307: ; 50307
+PlacePartyMonMobileBattleSelection: ; 50307
ld a, [PartyCount]
and a
ret z
ld c, a
ld b, 0
hlcoord 12, 1
-.asm_50312
+.loop
push bc
push hl
- ld de, String_50372
+ ld de, .String_Sanka_Shinai
call PlaceString
pop hl
- ld de, $0028
+ ld de, 2 * SCREEN_WIDTH
add hl, de
pop bc
inc b
dec c
- jr nz, .asm_50312
+ jr nz, .loop
ld a, l
- ld e, $b
+ ld e, PKMN_NAME_LENGTH
sub e
ld l, a
ld a, h
sbc $0
ld h, a
- ld de, String_50379
+ ld de, .String_Kettei_Yameru
call PlaceString
ld b, $3
ld c, $0
ld hl, wd002
ld a, [hl]
-.asm_5033b
+.loop2
push hl
push bc
hlcoord 12, 1
-.asm_50340
+.loop3
and a
- jr z, .asm_5034a
- ld de, $0028
+ jr z, .done
+ ld de, 2 * SCREEN_WIDTH
add hl, de
dec a
- jr .asm_50340
+ jr .loop3
-.asm_5034a
- ld de, String_5036b
+.done
+ ld de, .String_Banme
push hl
call PlaceString
pop hl
@@ -562,7 +563,7 @@ Function50307: ; 50307
push bc
push hl
ld a, c
- ld hl, Strings_50383
+ ld hl, .Strings_1_2_3
call GetNthString
ld d, h
ld e, l
@@ -575,24 +576,24 @@ Function50307: ; 50307
inc c
dec b
ret z
- jr .asm_5033b
+ jr .loop2
; 5036b
-String_5036b: ; 5036b
+.String_Banme: ; 5036b
db " ばんめ @" ; Place
; 50372
-String_50372: ; 50372
+.String_Sanka_Shinai: ; 50372
db "さんかしない@" ; Cancel
; 50379
-String_50379: ; 50379
+.String_Kettei_Yameru: ; 50379
db "けってい やめる@" ; Quit
; 50383
-Strings_50383: ; 50383
+.Strings_1_2_3: ; 50383
db "1@", "2@", "3@" ; 1st, 2nd, 3rd
; 50389
-Function50389: ; 50389
+PartyMenuCheckEgg: ; 50389
ld a, PartySpecies % $100
add b
ld e, a
@@ -604,15 +605,15 @@ Function50389: ; 50389
ret
; 50396
-Function50396: ; 50396
+GetPartyMenuTilemapPointers: ; 50396
ld a, [PartyMenuActionText]
and $f0
- jr nz, .override
+ jr nz, .skip
ld a, [PartyMenuActionText]
and $f
ld e, a
ld d, 0
- ld hl, .selectmonmenuoptions
+ ld hl, .Pointers
rept 2
add hl, de
endr
@@ -621,31 +622,32 @@ endr
ld l, a
ret
-.override
- ld hl, .default
+.skip
+ ld hl, .Default
ret
; 503b2
-.selectmonmenuoptions: ; 503b2
- dw .default
- dw .default
- dw .default
- dw .unknown1
- dw .default
- dw .unknown2
- dw .trade
- dw .trade
- dw .default
- dw .unknown3
+.Pointers: ; 503b2
+ dw .Default
+ dw .Default
+ dw .Default
+ dw .TMHM
+ dw .Default
+ dw .EvoStone
+ dw .Gender
+ dw .Gender
+ dw .Default
+ dw .Mobile
; 503c6
-.default: db 0, 1, 2, 3, 4, -1
-.unknown1: db 0, 5, 3, 4, -1
-.unknown2: db 0, 6, 3, 4, -1
-.trade: db 0, 7, 3, 4, -1
-.unknown3: db 0, 8, 3, 4, -1
+.Default: db 0, 1, 2, 3, 4, $ff
+.TMHM: db 0, 5, 3, 4, $ff
+.EvoStone: db 0, 6, 3, 4, $ff
+.Gender: db 0, 7, 3, 4, $ff
+.Mobile: db 0, 8, 3, 4, $ff
; 503e0
+
Function503e0: ; 503e0
ld hl, PartyCount
ld a, [hli]
@@ -653,7 +655,7 @@ Function503e0: ; 503e0
ret z
ld c, a
xor a
- ld [hConnectedMapWidth], a
+ ld [hObjectStructIndexBuffer], a
.asm_503ea
push bc
push hl
@@ -661,9 +663,9 @@ Function503e0: ; 503e0
ld a, BANK(Function8e83f)
ld e, $0
rst FarCall
- ld a, [hConnectedMapWidth]
+ ld a, [hObjectStructIndexBuffer]
inc a
- ld [hConnectedMapWidth], a
+ ld [hObjectStructIndexBuffer], a
pop hl
pop bc
dec c
@@ -671,6 +673,7 @@ Function503e0: ; 503e0
callab Function8cf69
ret
; 50405
+
Function50405: ; 50405
xor a
ld [wd0e3], a
@@ -692,7 +695,7 @@ Function50405: ; 50405
ld a, $1
.asm_50424
- ld [wcfa9], a
+ ld [MenuSelection2], a
ld a, $3
ld [wcfa8], a
ret
@@ -713,7 +716,7 @@ Function5042d: ; 0x5042d
.asm_50444
ld a, $1
.asm_50446
- ld [wcfa9], a
+ ld [MenuSelection2], a
ld a, $3
ld [wcfa8], a
ret
@@ -738,7 +741,7 @@ PartyMenuSelect: ; 0x50457
ld a, [PartyCount]
inc a
ld b, a
- ld a, [wcfa9] ; menu selection?
+ ld a, [MenuSelection2] ; menu selection?
cp b
jr z, .exitmenu ; CANCEL
ld [wd0d8], a
@@ -746,7 +749,7 @@ PartyMenuSelect: ; 0x50457
ld b, a
bit 1, b
jr nz, .exitmenu ; B button?
- ld a, [wcfa9]
+ ld a, [MenuSelection2]
dec a
ld [CurPartyMon], a
ld c, a
@@ -773,7 +776,7 @@ PartyMenuSelect: ; 0x50457
PrintPartyMenuText: ; 5049a
hlcoord 0, 14
- ld bc, $0212
+ lb bc, 2, 18
call TextBox
ld a, [PartyCount]
and a
@@ -920,6 +923,7 @@ UnknownText_0x505bc: ; 0x505bc
db "@"
; 0x505c1
+
Function505c1: ; 505c1
ld e, a
ld d, 0
diff --git a/engine/pokedex.asm b/engine/pokedex.asm
index 9a9e01f8a..c331f4a2a 100644
--- a/engine/pokedex.asm
+++ b/engine/pokedex.asm
@@ -60,7 +60,7 @@ Pokedex: ; 40000
; 40063
InitPokedex: ; 40063
- call WhiteBGMap
+ call ClearBGPalettes
call ClearSprites
call ClearTileMap
call Function414b7
@@ -487,7 +487,7 @@ Function4034f: ; 4034f
ld [wcf64], a
pop af
ld [wcf65], a
- call WhiteBGMap
+ call ClearBGPalettes
call DisableLCD
call Function414fb
call Function4038d
diff --git a/engine/scripting.asm b/engine/scripting.asm
index f94436f67..cbc8c0028 100644
--- a/engine/scripting.asm
+++ b/engine/scripting.asm
@@ -1079,9 +1079,11 @@ ApplyMovement: ; 971fa
ld a, c
callba SetFlagsForMovement_1
pop bc
+
push bc
call SetFlagsForMovement_2
pop bc
+
call GetScriptByte
ld l, a
call GetScriptByte
@@ -1090,6 +1092,7 @@ ApplyMovement: ; 971fa
ld b, a
call GetMovementData
ret c
+
ld a, SCRIPT_WAIT_MOVEMENT
ld [ScriptMode], a
call StopScript
@@ -1102,6 +1105,7 @@ SetFlagsForMovement_2: ; 0x97221
; 0x97228
Script_applymovement2: ; 0x97228
+; apply movement to last talked
; script command 0x6a
; parameters:
; data (MovementPointerLabelParam)
@@ -1426,12 +1430,12 @@ ShowEmoteScript: ; 973b6
.Show
show_emote
- show_person
+ step_sleep_1
step_end
.Hide
hide_emote
- show_person
+ step_sleep_1
step_end
; 973c7
@@ -1460,8 +1464,8 @@ Script_earthquake: ; 0x973c7
; 973eb
EarthquakeMovement: ; 973eb
- step_shake 16
- step_sleep 16
+ step_shake 16 ; the 16 gets overwritten with the script byte
+ step_sleep 16 ; the 16 gets overwritten with the lower 6 bits of the script byte
step_end
EarthquakeMovementEnd
; 973f0
@@ -2847,6 +2851,7 @@ Script_warp: ; 0x97a1d
call LoadMapStatus
call StopScript
ret
+
.not_ok
call GetScriptByte
call GetScriptByte
@@ -3117,6 +3122,7 @@ Script_end: ; 0x97b74
call ExitScriptSubroutine
jr c, .resume
ret
+
.resume
xor a
ld [ScriptRunning], a
diff --git a/engine/slot_machine.asm b/engine/slot_machine.asm
new file mode 100755
index 000000000..075b1ba78
--- /dev/null
+++ b/engine/slot_machine.asm
@@ -0,0 +1,2112 @@
+_SlotMachine:
+ ld hl, Options
+ set 4, [hl]
+ call Function926f7
+ call DelayFrame
+.asm_926d2
+ call Function927af
+ jr nc, .asm_926d2
+ call WaitSFX
+ ld de, SFX_QUIT_SLOTS
+ call PlaySFX
+ call WaitSFX
+ call ClearBGPalettes
+ callba MobileFn_105fd0
+ ld hl, Options
+ res 4, [hl]
+ ld hl, rLCDC ; $ff40
+ res 2, [hl]
+ ret
+
+Function926f7: ; 926f7 (24:66f7)
+ call ClearBGPalettes
+ call ClearTileMap
+ call ClearSprites
+ ld de, MUSIC_NONE
+ call PlayMusic
+ call DelayFrame
+ call DisableLCD
+ ld hl, VBGMap0 tile $00
+ lb bc, 4, 0
+ ld a, $7f
+ call ByteFill
+ ld b, $5
+ call GetSGBLayout
+ callab Function8cf53
+ ld hl, wc6d0
+ ld bc, $48
+ xor a
+ call ByteFill
+ ld hl, Slots2LZ
+ ld de, VTiles0 tile $00
+ call Decompress
+ ld hl, Slots3LZ
+ ld de, VTiles0 tile $40
+ call Decompress
+ ld hl, Slots1LZ
+ ld de, VTiles2 tile $00
+ call Decompress
+ ld hl, Slots2LZ
+ ld de, VTiles2 tile $25
+ call Decompress
+ ld hl, SlotsTilemap
+ decoord 0, 0
+ ld bc, 20 * 12
+ call CopyBytes
+ ld hl, rLCDC ; $ff40
+ set 2, [hl]
+ call EnableLCD
+ ld hl, wc6d0
+ ld bc, $64
+ xor a
+ call ByteFill
+ call Function92a98
+ call Function9279b
+ ld a, $7
+ ld hl, wc300
+ ld [hli], a
+ ld [hl], $40
+ xor a
+ ld [wJumptableIndex], a
+ ld a, $ff
+ ld [wc709], a
+ ld de, MUSIC_GAME_CORNER
+ call PlayMusic
+ xor a
+ ld [wd002], a
+ call Random
+ and $2a
+ ret nz
+ ld a, $1
+ ld [wd002], a
+ ret
+
+Function9279b: ; 9279b (24:679b)
+ ld a, $e4
+ call DmgToCgbBGPals
+ lb de, $e4, $e4
+ ld a, [hCGB]
+ and a
+ jr nz, .asm_927ab
+ lb de, $c0, $e4
+.asm_927ab
+ call DmgToCgbObjPals
+ ret
+
+Function927af: ; 927af (24:67af)
+ ld a, [wJumptableIndex]
+ bit 7, a
+ jr nz, .asm_927d1
+ call Function92844
+ call Function92b0f
+ xor a
+ ld [wc3b5], a
+ callab Function8cfa8
+ call Function927f8
+ call Function927d3
+ call DelayFrame
+ and a
+ ret
+.asm_927d1
+ scf
+ ret
+
+Function927d3: ; 927d3 (24:67d3)
+ ret
+; 927d4 (24:67d4)
+
+Function927d4: ; 927d4
+ ld a, [wc6d0]
+ and a
+ ret nz
+ ld a, [wc6e0]
+ and a
+ ret nz
+ ld a, [wc70c]
+ and a
+ jr nz, .asm_927ea
+ ld a, $e4
+ call DmgToCgbBGPals
+ ret
+
+.asm_927ea
+ ld a, [TextDelayFrames]
+ and $7
+ ret nz
+ ld a, [rBGP]
+ xor %1100
+ call DmgToCgbBGPals
+ ret
+; 927f8
+
+Function927f8: ; 927f8 (24:67f8)
+ hlcoord 5, 1
+ ld de, Coins
+ lb bc, PRINTNUM_LEADINGZEROS | 2, 4
+ call PrintNum
+ hlcoord 11, 1
+ ld de, wc711
+ lb bc, PRINTNUM_LEADINGZEROS | 2, 4
+ call PrintNum
+ ret
+; 92811 (24:6811)
+
+Function92811: ; 92811
+ ld a, [wc709]
+ add 0
+ daa
+ ld e, a
+ and $f
+ add "0"
+ hlcoord 1, 0
+ ld [hl], a
+ ld a, e
+ swap a
+ and $f
+ add "0"
+ hlcoord 0, 0
+ ld [hl], a
+ ret
+; 9282c
+
+Function9282c: ; 9282c
+ ld hl, wcf66
+ ld a, [hl]
+ inc [hl]
+ and $7
+ ret nz
+ ld hl, Sprites + $42
+ ld c, $18
+.asm_92839
+ ld a, [hl]
+ xor $20
+ ld [hli], a
+rept 3
+ inc hl
+endr
+ dec c
+ jr nz, .asm_92839
+ ret
+; 92844
+
+Function92844: ; 92844 (24:6844)
+ ld a, [wJumptableIndex]
+ ld e, a
+ ld d, 0
+ ld hl, Jumptable_92853
+rept 2
+ add hl, de
+endr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; 92853 (24:6853)
+
+
+Jumptable_92853: ; 92853 (24:6853)
+ dw Function9287e
+ dw Function9288e
+ dw Function928c6
+ dw Function928d6
+ dw Function928e6
+ dw Function92900
+ dw Function92910
+ dw Function9292a
+ dw Function9293a
+ dw Function92879
+ dw Function92879
+ dw Function92879
+ dw Function92955
+ dw Function9296b
+ dw Function92987
+ dw Function9299e
+ dw Function929a4
+ dw Function929d9
+ dw Function929f0
+
+
+Function92879: ; 92879 (24:6879)
+ ld hl, wJumptableIndex
+ inc [hl]
+ ret
+
+Function9287e: ; 9287e (24:687e)
+ call Function92879
+ xor a
+ ld [wc70b], a
+ ld [wc70c], a
+ ld a, $ff
+ ld [wc70d], a
+ ret
+
+Function9288e: ; 9288e (24:688e)
+ call Function9307c
+ jr nc, .asm_92899
+ ld a, $12
+ ld [wJumptableIndex], a
+ ret
+.asm_92899
+ call Function92879
+ call Function9303f
+ call Function93002
+ ld a, $20
+ ld [wcf64], a
+ ld a, $4
+ ld [wc6d0], a
+ ld [wc6e0], a
+ ld [wc6f0], a
+ ld a, $4
+ ld [wc6d9], a
+ ld [wc6e9], a
+ ld [wc6f9], a
+ call WaitSFX
+ ld a, SFX_SLOT_MACHINE_START
+ call Function9331e
+ ret
+
+Function928c6: ; 928c6 (24:68c6)
+ ld hl, wcf64
+ ld a, [hl]
+ and a
+ jr z, .asm_928cf
+ dec [hl]
+ ret
+.asm_928cf
+ call Function92879
+ xor a
+ ld [hJoypadSum], a
+ ret
+
+Function928d6: ; 928d6 (24:68d6)
+ ld hl, hJoypadSum ; $ffa5
+ ld a, [hl]
+ and A_BUTTON
+ ret z
+ call Function92879
+ call Function92a2b
+ ld [wc6d0], a
+
+Function928e6: ; 928e6 (24:68e6)
+ ld a, [wc6d0]
+ cp $0
+ ret nz
+ ld a, SFX_STOP_SLOT
+ call Function9331e
+ ld bc, wc6d0
+ ld de, wc700
+ call Function929f6
+ call Function92879
+ xor a
+ ld [hJoypadSum], a
+
+Function92900: ; 92900 (24:6900)
+ ld hl, hJoypadSum ; $ffa5
+ ld a, [hl]
+ and A_BUTTON
+ ret z
+ call Function92879
+ call Function92a2e
+ ld [wc6e0], a
+
+Function92910: ; 92910 (24:6910)
+ ld a, [wc6e0]
+ cp $0
+ ret nz
+ ld a, SFX_STOP_SLOT
+ call Function9331e
+ ld bc, wc6e0
+ ld de, wc703
+ call Function929f6
+ call Function92879
+ xor a
+ ld [hJoypadSum], a
+
+Function9292a: ; 9292a (24:692a)
+ ld hl, hJoypadSum ; $ffa5
+ ld a, [hl]
+ and A_BUTTON
+ ret z
+ call Function92879
+ call Function92a60
+ ld [wc6f0], a
+
+Function9293a: ; 9293a (24:693a)
+ ld a, [wc6f0]
+ cp $0
+ ret nz
+ ld a, SFX_STOP_SLOT
+ call Function9331e
+ ld bc, wc6f0
+ ld de, wc706
+ call Function929f6
+ call Function92879
+ xor a
+ ld [hJoypadSum], a
+ ret
+
+Function92955: ; 92955 (24:6955)
+ ld a, [wc70d]
+ cp $ff
+ jr nz, .asm_92963
+ call Function92879
+ call Function92879
+ ret
+.asm_92963
+ call Function92879
+ ld a, $10
+ ld [wcf64], a
+
+Function9296b: ; 9296b (24:696b)
+ ld hl, wcf64
+ ld a, [hl]
+ and a
+ jr z, .asm_92980
+ dec [hl]
+ srl a
+ ret z
+ ld a, [rOBP0]
+ xor $ff
+ ld e, a
+ ld d, a
+ call DmgToCgbObjPals
+ ret
+.asm_92980
+ call Function9279b
+ call Function92879
+ ret
+
+Function92987: ; 92987 (24:6987)
+ xor a
+ ld [wc70b], a
+ ld [wc70c], a
+ ld a, $e4
+ call DmgToCgbBGPals
+ call Function93124
+ xor a
+ ld [wcf64], a
+ call Function92879
+ ret
+
+Function9299e: ; 9299e (24:699e)
+ call Function93158
+ call Function92879
+
+Function929a4: ; 929a4 (24:69a4)
+ ld hl, wcf64
+ ld a, [hl]
+ inc [hl]
+ and $1
+ ret z
+ ld hl, wc711
+ ld a, [hli]
+ ld d, a
+ or [hl]
+ jr z, .asm_929d5
+ ld e, [hl]
+ dec de
+ ld [hl], e
+ dec hl
+ ld [hl], d
+ ld hl, Coins
+ ld d, [hl]
+ inc hl
+ ld e, [hl]
+ call Function92a04
+ jr c, .asm_929c5
+ inc de
+.asm_929c5
+ ld [hl], e
+ dec hl
+ ld [hl], d
+ ld a, [wcf64]
+ and $7
+ ret z
+ ld de, SFX_GET_COIN_FROM_SLOTS
+ call PlaySFX
+ ret
+.asm_929d5
+ call Function92879
+ ret
+
+Function929d9: ; 929d9 (24:69d9)
+ call Function9304c
+ call WaitPressAorB_BlinkCursor
+ call Function930e9
+ jr c, .asm_929ea
+ ld a, $0
+ ld [wJumptableIndex], a
+ ret
+.asm_929ea
+ ld a, $12
+ ld [wJumptableIndex], a
+ ret
+
+Function929f0: ; 929f0 (24:69f0)
+ ld hl, wJumptableIndex
+ set 7, [hl]
+ ret
+
+Function929f6: ; 929f6 (24:69f6)
+ push de
+ call Function92a12
+ pop de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ ret
+
+Function92a04: ; 92a04 (24:6a04)
+ ld a, d
+ cp 9999 / $100
+ jr c, .asm_92a10
+ ld a, e
+ cp 9999 % $100
+ jr c, .asm_92a10
+ scf
+ ret
+.asm_92a10
+ and a
+ ret
+
+Function92a12: ; 92a12 (24:6a12)
+ ld hl, $3
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr nz, .asm_92a1c
+ ld a, $f
+.asm_92a1c
+ dec a
+ and $f
+ ld e, a
+ ld d, $0
+ ld hl, $1
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ add hl, de
+ ret
+
+Function92a2b: ; 92a2b (24:6a2b)
+ ld a, $7
+ ret
+
+Function92a2e: ; 92a2e (24:6a2e)
+ ld a, [wc70a]
+ cp $2
+ jr c, .asm_92a4e
+ ld a, [wc709]
+ and a
+ jr z, .asm_92a3f
+ cp $ff
+ jr nz, .asm_92a4e
+.asm_92a3f
+ call Function92a51
+ jr nz, .asm_92a4e
+ call Random
+ cp $50
+ jr nc, .asm_92a4e
+ ld a, $a
+ ret
+.asm_92a4e
+ ld a, $8
+ ret
+
+Function92a51: ; 92a51 (24:6a51)
+ ld a, [wc700]
+ and a
+ ret z
+ ld a, [wc701]
+ and a
+ ret z
+ ld a, [wc702]
+ and a
+ ret
+
+Function92a60: ; 92a60 (24:6a60)
+ ld a, [wc70b]
+ and a
+ jr z, .asm_92a95
+ ld a, [wc70c]
+ and a
+ jr z, .asm_92a95
+ ld a, [wc709]
+ and a
+ jr nz, .asm_92a84
+ call Random
+ cp 180
+ jr nc, .asm_92a95
+ cp 120
+ jr nc, .asm_92a92
+ cp 60
+ jr nc, .asm_92a8f
+ ld a, $15
+ ret
+.asm_92a84
+ call Random
+ cp $a0
+ jr nc, .asm_92a95
+ cp $50
+ jr nc, .asm_92a92
+.asm_92a8f
+ ld a, $12
+ ret
+.asm_92a92
+ ld a, $10
+ ret
+.asm_92a95
+ ld a, $9
+ ret
+
+Function92a98: ; 92a98 (24:6a98)
+ ld bc, wc6d0
+ ld hl, $6
+ add hl, bc
+ ld de, Sprites + $40
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld hl, $1
+ add hl, bc
+ ld de, Unknown_93327
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld hl, $8
+ add hl, bc
+ ld [hl], $30
+ call Function92af9
+ ld bc, wc6e0
+ ld hl, $6
+ add hl, bc
+ ld de, Sprites + $60
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld hl, $1
+ add hl, bc
+ ld de, Unknown_93339
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld hl, $8
+ add hl, bc
+ ld [hl], $50
+ call Function92af9
+ ld bc, wc6f0
+ ld hl, $6
+ add hl, bc
+ ld de, Sprites + $80
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld hl, $1
+ add hl, bc
+ ld de, Unknown_9334b
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld hl, $8
+ add hl, bc
+ ld [hl], $70
+ call Function92af9
+ ret
+
+Function92af9: ; 92af9 (24:6af9)
+ ld hl, 0
+ add hl, bc
+ ld [hl], $0
+ ld hl, $3
+ add hl, bc
+ ld [hl], $e
+ ld hl, $4
+ add hl, bc
+ ld [hl], $0
+ call Function92b53
+ ret
+
+Function92b0f: ; 92b0f (24:6b0f)
+ ld bc, wc6d0
+ call Function92b22
+ ld bc, wc6e0
+ call Function92b22
+ ld bc, wc6f0
+ call Function92b22
+ ret
+
+Function92b22: ; 92b22 (24:6b22)
+ ld hl, $4
+ add hl, bc
+ ld a, [hl]
+ and $f
+ jr nz, .asm_92b2e
+ call Function92bd4
+.asm_92b2e
+ ld hl, $5
+ add hl, bc
+ ld a, [hl]
+ and a
+ ret z
+ ld d, a
+ ld hl, $4
+ add hl, bc
+ add [hl]
+ ld [hl], a
+ and $f
+ jr z, Function92b53
+ ld hl, $6
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld e, $8
+.asm_92b49
+ ld a, [hl]
+ add d
+ ld [hli], a
+rept 3
+ inc hl
+endr
+ dec e
+ jr nz, .asm_92b49
+ ret
+
+Function92b53: ; 92b53 (24:6b53)
+ ld hl, $8
+ add hl, bc
+ ld a, [hl]
+ ld [wc712 + 1], a
+ ld a, $50
+ ld [wc712 + 2], a
+ ld hl, $3
+ add hl, bc
+ ld e, [hl]
+ ld d, $0
+ ld hl, $1
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ add hl, de
+ ld e, l
+ ld d, h
+ call Function92b83
+ ld hl, $3
+ add hl, bc
+ ld a, [hl]
+ inc a
+ and $f
+ cp $f
+ jr nz, .asm_92b81
+ xor a
+.asm_92b81
+ ld [hl], a
+ ret
+
+Function92b83: ; 92b83 (24:6b83)
+ ld hl, $6
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+.asm_92b8a
+ ld a, [wc712 + 2]
+ ld [hli], a
+ ld a, [wc712 + 1]
+ ld [hli], a
+ ld a, [de]
+ ld [hli], a
+ srl a
+ srl a
+ set 7, a
+ ld [hli], a
+ ld a, [wc712 + 2]
+ ld [hli], a
+ ld a, [wc712 + 1]
+ add $8
+ ld [hli], a
+ ld a, [de]
+rept 2
+ inc a
+endr
+ ld [hli], a
+ srl a
+ srl a
+ set 7, a
+ ld [hli], a
+ inc de
+ ld a, [wc712 + 2]
+ sub $10
+ ld [wc712 + 2], a
+ cp $10
+ jr nz, .asm_92b8a
+ ret
+; 92bbe (24:6bbe)
+
+Function92bbe: ; 92bbe
+ push hl
+ srl a
+ srl a
+ add Unknown_92bce % $100
+ ld l, a
+ ld a, 0
+ adc Unknown_92bce / $100
+ ld h, a
+ ld a, [hl]
+ pop hl
+ ret
+; 92bce
+
+Unknown_92bce: ; 92bce
+ db 0, 1, 2, 3, 4, 5
+; 92bd4
+
+Function92bd4: ; 92bd4 (24:6bd4)
+ ld hl, 0
+ add hl, bc
+ ld e, [hl]
+ ld d, 0
+ ld hl, Jumptable_92be4
+rept 2
+ add hl, de
+endr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; 92be4 (24:6be4)
+
+Jumptable_92be4: ; 92be4
+ dw Function92c16
+ dw Function92c4c
+ dw Function92c17
+ dw Function92c1e
+ dw Function92c25
+ dw Function92c2c
+ dw Function92c33
+ dw Function92c5e
+ dw Function92c86
+ dw Function92ca9
+ dw Function92cd2
+ dw Function92cf8
+ dw Function92d13
+ dw Function92df7
+ dw Function92e10
+ dw Function92e31
+ dw Function92e47
+ dw Function92e64
+ dw Function92d20
+ dw Function92d4f
+ dw Function92d6e
+ dw Function92d7e
+ dw Function92da4
+ dw Function92db3
+ dw Function92dca
+; 92c16
+
+Function92c16: ; 92c16
+ ret
+; 92c17
+
+Function92c17: ; 92c17
+ ld hl, $5
+ add hl, bc
+ ld [hl], $10
+ ret
+; 92c1e
+
+Function92c1e: ; 92c1e
+ ld hl, $5
+ add hl, bc
+ ld [hl], $8
+ ret
+; 92c25
+
+Function92c25: ; 92c25
+ ld hl, $5
+ add hl, bc
+ ld [hl], $4
+ ret
+; 92c2c
+
+Function92c2c: ; 92c2c
+ ld hl, $5
+ add hl, bc
+ ld [hl], $2
+ ret
+; 92c33
+
+Function92c33: ; 92c33
+ ld hl, $5
+ add hl, bc
+ ld [hl], $1
+ ret
+; 92c3a
+
+Function92c3a: ; 92c3a
+ ld hl, $5
+ add hl, bc
+ ld [hl], $0
+ ld hl, 0
+ add hl, bc
+ ld [hl], $1
+ ld hl, $f
+ add hl, bc
+ ld [hl], $3
+
+Function92c4c: ; 92c4c
+ ld hl, $f
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .asm_92c56
+ dec [hl]
+ ret
+
+.asm_92c56
+ ld hl, 0
+ add hl, bc
+ ld a, $0
+ ld [hl], a
+ ret
+; 92c5e
+
+Function92c5e: ; 92c5e
+ ld a, [wc709]
+ cp $ff
+ jr z, .asm_92c72
+ ld hl, $9
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .asm_92c72
+ dec [hl]
+ call Function92c76
+ ret nz
+
+.asm_92c72
+ call Function92c3a
+ ret
+; 92c76
+
+Function92c76: ; 92c76
+ call Function92a12
+ ld a, [wc709]
+ ld e, a
+ ld a, [hli]
+ cp e
+ ret z
+ ld a, [hli]
+ cp e
+ ret z
+ ld a, [hl]
+ cp e
+ ret
+; 92c86
+
+Function92c86: ; 92c86
+ call Function92e94
+ jr nc, .asm_92c94
+ ld a, [wc717]
+ ld hl, wc709
+ cp [hl]
+ jr z, .asm_92ca5
+
+.asm_92c94
+ ld a, [wc709]
+ cp $ff
+ jr z, .asm_92ca5
+ ld hl, $9
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .asm_92ca5
+ dec [hl]
+ ret
+
+.asm_92ca5
+ call Function92c3a
+ ret
+; 92ca9
+
+Function92ca9: ; 92ca9
+ call Function92f1d
+ jr nc, .asm_92cbd
+ ld hl, wc709
+ cp [hl]
+ jr z, .asm_92cce
+ ld hl, $9
+ add hl, bc
+ ld a, [hl]
+ and a
+ ret z
+ dec [hl]
+ ret
+
+.asm_92cbd
+ ld a, [wc709]
+ cp $ff
+ jr z, .asm_92cce
+ ld hl, $9
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .asm_92cce
+ dec [hl]
+ ret
+
+.asm_92cce
+ call Function92c3a
+ ret
+; 92cd2
+
+Function92cd2: ; 92cd2
+ call Function92e94
+ jr nc, .asm_92ce1
+ ld a, [wc70c]
+ and a
+ jr z, .asm_92ce1
+ call Function92c3a
+ ret
+
+.asm_92ce1
+ ld a, SFX_STOP_SLOT
+ call Function9331e
+ ld hl, 0
+ add hl, bc
+ inc [hl]
+ ld hl, $a
+ add hl, bc
+ ld [hl], $20
+ ld hl, $5
+ add hl, bc
+ ld [hl], $0
+ ret
+; 92cf8
+
+Function92cf8: ; 92cf8
+ ld hl, $a
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .asm_92d02
+ dec [hl]
+ ret
+
+.asm_92d02
+ ld a, SFX_THROW_BALL
+ call Function9331e
+ ld hl, 0
+ add hl, bc
+ inc [hl]
+ ld hl, $5
+ add hl, bc
+ ld [hl], $8
+ ret
+; 92d13
+
+Function92d13: ; 92d13
+ call Function92e94
+ ret nc
+ ld a, [wc70c]
+ and a
+ ret z
+ call Function92c3a
+ ret
+; 92d20
+
+Function92d20: ; 92d20
+ call Function92f1d
+ ret c
+ ld a, SFX_STOP_SLOT
+ call Function9331e
+ call Function93316
+ ld hl, 0
+ add hl, bc
+ inc [hl]
+ ld hl, $5
+ add hl, bc
+ ld [hl], $0
+ call Function92fc0
+ push bc
+ push af
+ ld de, $6068
+ ld a, $6
+ call Function3b2a
+ ld hl, $e
+ add hl, bc
+ pop af
+ ld [hl], a
+ pop bc
+ xor a
+ ld [wcf64], a
+
+Function92d4f: ; 92d4f
+ ld a, [wcf64]
+ cp $2
+ jr z, .asm_92d5b
+ cp $1
+ jr z, .asm_92d62
+ ret
+
+.asm_92d5b
+ call Function92f1d
+ call Function92c3a
+ ret
+
+.asm_92d62
+ ld hl, 0
+ add hl, bc
+ inc [hl]
+ ld hl, $5
+ add hl, bc
+ ld [hl], $8
+ ret
+; 92d6e
+
+Function92d6e: ; 92d6e
+ xor a
+ ld [wcf64], a
+ ld hl, 0
+ add hl, bc
+ dec [hl]
+ ld hl, $5
+ add hl, bc
+ ld [hl], $0
+ ret
+; 92d7e
+
+Function92d7e: ; 92d7e
+ call Function92f1d
+ ret c
+ ld a, SFX_STOP_SLOT
+ call Function9331e
+ call Function93316
+ ld hl, 0
+ add hl, bc
+ inc [hl]
+ ld hl, $5
+ add hl, bc
+ ld [hl], $0
+ push bc
+ ld de, $6000
+ ld a, $7
+ call Function3b2a
+ pop bc
+ xor a
+ ld [wcf64], a
+ ret
+; 92da4
+
+Function92da4: ; 92da4
+ ld a, [wcf64]
+ and a
+ ret z
+ ld hl, 0
+ add hl, bc
+ inc [hl]
+ ld a, $2
+ ld [wcf64], a
+
+Function92db3: ; 92db3
+ ld a, [wcf64]
+ cp $4
+ ret c
+ ld hl, 0
+ add hl, bc
+ inc [hl]
+ ld hl, $5
+ add hl, bc
+ ld [hl], $10
+ ld hl, $a
+ add hl, bc
+ ld [hl], $11
+
+Function92dca: ; 92dca
+ ld hl, $a
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .asm_92dd4
+ dec [hl]
+ ret
+
+.asm_92dd4
+ call Function92f1d
+ jr nc, .asm_92de5
+ and a
+ jr nz, .asm_92de5
+ ld a, $5
+ ld [wcf64], a
+ call Function92c3a
+ ret
+
+.asm_92de5
+ ld hl, $5
+ add hl, bc
+ ld [hl], $0
+ ld hl, 0
+ add hl, bc
+rept 2
+ dec [hl]
+endr
+ ld a, $1
+ ld [wcf64], a
+ ret
+; 92df7
+
+Function92df7: ; 92df7
+ call Function92f1d
+ ret c
+ ld a, SFX_STOP_SLOT
+ call Function9331e
+ call Function93316
+ ld hl, 0
+ add hl, bc
+ inc [hl]
+ call Function92fc0
+ ld hl, $a
+ add hl, bc
+ ld [hl], a
+
+Function92e10: ; 92e10
+ ld hl, $a
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr nz, .asm_92e1f
+ call Function92f1d
+ call Function92c3a
+ ret
+
+.asm_92e1f
+ dec [hl]
+ ld hl, 0
+ add hl, bc
+ inc [hl]
+ ld hl, $b
+ add hl, bc
+ ld [hl], $20
+ ld hl, $5
+ add hl, bc
+ ld [hl], $0
+
+Function92e31: ; 92e31
+ ld hl, $b
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .asm_92e3b
+ dec [hl]
+ ret
+
+.asm_92e3b
+ ld hl, 0
+ add hl, bc
+ dec [hl]
+ ld hl, $5
+ add hl, bc
+ ld [hl], $8
+ ret
+; 92e47
+
+Function92e47: ; 92e47
+ call Function92f1d
+ ret c
+ ld a, SFX_STOP_SLOT
+ call Function9331e
+ call Function93316
+ ld hl, $5
+ add hl, bc
+ ld [hl], $1
+ ld hl, 0
+ add hl, bc
+ inc [hl]
+ ld hl, $a
+ add hl, bc
+ ld [hl], $10
+
+Function92e64: ; 92e64
+ ld hl, $a
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .asm_92e73
+ dec [hl]
+.asm_92e6d
+ ld a, SFX_GOT_SAFARI_BALLS
+ call Function9331e
+ ret
+
+.asm_92e73
+ ld a, [wc709]
+ and a
+ jr nz, .asm_92e88
+ call Function92f1d
+ jr nc, .asm_92e6d
+ and a
+ jr nz, .asm_92e6d
+ call Function92c3a
+ call WaitSFX
+ ret
+
+.asm_92e88
+ call Function92f1d
+ jr c, .asm_92e6d
+ call Function92c3a
+ call WaitSFX
+ ret
+; 92e94
+
+Function92e94: ; 92e94
+ xor a
+ ld [wc70b], a
+ ld [wc70c], a
+ call Function92a12
+ call Function92fb4
+ ld a, [wc70a]
+ and 3
+ ld e, a
+ ld d, 0
+ ld hl, Jumptable_92ebd
+rept 2
+ add hl, de
+endr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, .asm_92eb6
+ push de
+ jp [hl]
+
+.asm_92eb6
+ ld a, [wc70b]
+ and a
+ ret z
+ scf
+ ret
+; 92ebd
+
+Jumptable_92ebd: ; 92ebd
+ dw Function92ed4
+ dw Function92ed1
+ dw Function92ecb
+ dw Function92ec5
+; 92ec5
+
+Function92ec5: ; 92ec5
+ call Function92ee0
+ call Function92ef6
+
+Function92ecb: ; 92ecb
+ call Function92ed5
+ call Function92f01
+
+Function92ed1: ; 92ed1
+ call Function92eeb
+
+Function92ed4: ; 92ed4
+ ret
+; 92ed5
+
+Function92ed5: ; 92ed5
+ ld hl, wc70e
+ ld a, [EnemyScreens]
+ cp [hl]
+ call z, Function92f0c
+ ret
+; 92ee0
+
+Function92ee0: ; 92ee0
+ ld hl, wEnemyGoesFirst
+ ld a, [wc700]
+ cp [hl]
+ call z, Function92f0c
+ ret
+; 92eeb
+
+Function92eeb: ; 92eeb
+ ld hl, wEnemyGoesFirst
+ ld a, [wc701]
+ cp [hl]
+ call z, Function92f0c
+ ret
+; 92ef6
+
+Function92ef6: ; 92ef6
+ ld hl, wEnemyGoesFirst
+ ld a, [wc702]
+ cp [hl]
+ call z, Function92f0c
+ ret
+; 92f01
+
+Function92f01: ; 92f01
+ ld hl, wc710
+ ld a, [wc702]
+ cp [hl]
+ call z, Function92f0c
+ ret
+; 92f0c
+
+Function92f0c: ; 92f0c
+ ld [wc717], a
+ and a
+ jr nz, .asm_92f17
+ ld a, $1
+ ld [wc70c], a
+
+.asm_92f17
+ ld a, $1
+ ld [wc70b], a
+ ret
+; 92f1d
+
+Function92f1d: ; 92f1d
+ ld a, $ff
+ ld [EffectFailed], a
+ call Function92a12
+ call Function92fb4
+ ld a, [wc70a]
+ and 3
+ ld e, a
+ ld d, 0
+ ld hl, Jumptable_92f48
+rept 2
+ add hl, de
+endr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, .asm_92f3d
+ push de
+ jp [hl]
+
+.asm_92f3d
+ ld a, [wc70d]
+ cp $ff
+ jr nz, .asm_92f46
+ and a
+ ret
+
+.asm_92f46
+ scf
+ ret
+; 92f48
+
+Jumptable_92f48: ; 92f48
+ dw Function92f5f
+ dw Function92f5c
+ dw Function92f56
+ dw Function92f50
+; 92f50
+
+Function92f50: ; 92f50
+ call Function92f70
+ call Function92f90
+
+Function92f56: ; 92f56
+ call Function92f60
+ call Function92fa0
+
+Function92f5c: ; 92f5c
+ call Function92f80
+
+Function92f5f: ; 92f5f
+ ret
+; 92f60
+
+Function92f60: ; 92f60
+ ld hl, wc70e
+ ld a, [wc700]
+ cp [hl]
+ ret nz
+ ld hl, wc703
+ cp [hl]
+ call z, Function92fb0
+ ret
+; 92f70
+
+Function92f70: ; 92f70
+ ld hl, wc710
+ ld a, [wc700]
+ cp [hl]
+ ret nz
+ ld hl, wc704
+ cp [hl]
+ call z, Function92fb0
+ ret
+; 92f80
+
+Function92f80: ; 92f80
+ ld hl, wEnemyGoesFirst
+ ld a, [wc701]
+ cp [hl]
+ ret nz
+ ld hl, wc704
+ cp [hl]
+ call z, Function92fb0
+ ret
+; 92f90
+
+Function92f90: ; 92f90
+ ld hl, wc70e
+ ld a, [wc702]
+ cp [hl]
+ ret nz
+ ld hl, wc704
+ cp [hl]
+ call z, Function92fb0
+ ret
+; 92fa0
+
+Function92fa0: ; 92fa0
+ ld hl, wc710
+ ld a, [wc702]
+ cp [hl]
+ ret nz
+ ld hl, wc705
+ cp [hl]
+ call z, Function92fb0
+ ret
+; 92fb0
+
+Function92fb0: ; 92fb0
+ ld [wc70d], a
+ ret
+; 92fb4
+
+Function92fb4: ; 92fb4
+ ld de, wc70e
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hl]
+ ld [de], a
+ ret
+; 92fc0
+
+Function92fc0: ; 92fc0
+ ld hl, $3
+ add hl, bc
+ ld a, [hl]
+ push af
+ push hl
+ call Function92fcf
+ pop hl
+ pop af
+ ld [hl], a
+ ld a, e
+ ret
+; 92fcf
+
+Function92fcf: ; 92fcf
+ ld a, [wc709]
+ and a
+ jr nz, .asm_92fe8
+ ld e, $0
+.asm_92fd7
+ ld hl, $3
+ add hl, bc
+ inc [hl]
+ inc e
+ push de
+ call Function92f1d
+ pop de
+ jr nc, .asm_92fd7
+ and a
+ jr nz, .asm_92fd7
+ ret
+
+.asm_92fe8
+ call Random
+ and $7
+ cp $4
+ jr c, .asm_92fe8
+ ld e, a
+.asm_92ff2
+ ld a, e
+ inc e
+ ld hl, $3
+ add hl, bc
+ add [hl]
+ ld [hl], a
+ push de
+ call Function92f1d
+ pop de
+ jr c, .asm_92ff2
+ ret
+; 93002
+
+Function93002: ; 93002 (24:7002)
+ ld a, [wc709]
+ and a
+ ret z
+ ld hl, Unknown_93023
+ ld a, [ScriptVar]
+ and a
+ jr z, .asm_93013
+ ld hl, Unknown_93031
+.asm_93013
+ call Random
+ ld c, a
+.asm_93017
+ ld a, [hli]
+ cp c
+ jr nc, .asm_9301e
+ inc hl
+ jr .asm_93017
+.asm_9301e
+ ld a, [hl]
+ ld [wc709], a
+ ret
+; 93023 (24:7023)
+
+Unknown_93023: ; 93023
+ db $01, $00
+ db $03, $04
+ db $0a, $14
+ db $14, $10
+ db $28, $0c
+ db $30, $08
+ db $ff, $ff
+; 93031
+
+Unknown_93031: ; 93031
+ db $02, $00
+ db $03, $04
+ db $08, $14
+ db $10, $10
+ db $1e, $0c
+ db $50, $08
+ db $ff, $ff
+; 9303f
+
+Function9303f: ; 9303f (24:703f)
+ ld b, $14
+ ld a, [wc70a]
+ dec a
+ jr z, asm_93066
+ dec a
+ jr z, asm_9305a
+ jr asm_9304e
+
+Function9304c: ; 9304c (24:704c)
+ ld b, $23
+asm_9304e: ; 9304e (24:704e)
+ hlcoord 3, 2
+ call Function93069
+ hlcoord 3, 10
+ call Function93069
+asm_9305a: ; 9305a (24:705a)
+ hlcoord 3, 4
+ call Function93069
+ hlcoord 3, 8
+ call Function93069
+asm_93066: ; 93066 (24:7066)
+ hlcoord 3, 6
+
+Function93069: ; 93069 (24:7069)
+ ld a, b
+ ld [hl], a
+ ld de, $d
+ add hl, de
+ ld [hl], a
+ ld de, $7
+ add hl, de
+ inc a
+ ld [hl], a
+ ld de, $d
+ add hl, de
+ ld [hl], a
+ ret
+
+Function9307c: ; 9307c (24:707c)
+ ld hl, UnknownText_0x930c7
+ call PrintText
+ ld hl, MenuDataHeader_0x930d6
+ call LoadMenuDataHeader
+ call InterpretMenu2
+ call WriteBackup
+ ret c
+ ld a, [MenuSelection2]
+ ld b, a
+ ld a, $4
+ sub b
+ ld [wc70a], a
+ ld hl, Coins
+ ld c, a
+ ld a, [hli]
+ and a
+ jr nz, .asm_930ad
+ ld a, [hl]
+ cp c
+ jr nc, .asm_930ad
+ ld hl, UnknownText_0x930d1
+ call PrintText
+ jr Function9307c
+.asm_930ad
+ ld hl, Coins + 1
+ ld a, [hl]
+ sub c
+ ld [hld], a
+ jr nc, .asm_930b6
+ dec [hl]
+.asm_930b6
+ call WaitSFX
+ ld de, SFX_PAY_DAY
+ call PlaySFX
+ ld hl, UnknownText_0x930cc
+ call PrintText
+ and a
+ ret
+; 930c7 (24:70c7)
+
+UnknownText_0x930c7: ; 0x930c7
+ ; Bet how many coins?
+ text_jump UnknownText_0x1c5049
+ db "@"
+; 0x930cc
+
+UnknownText_0x930cc: ; 0x930cc
+ ; Start!
+ text_jump UnknownText_0x1c505e
+ db "@"
+; 0x930d1
+
+UnknownText_0x930d1: ; 0x930d1
+ ; Not enough coins.
+ text_jump UnknownText_0x1c5066
+ db "@"
+; 0x930d6
+
+MenuDataHeader_0x930d6: ; 0x930d6
+ db $40 ; flags
+ db 10, 14 ; start coords
+ db 17, 19 ; end coords
+ dw MenuData2_0x930de
+ db 1 ; default option
+; 0x930de
+
+MenuData2_0x930de: ; 0x930de
+ db $80 ; flags
+ db 3 ; items
+ db " 3@"
+ db " 2@"
+ db " 1@"
+; 0x930e9
+
+Function930e9: ; 930e9 (24:70e9)
+ ld hl, Coins
+ ld a, [hli]
+ or [hl]
+ jr nz, .asm_930fd
+ ld hl, UnknownText_9311a
+ call PrintText
+ ld c, 60
+ call DelayFrames
+ jr .asm_93118
+.asm_930fd
+ ld hl, UnknownText_9311f
+ call PrintText
+ call LoadMenuTextBox
+ lb bc, 14, 12
+ call PlaceYesNoBox
+ ld a, [MenuSelection2]
+ dec a
+ call WriteBackup
+ and a
+ jr nz, .asm_93118
+ and a
+ ret
+.asm_93118
+ scf
+ ret
+; 9311a (24:711a)
+
+UnknownText_9311a: ; 9311a
+ text_jump UnknownText_0x1c5079
+ db "@"
+
+UnknownText_9311f: ; 9311f
+ text_jump UnknownText_0x1c5092
+ db "@"
+
+Function93124: ; 93124 (24:7124)
+ ld a, [EffectFailed]
+ cp $ff
+ jr z, .asm_93151
+ srl a
+ ld e, a
+ ld d, 0
+ ld hl, .data_93145
+ add hl, de
+ ld a, [hli]
+ ld [PlayerUsedMoves], a
+ ld e, a
+ ld a, [hl]
+ ld [wc711], a
+ ld d, a
+ callba MobileFn_105fe3
+ ret
+
+.data_93145
+ db $2c, $01
+ db $32, $00
+ db $06, $00
+ db $08, $00
+ db $0a, $00
+ db $0f, $00
+
+.asm_93151
+ ld hl, wc711
+ xor a
+ ld [hli], a
+ ld [hl], a
+ ret
+
+Function93158: ; 93158 (24:7158)
+ ld a, [EffectFailed]
+ cp $ff
+ jr nz, .asm_9316c
+ ld hl, UnknownText_0x931e0
+ call PrintText
+ callba MobileFn_105fd0
+ ret
+.asm_9316c
+ srl a
+ ld e, a
+ ld d, 0
+ ld hl, Unknown_93195
+rept 3
+ add hl, de
+endr
+ ld de, StringBuffer2
+ ld bc, $4
+ call CopyBytes
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, .asm_93188
+ push de
+ jp [hl]
+.asm_93188
+ ld hl, UnknownText_0x931b9
+ call PrintText
+ callba MobileFn_105f9f
+ ret
+; 93195 (24:7195)
+
+Unknown_93195: ; 93195
+ db "300@"
+ dw Function931e5
+ db "50@@"
+ dw Function9320b
+ db "6@@@"
+ dw Function93214
+ db "8@@@"
+ dw Function93214
+ db "10@@"
+ dw Function93214
+ db "15@@"
+ dw Function93214
+; 931b9
+
+UnknownText_0x931b9: ; 0x931b9
+ start_asm
+; 0x931ba
+
+Function931ba: ; 931ba
+ ld a, [EffectFailed]
+ add $25
+ ldcoord_a 2, 13
+ inc a
+ ldcoord_a 2, 14
+ inc a
+ ldcoord_a 3, 13
+ inc a
+ ldcoord_a 3, 14
+ hlcoord 18, 17
+ ld [hl], $ee
+ ld hl, UnknownText_0x931db
+rept 4
+ inc bc
+endr
+ ret
+; 931db
+
+UnknownText_0x931db: ; 0x931db
+ ; lined up! Won @ coins!
+ text_jump UnknownText_0x1c509f
+ db "@"
+; 0x931e0
+
+UnknownText_0x931e0: ; 0x931e0
+ ; Darn!
+ text_jump UnknownText_0x1c50bb
+ db "@"
+; 0x931e5
+
+Function931e5: ; 931e5
+ ld a, SFX_2ND_PLACE
+ call Function9331e
+ call WaitSFX
+ ld a, [wd002]
+ and a
+ jr nz, .asm_931ff
+ call Random
+ and $14
+ ret z
+ ld a, $ff
+ ld [wc709], a
+ ret
+
+.asm_931ff
+ call Random
+ and $1c
+ ret z
+ ld a, $ff
+ ld [wc709], a
+ ret
+; 9320b
+
+Function9320b: ; 9320b
+ ld a, SFX_3RD_PLACE
+ call Function9331e
+ call WaitSFX
+ ret
+; 93214
+
+Function93214: ; 93214
+ ld a, SFX_PRESENT
+ call Function9331e
+ call WaitSFX
+ ret
+; 9321d
+
+Function9321d: ; 9321d (24:721d)
+ ld hl, $b
+ add hl, bc
+ ld e, [hl]
+ ld d, 0
+ ld hl, Jumptable_9322d
+rept 2
+ add hl, de
+endr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+
+Jumptable_9322d: ; 9322d (24:722d)
+ dw Function93233
+ dw Function93259
+ dw Function93289
+
+
+Function93233: ; 93233 (24:7233)
+ ld hl, $e
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr nz, .asm_93247
+ ld a, $2
+ ld [wcf64], a
+ ld hl, 0
+ add hl, bc
+ ld [hl], $0
+ ret
+.asm_93247
+ dec [hl]
+ ld hl, $b
+ add hl, bc
+ inc [hl]
+ ld hl, $c
+ add hl, bc
+ ld [hl], $30
+ ld hl, $6
+ add hl, bc
+ ld [hl], $0
+
+Function93259: ; 93259 (24:7259)
+ ld hl, $c
+ add hl, bc
+ ld a, [hl]
+ cp $20
+ jr c, .asm_93273
+ dec [hl]
+ ld e, a
+ ld d, $70
+ callba Functionce765
+ ld a, e
+ ld hl, $7
+ add hl, bc
+ ld [hl], a
+ ret
+.asm_93273
+ ld hl, $b
+ add hl, bc
+ inc [hl]
+ ld hl, $d
+ add hl, bc
+ ld [hl], $2
+ ld a, $1
+ ld [wcf64], a
+ ld a, SFX_PLACE_PUZZLE_PIECE_DOWN
+ call Function9331e
+ ret
+
+Function93289: ; 93289 (24:7289)
+ ld hl, $6
+ add hl, bc
+ ld a, [hl]
+rept 2
+ inc [hl]
+endr
+ cp $48
+ jr nc, .asm_932a3
+ and $3
+ ret nz
+ ld hl, $d
+ add hl, bc
+ ld a, [hl]
+ xor $ff
+ inc a
+ ld [hl], a
+ ld [hSCY], a
+ ret
+.asm_932a3
+ ld hl, $b
+ add hl, bc
+ xor a
+ ld [hl], a
+ ld [hSCY], a
+ ret
+
+Function932ac: ; 932ac (24:72ac)
+ ld hl, $b
+ add hl, bc
+ ld e, [hl]
+ ld d, 0
+ ld hl, Jumptable_932bc
+rept 2
+ add hl, de
+endr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+
+Jumptable_932bc: ; 932bc (24:72bc)
+ dw Function932c2
+ dw Function932e0
+ dw Function932fc
+
+
+Function932c2: ; 932c2 (24:72c2)
+ ld hl, $4
+ add hl, bc
+ ld a, [hl]
+ inc [hl]
+ cp $68
+ jr z, .asm_932d6
+ and $f
+ ret nz
+ ld de, SFX_JUMP_OVER_LEDGE
+ call PlaySFX
+ ret
+.asm_932d6
+ ld hl, $b
+ add hl, bc
+ inc [hl]
+ ld a, $1
+ ld [wcf64], a
+
+Function932e0: ; 932e0 (24:72e0)
+ ld a, [wcf64]
+ cp $2
+ jr z, .asm_932f1
+ cp $5
+ ret nz
+ ld hl, 0
+ add hl, bc
+ ld [hl], $0
+ ret
+.asm_932f1
+ ld hl, $b
+ add hl, bc
+ inc [hl]
+ ld hl, $c
+ add hl, bc
+ ld [hl], $8
+
+Function932fc: ; 932fc (24:72fc)
+ ld hl, $c
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .asm_93306
+ dec [hl]
+ ret
+.asm_93306
+ ld hl, $b
+ add hl, bc
+ dec [hl]
+ push bc
+ ld de, $606c
+ ld a, $8
+ call Function3b2a
+ pop bc
+ ret
+; 93316 (24:7316)
+
+Function93316: ; 93316
+ push bc
+ ld c, 16
+ call DelayFrames
+ pop bc
+ ret
+; 9331e
+
+Function9331e: ; 9331e (24:731e)
+ push de
+ ld e, a
+ ld d, 0
+ call PlaySFX
+ pop de
+ ret
+; 93327 (24:7327)
+
+Unknown_93327: ; 93327
+ db $00, $08, $14, $0c, $10, $00, $08, $14, $0c, $10, $04, $08, $14, $0c, $10, $00, $08, $14
+Unknown_93339: ; 93339
+ db $00, $0c, $08, $10, $14, $04, $0c, $08, $10, $14, $04, $0c, $08, $10, $14, $00, $0c, $08
+Unknown_9334b: ; 9334b
+ db $00, $0c, $08, $10, $14, $0c, $08, $10, $14, $0c, $04, $08, $10, $14, $0c, $00, $0c, $08
+; 9335d
+
+SlotsTilemap: ; 9335d
+INCBIN "gfx/slots.tilemap"
+; 9344d
+
+Slots1LZ: ; 9344d
+INCBIN "gfx/slots_1.2bpp.lz"
+; 935cd
+
+Slots2LZ: ; 935cd
+INCBIN "gfx/slots_2.2bpp.lz"
+; 9382d
+
+Slots3LZ: ; 9382d
+INCBIN "gfx/slots_3.2bpp.lz"
+; 93a3d
diff --git a/engine/specials.asm b/engine/specials.asm
index c1e9ff95b..21d391faa 100644
--- a/engine/specials.asm
+++ b/engine/specials.asm
@@ -65,14 +65,14 @@ SpecialsPointers:: ; c029
add_special Special_SlotMachine
add_special Special_CardFlip
add_special Special_DummyNonfunctionalGameCornerGame
- add_special Special_WhiteBGMapBufferScreen
- add_special FadeBlackBGMap
+ add_special Special_ClearBGPalettesBufferScreen
+ add_special FadeOutPalettes
add_special Special_BattleTowerFade
add_special Special_FadeBlackQuickly
- add_special FadeInBGMap
+ add_special FadeInPalettes
add_special Special_FadeInQuickly
add_special Special_ReloadSpritesNoPalettes
- add_special WhiteBGMap
+ add_special ClearBGPalettes
add_special UpdateTimePals
add_special ClearTileMap
add_special UpdateSprites
@@ -465,8 +465,8 @@ UnknownText_0xc3d6: ; 0xc3d6
db "@"
; 0xc3db
-Special_WhiteBGMapBufferScreen: ; c3db
- call WhiteBGMap
+Special_ClearBGPalettesBufferScreen: ; c3db
+ call ClearBGPalettes
call BufferScreen
ret
; c3e2
diff --git a/engine/startmenu.asm b/engine/startmenu.asm
index b7287be83..1c7768850 100755
--- a/engine/startmenu.asm
+++ b/engine/startmenu.asm
@@ -139,7 +139,7 @@ endr
; 126b7
.Clear ; 126b7
- call WhiteBGMap
+ call ClearBGPalettes
call Call_ExitMenu
call Function2bae
call .DrawMenuAccount_
@@ -529,7 +529,7 @@ StartMenu_Pokemon: ; 12976
.choosemenu
xor a
ld [PartyMenuActionText], a ; Choose a POKéMON.
- call WhiteBGMap
+ call ClearBGPalettes
.menu
callba Function5004f
@@ -1449,7 +1449,7 @@ MonMenu_RockSmash: ; 12f3b
; 12f50
MonMenu_SweetScent: ; 12f50
- callba DoMovementFunctionc
+ callba SweetScentFromMenu
ld b, $4
ld a, $2
ret
@@ -1466,7 +1466,7 @@ Function12f5b: ; 12f5b
ld a, b
ld [Options], a
push af
- call WhiteBGMap
+ call ClearBGPalettes
pop af
ret
; 12f73
@@ -1527,7 +1527,7 @@ ManagePokemonMoves: ; 12fba
call MoveScreenLoop
pop af
ld [Options], a
- call WhiteBGMap
+ call ClearBGPalettes
.egg
ld a, $0
@@ -1753,7 +1753,7 @@ String_1316b: ; 1316b
; 13172
SetUpMoveScreenBG: ; 13172
- call WhiteBGMap
+ call ClearBGPalettes
call ClearTileMap
call ClearSprites
xor a
diff --git a/engine/std_scripts.asm b/engine/std_scripts.asm
index c898eae14..a886dbbf3 100644
--- a/engine/std_scripts.asm
+++ b/engine/std_scripts.asm
@@ -302,7 +302,7 @@ RadioTowerRocketsScript:
end
BugContestResultsWarpScript:
- special WhiteBGMap
+ special ClearBGPalettes
scall BugContestResults_CopyContestantsToResults
setevent EVENT_ROUTE_36_NATIONAL_PARK_GATE_OFFICER_CONTEST_DAY
clearevent EVENT_ROUTE_36_NATIONAL_PARK_GATE_OFFICER_NOT_CONTEST_DAY
diff --git a/engine/timeofdaypals.asm b/engine/timeofdaypals.asm
index bdfcc8b05..1dbd9b2ee 100644
--- a/engine/timeofdaypals.asm
+++ b/engine/timeofdaypals.asm
@@ -116,7 +116,7 @@ _UpdateTimePals:: ; 8c070
ret
; 8c079
-FadeInBGMap:: ; 8c079
+FadeInPalettes:: ; 8c079
ld c, $12
call GetTimePalFade
ld b, $4
@@ -124,7 +124,7 @@ FadeInBGMap:: ; 8c079
ret
; 8c084
-FadeBlackBGMap:: ; 8c084
+FadeOutPalettes:: ; 8c084
call Function8c0c1
ld c, $9
call GetTimePalFade
diff --git a/engine/title.asm b/engine/title.asm
index d29c90a23..a9b991e6b 100644
--- a/engine/title.asm
+++ b/engine/title.asm
@@ -1,6 +1,6 @@
_TitleScreen: ; 10ed67
- call WhiteBGMap
+ call ClearBGPalettes
call ClearSprites
call ClearTileMap