summaryrefslogtreecommitdiff
path: root/src/engine/bank03.asm
diff options
context:
space:
mode:
authorxCrystal <rgr.crystal@gmail.com>2018-04-10 16:25:35 +0200
committerxCrystal <rgr.crystal@gmail.com>2018-04-10 16:25:35 +0200
commit2bbc1a63239201be8f1a7b360e81d19192093a8f (patch)
tree3970359d9ac5db26b39229911d975fff0825f772 /src/engine/bank03.asm
parent6895547b0d2c86d769b29dc8eb5f5021723fc763 (diff)
Add leading zero to temporary bankX.asm filenames so they show up in order
Diffstat (limited to 'src/engine/bank03.asm')
-rw-r--r--src/engine/bank03.asm3225
1 files changed, 3225 insertions, 0 deletions
diff --git a/src/engine/bank03.asm b/src/engine/bank03.asm
new file mode 100644
index 0000000..e53fc38
--- /dev/null
+++ b/src/engine/bank03.asm
@@ -0,0 +1,3225 @@
+LoadMap: ; c000 (3:4000)
+ call DisableLCD
+ call EnableSRAM
+ bank1call Func_6785
+ call DisableSRAM
+ ld a, GAME_EVENT_OVERWORLD
+ ld [wGameEvent], a
+ xor a
+ ld [wd10f], a
+ ld [wd110], a
+ ld [wMatchStartTheme], a
+ farcall Func_10a9b
+ call Func_c1a4
+ call ZeroObjectPositions
+ xor a
+ ld [wTileMapFill], a
+ call LoadDuelHUDTiles
+ call Set_OBJ_8x8
+ xor a
+ ld [wcd08], a
+ xor a
+ ld [wd291], a
+.asm_c037
+ farcall Func_10ab4
+ call Func_c1a4
+ call Func_c241
+ call EmptyScreen
+ call Func_3ca0
+ ld a, PLAYER_TURN
+ ldh [hWhoseTurn], a
+ farcall Func_1c440
+ ld a, [wd0bb]
+ ld [wCurMap], a
+ ld a, [wd0bc]
+ ld [wPlayerXCoord], a
+ ld a, [wd0bd]
+ ld [wPlayerYCoord], a
+ call Func_c36a
+ call Func_c184
+ call Func_c49c
+ farcall Func_80000
+ call Func_c4b9
+ call Func_c943
+ call Func_c158
+ farcall Func_80480
+ call Func_c199
+ xor a
+ ld [wd0b4], a
+ ld [wd0c1], a
+ call Func_39fc
+ farcall Func_10af9
+ call Func_c141
+ call Func_c17a
+.asm_c092
+ call DoFrameIfLCDEnabled
+ call SetScreenScroll
+ call Func_c0ce
+ ld hl, wd0b4
+ ld a, [hl]
+ and $d0
+ jr z, .asm_c092
+ call DoFrameIfLCDEnabled
+ ld hl, wd0b4
+ ld a, [hl]
+ bit 4, [hl]
+ jr z, .asm_c0b6
+ ld a, $c
+ call PlaySFX
+ jp .asm_c037
+.asm_c0b6
+ farcall Func_10ab4
+ call Func_c1a0
+ ld a, [wMatchStartTheme]
+ or a
+ jr z, .asm_c0ca
+ call Func_c280
+ farcall Duel_Init
+.asm_c0ca
+ call Func_c280
+ ret
+
+Func_c0ce: ; c0ce (3:40ce)
+ ld a, [wd0bf]
+ res 7, a
+ rlca
+ add LOW(PointerTable_c0e0)
+ ld l, a
+ ld a, HIGH(PointerTable_c0e0)
+ adc $0
+ ld h, a
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp hl
+
+PointerTable_c0e0: ; c0e0 (3:40e0)
+ dw Func_c0e8
+ dw Func_c0ed
+ dw Func_c0f1
+ dw Func_c10a
+
+Func_c0e8: ; c0e8 (3:40e8)
+ farcall Func_10e55
+ ret
+
+Func_c0ed: ; c0ed (3:40ed)
+ call Func_c510
+ ret
+
+Func_c0f1: ; c0f1 (3:40f1)
+ ld a, [wd3b6]
+ ld [wd3aa], a
+ farcall Func_1c768
+ ld a, c
+ ld [wd0c6], a
+ ld a, b
+ ld [wd0c7], a
+ ld a, $3
+ ld [wd0bf], a
+ jr Func_c10a
+
+Func_c10a: ; c10a (3:410a)
+ ld hl, wd0c6
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp hl
+
+; closes dialogue window. seems to be for other things as well.
+CloseDialogueBox: ; c111 (3:4111)
+ ld a, [wd0c1]
+ bit 0, a
+ call nz, Func_c135
+ ld a, [wd0c1]
+ bit 1, a
+ jr z, .asm_c12a
+ ld a, [wd3b6]
+ ld [wd3aa], a
+ farcall Func_1c5e9
+.asm_c12a
+ xor a
+ ld [wd0c1], a
+ ld a, [wd0c0]
+ ld [wd0bf], a
+ ret
+
+Func_c135: ; c135 (3:4135)
+ push hl
+ farcall Func_80028
+ ld hl, wd0c1
+ res 0, [hl]
+ pop hl
+ ret
+
+Func_c141: ; c141 (3:4141)
+ ld hl, wd0c2
+ ld a, [hl]
+ or a
+ ret z
+ push af
+ xor a
+ ld [hl], a
+ pop af
+ dec a
+ ld hl, PointerTable_c152
+ jp JumpToFunctionInTable
+
+PointerTable_c152: ; c152 (3:4152)
+ dw Func_c9bc
+ dw Func_fc2b
+ dw Func_fcad
+
+Func_c158: ; c158 (3:4158)
+ ld a, [wd0c2]
+ cp $1
+ ret nz
+ ld a, [wd0c4]
+ ld [wd3ab], a
+ call Func_39c3
+ jr c, .asm_c179
+ ld a, [wd3aa]
+ ld l, $4
+ call Func_39ad
+ ld a, [wd0c5]
+ ld [hl], a
+ farcall Func_1c58e
+.asm_c179
+ ret
+
+Func_c17a: ; c17a (3:417a)
+ ld a, [wd0bf]
+ cp $3
+ ret z
+ call Func_c9b8
+ ret
+
+Func_c184: ; c184 (3:4184)
+ push bc
+ ld c, $1
+ ld a, [wCurMap]
+ cp OVERWORLD_MAP
+ jr nz, .asm_c190
+ ld c, $0
+.asm_c190
+ ld a, c
+ ld [wd0bf], a
+ ld [wd0c0], a
+ pop bc
+ ret
+
+Func_c199: ; c199 (3:4199)
+ ld hl, Func_380e
+ call SetDoFrameFunction
+ ret
+
+Func_c1a0: ; c1a0 (3:41a0)
+ call ResetDoFrameFunction
+ ret
+
+Func_c1a4: ; c1a4 (3:41a4)
+ xor a
+ call SetBGP
+ xor a
+ call SetOBP0
+ xor a
+ call SetOBP1
+ ret
+
+Func_c1b1: ; c1b1 (3:41b1)
+ ld a, $c
+ ld [wd32e], a
+ ld a, $0
+ ld [wd0bb], a
+ ld a, $c
+ ld [wd0bc], a
+ ld a, $c
+ ld [wd0bd], a
+ ld a, $2
+ ld [wd0be], a
+ call Func_c9cb
+ call Func_c9dd
+ farcall Func_80b7a
+ farcall Func_1c82e
+ farcall Func_131b3
+ xor a
+ ld [wPlayTimeCounter + 0], a
+ ld [wPlayTimeCounter + 1], a
+ ld [wPlayTimeCounter + 2], a
+ ld [wPlayTimeCounter + 3], a
+ ld [wPlayTimeCounter + 4], a
+ ret
+
+Func_c1ed: ; c1ed (3:41ed)
+ call Func_c9cb
+ farcall Func_11416
+ call Func_c9dd
+ ret
+
+Func_c1f8: ; c1f8 (3:41f8)
+ xor a
+ ld [wd0b8], a
+ ld [wd0b9], a
+ ld [wd0ba], a
+ ld [wd11b], a
+ ld [wd0c2], a
+ ld [wd111], a
+ ld [wd112], a
+ ld [wd3b8], a
+ call EnableSRAM
+ ld a, [sa007]
+ ld [wd421], a
+ ld a, [sa006]
+ ld [wTextSpeed], a
+ call DisableSRAM
+ farcall Func_10756
+ ret
+
+Func_c228: ; c228 (3:4228)
+ ld a, [wCurMap]
+ ld [wd0bb], a
+ ld a, [wPlayerXCoord]
+ ld [wd0bc], a
+ ld a, [wPlayerYCoord]
+ ld [wd0bd], a
+ ld a, [wd334]
+ ld [wd0be], a
+ ret
+
+Func_c241: ; c241 (3:4241)
+ push hl
+ push bc
+ push de
+ ld de, $307f
+ call Func_2275
+ call Func_c258
+ pop de
+ pop bc
+ pop hl
+ ret
+
+Func_c251: ; c251 (3:4251)
+ ldh a, [hffb0]
+ push af
+ ld a, $1
+ jr asm_c25d
+
+Func_c258: ; c258 (3:4258)
+ ldh a, [hffb0]
+ push af
+ ld a, $2
+asm_c25d
+ ldh [hffb0], a
+ push hl
+ call Func_c268
+ pop hl
+ pop af
+ ldh [hffb0], a
+ ret
+
+Func_c268: ; c268 (3:4268)
+ ld hl, Unknown_c27c
+.asm_c26b
+ push hl
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ or h
+ jr z, .asm_c27a
+ call Func_2c29
+ pop hl
+ inc hl
+ inc hl
+ jr .asm_c26b
+.asm_c27a
+ pop hl
+ ret
+
+Unknown_c27c: ; c27c (3:427c)
+ INCROM $c27c, $c280
+
+Func_c280: ; c280 (3:4280)
+ call Func_c228
+ call Func_3ca0
+ call ZeroObjectPositions
+ ld hl, wVBlankOAMCopyToggle
+ inc [hl]
+ call EnableLCD
+ call DoFrameIfLCDEnabled
+ call DisableLCD
+ farcall Func_12871
+ ret
+
+Func_c29b: ; c29b (3:429b)
+ push hl
+ ld hl, wd0c1
+ or [hl]
+ ld [hl], a
+ pop hl
+ ret
+
+Func_c2a3: ; c2a3 (3:42a3)
+ push hl
+ push bc
+ push de
+ call Func_c335
+ farcall Func_10ab4
+ ld a, $80
+ call Func_c29b
+ ld de, $307f
+ call Func_2275
+ farcall Func_12ba7
+ call Func_3ca0
+ call ZeroObjectPositions
+ ld a, $1
+ ld [wVBlankOAMCopyToggle], a
+ call EnableLCD
+ call DoFrameIfLCDEnabled
+ call DisableLCD
+ pop de
+ pop bc
+ pop hl
+ ret
+
+Func_c2d4: ; c2d4 (3:42d4)
+ xor a
+ ld [wd10f], a
+ ld [wd110], a
+
+Func_c2db: ; c2db (3:42db)
+ push hl
+ push bc
+ push de
+ call DisableLCD
+ call Set_OBJ_8x8
+ call Func_3ca0
+ farcall Func_12bcd
+ ld a, PLAYER_TURN
+ ldh [hWhoseTurn], a
+ call Func_c241
+ call EmptyScreen
+ ld a, [wd111]
+ push af
+ farcall Func_80000
+ pop af
+ ld [wd111], a
+ ld hl, wd0c1
+ res 0, [hl]
+ call Func_c34e
+ farcall Func_12c5e
+ farcall Func_1c6f8
+ ld hl, wd0c1
+ res 7, [hl]
+ ld hl, wd10f
+ ld a, [hli]
+ or [hl]
+ jr z, .asm_c323
+ ld a, [hld]
+ ld l, [hl]
+ ld h, a
+ call Func_3c45
+.asm_c323
+ farcall Func_10af9
+ pop de
+ pop bc
+ pop hl
+ ret
+
+Func_c32b: ; c32b (3:432b)
+ ld a, l
+ ld [wd10f], a
+ ld a, h
+ ld [wd110], a
+ jr Func_c2db
+
+Func_c335: ; c335 (3:4335)
+ ld a, [wOBP0]
+ ld [wd10c], a
+ ld a, [wOBP1]
+ ld [wd10d], a
+ ld hl, wObjectPalettesCGB
+ ld de, wd0cc
+ ld bc, 8 palettes
+ call CopyDataHLtoDE_SaveRegisters
+ ret
+
+Func_c34e: ; c34e (3:434e)
+ ld a, [wd10c]
+ ld [wOBP0], a
+ ld a, [wd10d]
+ ld [wOBP1], a
+ ld hl, wd0cc
+ ld de, wObjectPalettesCGB
+ ld bc, 8 palettes
+ call CopyDataHLtoDE_SaveRegisters
+ call SetFlushAllPalettes
+ ret
+
+Func_c36a: ; c36a (3:436a)
+ xor a
+ ld [wd323], a
+ ld a, [wCurMap]
+ cp POKEMON_DOME_ENTRANCE
+ jr nz, .asm_c379
+ xor a
+ ld [wd324], a
+.asm_c379
+ ret
+; 0xc37a
+
+ INCROM $c37a, $c41c
+
+Func_c41c: ; c41c (3:441c)
+ ld a, [wd332]
+ sub $40
+ ld [wSCXBuffer], a
+ ld a, [wd333]
+ sub $40
+ ld [wSCYBuffer], a
+ call Func_c430
+ ret
+
+Func_c430: ; c430 (3:4430)
+ push bc
+ ld a, [wd237]
+ sla a
+ sla a
+ sla a
+ ld b, a
+ ld a, [wSCXBuffer]
+ cp $b1
+ jr c, .asm_c445
+ xor a
+ jr .asm_c449
+.asm_c445
+ cp b
+ jr c, .asm_c449
+ ld a, b
+.asm_c449
+ ld [wSCXBuffer], a
+ ld a, [wd238]
+ sla a
+ sla a
+ sla a
+ ld b, a
+ ld a, [wSCYBuffer]
+ cp $b9
+ jr c, .asm_c460
+ xor a
+ jr .asm_c464
+.asm_c460
+ cp b
+ jr c, .asm_c464
+ ld a, b
+.asm_c464
+ ld [wSCYBuffer], a
+ pop bc
+ ret
+
+Func_c469: ; c469 (3:4469)
+ ld a, [wSCXBuffer]
+ add $4
+ and $f8
+ rrca
+ rrca
+ rrca
+ ld [wd233], a
+ ld a, [wSCYBuffer]
+ add $4
+ and $f8
+ rrca
+ rrca
+ rrca
+ ld [wd234], a
+ ret
+
+SetScreenScrollWram: ; c484 (3:4484)
+ ld a, [wSCXBuffer]
+ ld [wSCX], a
+ ld a, [wSCYBuffer]
+ ld [wSCY], a
+ ret
+
+SetScreenScroll: ; c491 (3:4491)
+ ld a, [wSCX]
+ ldh [hSCX], a
+ ld a, [wSCY]
+ ldh [hSCY], a
+ ret
+
+Func_c49c: ; c49c (3:449c)
+ ld a, [wPlayerXCoord]
+ and $1f
+ ld [wPlayerXCoord], a
+ rlca
+ rlca
+ rlca
+ ld [wd332], a
+ ld a, [wPlayerYCoord]
+ and $1f
+ ld [wPlayerYCoord], a
+ rlca
+ rlca
+ rlca
+ ld [wd333], a
+ ret
+
+Func_c4b9: ; c4b9 (3:44b9)
+ xor a
+ ld [wd4ca], a
+ ld [wd4cb], a
+ ld a, $1d
+ farcall Func_80418
+ ld b, $0
+ ld a, [wConsole]
+ cp $2
+ jr nz, .asm_c4d1
+ ld b, $1e
+.asm_c4d1
+ ld a, b
+ ld [wd337], a
+ ld a, $0
+ farcall Func_1299f
+ ld a, [wWhichSprite]
+ ld [wd336], a
+ ld b, $2
+ ld a, [wCurMap]
+ cp OVERWORLD_MAP
+ jr z, .asm_c4ee
+ ld a, [wd0be]
+ ld b, a
+.asm_c4ee
+ ld a, b
+ ld [wd334], a
+ call Func_c5e9
+ ld a, [wCurMap]
+ cp OVERWORLD_MAP
+ call nz, Func_c6f7
+ xor a
+ ld [wd335], a
+ ld [wd338], a
+ ld a, [wCurMap]
+ cp OVERWORLD_MAP
+ jr nz, .asm_c50f
+ farcall Func_10fde
+.asm_c50f
+ ret
+
+Func_c510: ; c510 (3:4510)
+ ld a, [wd336]
+ ld [wWhichSprite], a
+ ld a, [wd335]
+ bit 4, a
+ ret nz
+ bit 0, a
+ call z, Func_c5ac
+ ld a, [wd335]
+ or a
+ jr z, .asm_c535
+ bit 0, a
+ call nz, Func_c66c
+ ld a, [wd335]
+ bit 1, a
+ call nz, Func_c6dc
+ ret
+.asm_c535
+ ldh a, [hButtonsPressed]
+ and START
+ call nz, Func_c74d
+ ret
+
+Func_c53d: ; c53d (3:453d)
+ ld a, [wd336]
+ ld [wWhichSprite], a
+ ld a, [wd335]
+ bit 0, a
+ call nz, Func_c687
+ ld a, [wd335]
+ bit 1, a
+ call nz, Func_c6dc
+ ret
+
+Func_c554: ; c554 (3:4554)
+ ld a, [wd336]
+ ld [wWhichSprite], a
+ ld a, [wCurMap]
+ cp OVERWORLD_MAP
+ jr nz, .asm_c566
+ farcall Func_10e28
+ ret
+.asm_c566
+ push hl
+ push bc
+ push de
+ call Func_c58b
+ ld a, [wSCXBuffer]
+ ld d, a
+ ld a, [wSCYBuffer]
+ ld e, a
+ ld c, SPRITE_ANIM_COORD_X
+ call GetSpriteAnimBufferProperty
+ ld a, [wd332]
+ sub d
+ add $8
+ ld [hli], a
+ ld a, [wd333]
+ sub e
+ add $10
+ ld [hli], a
+ pop de
+ pop bc
+ pop hl
+ ret
+
+Func_c58b: ; c58b (3:458b)
+ push hl
+ ld a, [wPlayerXCoord]
+ ld b, a
+ ld a, [wPlayerYCoord]
+ ld c, a
+ call GetFloorObjectFromPos
+ and $10
+ push af
+ ld c, SPRITE_ANIM_FIELD_0F
+ call GetSpriteAnimBufferProperty
+ pop af
+ ld a, [hl]
+ jr z, .asm_c5a7
+ or $80
+ jr .asm_c5a9
+.asm_c5a7
+ and $7f
+.asm_c5a9
+ ld [hl], a
+ pop hl
+ ret
+
+Func_c5ac: ; c5ac (3:45ac)
+ ldh a, [hButtonsHeld]
+ and D_PAD
+ jr z, .asm_c5bf
+ call Func_c5cb
+ call Func_c5fe
+ ld a, [wd335]
+ and $1
+ jr nz, .asm_c5ca
+.asm_c5bf
+ ldh a, [hButtonsPressed]
+ and A_BUTTON
+ jr z, .asm_c5ca
+ call Func_c71e
+ jr .asm_c5ca
+.asm_c5ca
+ ret
+
+Func_c5cb: ; c5cb (3:45cb)
+ call Func_c5d5
+Func_c5ce: ; c5ce (3:45ce)
+ ld [wd334], a
+ call Func_c5e9
+ ret
+
+Func_c5d5: ; c5d5 (3:45d5)
+ push hl
+ ld hl, Unknown_c5e5
+ or a
+ jr z, .asm_c5e2
+.asm_c5dc
+ rlca
+ jr c, .asm_c5e2
+ inc hl
+ jr .asm_c5dc
+.asm_c5e2
+ ld a, [hl]
+ pop hl
+ ret
+
+Unknown_c5e5: ; c5e5 (3:45e5)
+ db $02,$00,$03,$01
+
+Func_c5e9: ; c5e9 (3:45e9)
+ push bc
+ ld a, [wd336]
+ ld [wWhichSprite], a
+ ld a, [wd337]
+ ld b, a
+ ld a, [wd334]
+ add b
+ farcall Func_12ab5
+ pop bc
+ ret
+
+Func_c5fe: ; c5fe (3:45fe)
+ push bc
+ call Func_c653
+ call AttemptScriptedMovement
+ pop bc
+ ret
+
+StartScriptedMovement: ; c607 (3:4607)
+ push bc
+ ld a, [wd336]
+ ld [wWhichSprite], a
+ ld a, [wd339]
+ call FindScriptedMovementWithOffset
+ call AttemptScriptedMovement
+ pop bc
+ ret
+
+; bc is the location the player is being scripted to move towards.
+AttemptScriptedMovement: ; c619 (3:4619)
+ push hl
+ push bc
+ ld a, b
+ cp $1f
+ jr nc, .quit_movement
+ ld a, c
+ cp $1f
+ jr nc, .quit_movement
+ call GetFloorObjectFromPos
+ and $40 | $80 ; the two impassable objects found in the floor map
+ jr nz, .quit_movement
+ ld a, b
+ ld [wPlayerXCoord], a
+ ld a, c
+ ld [wPlayerYCoord], a
+ ld a, [wd335] ; I believe everything starting here is animation related.
+ or $1
+ ld [wd335], a
+ ld a, $10
+ ld [wd338], a
+ ld c, SPRITE_ANIM_FIELD_0F
+ call GetSpriteAnimBufferProperty
+ set 2, [hl]
+ ld c, SPRITE_ANIM_MOVEMENT_COUNTER
+ call GetSpriteAnimBufferProperty
+ ld a, $4
+ ld [hl], a
+.quit_movement
+ pop bc
+ pop hl
+ ret
+
+Func_c653: ; c653 (3:4653)
+ ld a, [wd334]
+
+FindScriptedMovementWithOffset: ; c656 (3:4656)
+ rlca
+ ld c, a
+ ld b, $0
+ push hl
+ ld hl, ScriptedMovementOffsetTable
+ add hl, bc
+ ld a, [wPlayerXCoord]
+ add [hl]
+ ld b, a
+ inc hl
+ ld a, [wPlayerYCoord]
+ add [hl]
+ ld c, a
+ pop hl
+ ret
+
+Func_c66c: ; c66c (3:466c)
+ push hl
+ push bc
+ ld c, $1
+ ldh a, [hButtonsHeld]
+ bit B_BUTTON_F, a
+ jr z, .asm_c67e
+ ld a, [wd338]
+ cp $2
+ jr c, .asm_c67e
+ inc c
+.asm_c67e
+ ld a, [wd334]
+ call Func_c694
+ pop bc
+ pop hl
+ ret
+
+Func_c687: ; c687 (3:4687)
+ push bc
+ ld a, [wd33a]
+ ld c, a
+ ld a, [wd339]
+ call Func_c694
+ pop bc
+ ret
+
+Func_c694: ; c694 (3:4694)
+ push hl
+ push bc
+ push bc
+ rlca
+ ld c, a
+ ld b, $0
+ ld hl, Unknown_396b
+ add hl, bc
+ pop bc
+.asm_c6a0
+ push hl
+ ld a, [hli]
+ or a
+ call nz, Func_c6cc
+ ld a, [hli]
+ or a
+ call nz, Func_c6d4
+ pop hl
+ ld a, [wd338]
+ dec a
+ ld [wd338], a
+ jr z, .asm_c6b8
+ dec c
+ jr nz, .asm_c6a0
+.asm_c6b8
+ ld a, [wd338]
+ or a
+ jr nz, .asm_c6c3
+ ld hl, wd335
+ set 1, [hl]
+.asm_c6c3
+ call Func_c41c
+ call Func_c469
+ pop bc
+ pop hl
+ ret
+
+Func_c6cc: ; c6cc (3:46cc)
+ push hl
+ ld hl, wd332
+ add [hl]
+ ld [hl], a
+ pop hl
+ ret
+
+Func_c6d4: ; c6d4 (3:46d4)
+ push hl
+ ld hl, wd333
+ add [hl]
+ ld [hl], a
+ pop hl
+ ret
+
+Func_c6dc: ; c6dc (3:46dc)
+ push hl
+ ld hl, wd335
+ res 0, [hl]
+ res 1, [hl]
+ call Func_c6f7
+ call Func_3997
+ call Func_c70d
+ ld a, [wd0bf]
+ cp $1
+ call z, Func_c9c0
+ pop hl
+ ret
+
+Func_c6f7: ; c6f7 (3:46f7)
+ ld a, [wd336]
+ ld [wWhichSprite], a
+ ld c, SPRITE_ANIM_FIELD_0F
+ call GetSpriteAnimBufferProperty
+ res 2, [hl]
+ ld c, SPRITE_ANIM_MOVEMENT_COUNTER
+ call GetSpriteAnimBufferProperty
+ ld a, $ff
+ ld [hl], a
+ ret
+
+Func_c70d: ; c70d (3:470d)
+ push hl
+ ld hl, wd0bb
+ ld a, [wCurMap]
+ cp [hl]
+ jr z, .asm_c71c
+ ld hl, wd0b4
+ set 4, [hl]
+.asm_c71c
+ pop hl
+ ret
+
+Func_c71e: ; c71e (3:471e)
+ ld a, $ff
+ ld [wd3b6], a
+ call Func_c653
+ call GetFloorObjectFromPos
+ and $40
+ jr z, .asm_c73d
+ farcall Func_1c72e
+ jr c, .asm_c73d
+ ld a, [wd3aa]
+ ld [wd3b6], a
+ ld a, $2
+ jr .asm_c748
+.asm_c73d
+ call Func_3a5e
+ jr nc, .asm_c746
+ ld a, $3
+ jr .asm_c748
+.asm_c746
+ or a
+ ret
+.asm_c748
+ ld [wd0bf], a
+ scf
+ ret
+
+Func_c74d: ; c74d (3:474d)
+ push hl
+ push bc
+ push de
+ call MainMenu_c75a
+ call CloseDialogueBox
+ pop de
+ pop bc
+ pop hl
+ ret
+
+MainMenu_c75a: ; c75a (3:475a)
+ call PauseSong
+ ld a, MUSIC_PAUSE_MENU
+ call PlaySong
+ call Func_c797
+.asm_c765
+ ld a, $1
+ call Func_c29b
+.asm_c76a
+ call DoFrameIfLCDEnabled
+ call HandleMenuInput
+ jr nc, .asm_c76a
+ ld a, e
+ ld [wd0b8], a
+ ldh a, [hCurrentMenuItem]
+ cp e
+ jr nz, .asm_c793
+ cp $5
+ jr z, .asm_c793
+ call Func_c2a3
+ ld a, [wd0b8]
+ ld hl, PointerTable_c7a2
+ call JumpToFunctionInTable
+ ld hl, Func_c797
+ call Func_c32b
+ jr .asm_c765
+.asm_c793
+ call ResumeSong
+ ret
+
+Func_c797: ; c797 (3:4797)
+ ld a, [wd0b8]
+ ld hl, Unknown_cd98
+ farcall Func_111e9
+ ret
+
+PointerTable_c7a2: ; c7a2 (3:47a2)
+ dw Func_c7ae
+ dw Func_c7b3
+ dw Func_c7b8
+ dw Func_c7cc
+ dw Func_c7e0
+ dw Func_c7e5
+
+Func_c7ae: ; c7ae (3:47ae)
+ farcall Func_10059
+ ret
+
+Func_c7b3: ; c7b3 (3:47b3)
+ farcall Func_100a2
+ ret
+
+Func_c7b8: ; c7b8 (3:47b8)
+ xor a
+ ldh [hSCX], a
+ ldh [hSCY], a
+ call Set_OBJ_8x16
+ farcall Func_1288c
+ farcall Func_8db0
+ call Set_OBJ_8x8
+ ret
+
+Func_c7cc: ; c7cc (3:47cc)
+ xor a
+ ldh [hSCX], a
+ ldh [hSCY], a
+ call Set_OBJ_8x16
+ farcall Func_1288c
+ farcall Func_a288
+ call Set_OBJ_8x8
+ ret
+
+Func_c7e0: ; c7e0 (3:47e0)
+ farcall Func_10548
+ ret
+
+Func_c7e5: ; c7e5 (3:47e5)
+ farcall Func_103d2
+ ret
+
+PC_c7ea: ; c7ea (3:47ea)
+ ld a, MUSIC_PC_MAIN_MENU
+ call PlaySong
+ call Func_c241
+ call $4915
+ call DoFrameIfLCDEnabled
+ ldtx hl, TurnedPCOnText
+ call Func_2c73
+ call $484e
+.asm_c801
+ ld a, $1
+ call Func_c29b
+.asm_c806
+ call DoFrameIfLCDEnabled
+ call HandleMenuInput
+ jr nc, .asm_c806
+ ld a, e
+ ld [wd0b9], a
+ ldh a, [hCurrentMenuItem]
+ cp e
+ jr nz, .asm_c82f
+ cp $4
+ jr z, .asm_c82f
+ call Func_c2a3
+ ld a, [wd0b9]
+ ld hl, $4846
+ call JumpToFunctionInTable
+ ld hl, $484e
+ call Func_c32b
+ jr .asm_c801
+.asm_c82f
+ call Func_c135
+ call DoFrameIfLCDEnabled
+ ldtx hl, TurnedPCOffText
+ call Func_c891
+ call CloseDialogueBox
+ xor a
+ ld [wd112], a
+ call Func_39fc
+ ret
+; 0xc846
+
+ INCROM $c846, $c891
+
+Func_c891: ; c891 (3:4891)
+ push hl
+ ld a, [wd0c1]
+ bit 0, a
+ jr z, .asm_c8a1
+ ld hl, wd3b9
+ ld a, [hli]
+ or [hl]
+ call nz, Func_c135
+
+.asm_c8a1
+ xor a
+ ld hl, wd3b9
+ ld [hli], a
+ ld [hl], a
+ pop hl
+ ld a, $1
+ call Func_c29b
+ call Func_c241
+ call $4915
+ call DoFrameIfLCDEnabled
+ call Func_2c73
+ ret
+
+Func_c8ba: ; c8ba (3:48ba)
+ ld a, e
+ or d
+ jr z, Func_c891
+ push hl
+ ld a, [wd0c1]
+ bit 0, a
+ jr z, .asm_c8d4
+ ld hl, wd3b9
+ ld a, [hli]
+ cp e
+ jr nz, .asm_c8d1
+ ld a, [hl]
+ cp d
+ jr z, .asm_c8d4
+
+.asm_c8d1
+ call Func_c135
+
+.asm_c8d4
+ ld hl, wd3b9
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ pop hl
+ ld a, $1
+ call Func_c29b
+ call Func_c241
+ call $4915
+ call DoFrameIfLCDEnabled
+ call $2c62
+ ret
+; 0xc8ed
+
+Func_c8ed: ; c8ed (3:c8ed)
+ push hl
+ push bc
+ push de
+ push hl
+ ld a, $1
+ call Func_c29b
+ call $4915
+ call DoFrameIfLCDEnabled
+ pop hl
+ ld a, l
+ or h
+ jr z, .asm_c90e
+ push hl
+ xor a
+ ld hl, wd3b9
+ ld [hli], a
+ ld [hl], a
+ pop hl
+ call YesOrNoMenuWithText
+ jr .asm_c911
+
+.asm_c90e
+ call YesOrNoMenu
+
+.asm_c911
+ pop de
+ pop bc
+ pop hl
+ ret
+
+Func_c915: ; c915 (3:4915)
+ push bc
+ push de
+ ld de, $000c
+ ld bc, $1406
+ call AdjustCoordinatesForWindow
+ call $43ca
+ pop de
+ pop bc
+ ret
+
+Func_c926: ; c926 (3:4926)
+ push bc
+ call Func_39c3
+ ld a, [wd3aa]
+ ld [wd3b6], a
+ farcall Func_1c768
+ pop bc
+
+Func_c935: ; c935 (3:4935)
+ push hl
+ ld hl, wd0c6
+ ld [hl], c
+ inc hl
+ ld [hl], b
+ ld a, $3
+ ld [wd0bf], a
+ pop hl
+ ret
+
+Func_c943: ; c943 (3:4943)
+ push hl
+ push bc
+ push de
+ ld l, $0
+ call Func_3abd
+ jr nc, .asm_c98f
+.asm_c94d
+ ld a, l
+ ld [wd4c4], a
+ ld a, h
+ ld [wd4c5], a
+ ld a, $4
+ ld [wd4c6], a
+ ld de, wd3ab
+ ld bc, $0006
+ call Func_3bf5
+ ld a, [wd3ab]
+ or a
+ jr z, .asm_c98f
+ push hl
+ ld a, [wd3af]
+ ld l, a
+ ld a, [wd3b0]
+ ld h, a
+ or l
+ jr z, .asm_c97a
+ call Func_3c45
+ jr nc, .asm_c988
+.asm_c97a
+ ld a, [wd3ab]
+ farcall Func_11857
+ call Func_c998
+ farcall Func_1c485
+.asm_c988
+ pop hl
+ ld bc, $0006
+ add hl, bc
+ jr .asm_c94d
+.asm_c98f
+ ld l, $2
+ call Func_c9c2
+ pop de
+ pop bc
+ pop hl
+ ret
+
+Func_c998: ; c998 (3:4998)
+ ld a, [wd3ab]
+ cp $22
+ ret nz
+ ld a, [wd3d0]
+ or a
+ ret z
+ ld b, $4
+ ld a, [wConsole]
+ cp $2
+ jr nz, .asm_c9ae
+ ld b, $e
+.asm_c9ae
+ ld a, b
+ ld [wd3b1], a
+ ld a, $0
+ ld [wd3b2], a
+ ret
+
+Func_c9b8: ; c9b8 (3:49b8)
+ ld l, $8
+ jr Func_c9c2
+
+Func_c9bc: ; c9bc (3:49bc)
+ ld l, $a
+ jr Func_c9c2
+
+Func_c9c0: ; c9c0 (3:49c0)
+ ld l, $c
+
+Func_c9c2: ; c9c2 (3:49c2)
+ call Func_3abd
+ ret nc
+ jp hl
+
+Func_c9c7: ; c9c7 (3:49c7)
+ ld l, $e
+ jr Func_c9c2
+
+Func_c9cb: ; c9cb (3:49cb)
+ push hl
+ push bc
+ ld hl, wEventFlags
+ ld bc, $0040
+.asm_c9d3
+ xor a
+ ld [hli], a
+ dec bc
+ ld a, b
+ or c
+ jr nz, .asm_c9d3
+ pop bc
+ pop hl
+ ret
+
+Func_c9dd: ; c9dd (3:49dd)
+ xor a
+ ld [wd411], a
+ call Func_c9e8
+ call Func_ca0e
+ ret
+
+Func_c9e8: ; c9e8 (3:49e8)
+ ld c, $0
+ call Func_ca69
+ db $13
+ cp $2
+ jr c, .asm_ca04
+.asm_c9f2
+ call UpdateRNGSources
+ and $3
+ ld c, a
+ ld b, $0
+ ld hl, Unknown_ca0a
+ add hl, bc
+ ld a, [wd0bb]
+ cp [hl]
+ jr z, .asm_c9f2
+.asm_ca04
+ ld a, c
+ call Func_ca8f
+ db $34
+ ret
+
+Unknown_ca0a: ; ca0a (3:4a04)
+ INCROM $ca0a, $ca0e
+
+Func_ca0e: ; ca0e (3:4a0e)
+ ld a, [wd32e]
+ cp $b
+ jr z, .asm_ca68
+ call Func_ca69
+ db $22
+ or a
+ jr nz, .asm_ca4a
+ call Func_ca69
+ db $40
+ cp $7
+ jr z, .asm_ca68
+ or a
+ jr z, .asm_ca33
+ cp $2
+ jr z, .asm_ca62
+ ld c, $1
+ call Func_ca8f
+ db $40
+ jr .asm_ca62
+.asm_ca33
+ call Func_ca69
+ db $3f
+ cp $7
+ jr z, .asm_ca68
+ or a
+ jr z, .asm_ca68
+ cp $2
+ jr z, .asm_ca68
+ ld c, $1
+ call Func_ca8f
+ db $3f
+ jr .asm_ca68
+.asm_ca4a
+ call UpdateRNGSources
+ ld c, $1
+ and $3
+ or a
+ jr z, .asm_ca56
+ ld c, $0
+.asm_ca56
+ call Func_ca8f
+ db $41
+ jr .asm_ca5c
+.asm_ca5c
+ ld c, $7
+ call Func_ca8f
+ db $40
+.asm_ca62
+ ld c, $7
+ call Func_ca8f
+ db $3f
+.asm_ca68
+ ret
+
+Func_ca69: ; ca69 (3:4a69)
+ call Func_cab3
+CheckIfEventFlagSet: ; ca6c (3:4a6c)
+ push hl
+ push bc
+ call GetEventFlagMod
+ ld c, [hl]
+ ld a, [wd3d1]
+.asm_ca75
+ bit 0, a
+ jr nz, .asm_ca7f
+ srl a
+ srl c
+ jr .asm_ca75
+.asm_ca7f
+ and c
+ pop bc
+ pop hl
+ or a
+ ret
+; 0xca84
+
+ INCROM $ca84, $ca8f
+
+Func_ca8f: ; ca8f (3:4a8f)
+ call Func_cab3
+
+; a - pointer on table for cb1d, c - set or reset control bit
+ModifyEventFlags: ; ca92 (3:4a92)
+ push hl
+ push bc
+ call GetEventFlagMod
+ ld a, [wd3d1]
+.asm_ca9a
+ bit 0, a
+ jr nz, .asm_caa4
+ srl a
+ sla c
+ jr .asm_ca9a
+.asm_caa4
+ ld a, [wd3d1]
+ and c
+ ld c, a
+ ld a, [wd3d1]
+ cpl
+ and [hl]
+ or c
+ ld [hl], a
+ pop bc
+ pop hl
+ ret
+
+Func_cab3: ; cab3 (3:4ab3)
+ push hl
+ ld hl, sp+$4
+ push bc
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ ld a, [bc]
+ inc bc
+ ld [hl], b
+ dec hl
+ ld [hl], c
+ pop bc
+ pop hl
+ ret
+; 0xcac2
+
+ INCROM $cac2, $cac5
+
+SetEventFlags: ; cac5 (3:4ac5)
+ push bc
+ ld c, $ff
+ call ModifyEventFlags
+ pop bc
+ ret
+; 0xcacd
+
+ INCROM $cacd, $cad0
+
+Func_cad0: ; cad0 (3:4ad0)
+ push bc
+ ld c, $0
+ call ModifyEventFlags
+ pop bc
+ ret
+
+Func_cad8: ; cad8 (3:4ad8)
+ push hl
+ push bc
+ ld hl, $4b15
+ ld bc, $0008
+.asm_cae0
+ ld a, [hli]
+ call CheckIfEventFlagSet
+ jr z, .asm_cae7
+ inc b
+
+.asm_cae7
+ dec c
+ jr nz, .asm_cae0
+ ld c, b
+ call Func_ca8f
+ ld l, $79
+ push af
+ cp $8
+ jr nc, .asm_caff
+ cp $7
+ jr nc, .asm_cb05
+ cp $3
+ jr nc, .asm_cb0b
+ jr .asm_cb11
+
+.asm_caff
+ ld a, $c
+ farcall $4, $4a70
+
+.asm_cb05
+ ld a, $b
+ farcall $4, $4a70
+
+.asm_cb0b
+ ld a, $a
+ farcall $4, $4a70
+
+.asm_cb11
+ pop af
+ pop bc
+ pop hl
+ ret
+; 0xcb15
+
+ INCROM $cb15, $cb1d
+
+GetEventFlagMod: ; cb1d (3:4b1d)
+ push bc
+ ld c, a
+ ld b, $0
+ sla c
+ rl b
+ ld hl, EventFlagMods
+ add hl, bc
+ ld a, [hli]
+ ld c, a
+ ld a, [hl]
+ ld [wd3d1], a
+ ld b, $0
+ ld hl, wEventFlags
+ add hl, bc
+ pop bc
+ ret
+
+; offset - bytes to set or reset
+EventFlagMods: ; cb37 (3:4b37)
+ INCROM $cb37, $cc32
+
+Func_cc32: ; cc32 (3:4c32)
+ push hl
+ ld hl, wd0c8
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ pop hl
+ call Func_c8ba
+ ret
+; 0xcc3e
+
+ INCROM $cc3e, $cc42
+
+; called when pressing a in front of an object. creates a pointer to the data right after an RST20
+; was called, then runs RunOverworldScript to handle that data
+RST20: ; cc42 (3:4c42)
+ pop hl
+ ld a, l
+ ld [wOWScriptPointer], a
+ ld a, h
+ ld [wOWScriptPointer+1], a
+ xor a
+ ld [wBreakOWScriptLoop], a
+.asm_cc4f
+ call RunOverworldScript
+ ld a, [wBreakOWScriptLoop] ; if you break out, it jumps
+ or a
+ jr z, .asm_cc4f
+ ld hl, wOWScriptPointer
+ ld a, [hli]
+ ld c, a
+ ld b, [hl]
+ push bc
+ ret
+
+IncreaseOWScriptPointerBy1: ; cc60 (3:4c60)
+ ld a, 1
+ jr IncreaseOWScriptPointer
+IncreaseOWScriptPointerBy2: ; cc64 (3:4c64)
+ ld a, 2
+ jr IncreaseOWScriptPointer
+IncreaseOWScriptPointerBy4: ; cc68 (3:4c68)
+ ld a, 4
+ jr IncreaseOWScriptPointer
+IncreaseOWScriptPointerBy5: ; cc6c (3:4c6c)
+ ld a, 5
+ jr IncreaseOWScriptPointer
+IncreaseOWScriptPointerBy6: ; cc70 (3:4c70)
+ ld a, 6
+ jr IncreaseOWScriptPointer
+IncreaseOWScriptPointerBy7: ; cc74 (3:4c74)
+ ld a, 7
+ jr IncreaseOWScriptPointer
+IncreaseOWScriptPointerBy3: ; cc78 (3:4c78)
+ ld a, 3
+
+IncreaseOWScriptPointer: ; cc7a (3:4c7a)
+ ld c, a
+ ld a, [wOWScriptPointer]
+ add c
+ ld [wOWScriptPointer], a
+ ld a, [wOWScriptPointer+1]
+ adc 0
+ ld [wOWScriptPointer+1], a
+ ret
+
+SetOWScriptPointer: ; cc8b (3:4c8b)
+ ld hl, wOWScriptPointer
+ ld [hl], c
+ inc hl
+ ld [hl], b
+ ret
+; 0xcc92
+
+ INCROM $cc92, $cc96
+
+GetOWSArgs1AfterPointer: ; cc96 (3:4c96)
+ ld a, $1
+ jr GetOWSArgsAfterPointer
+
+GetOWSArgs2AfterPointer: ; cc9a (3:4c9a)
+ ld a, $2
+ jr GetOWSArgsAfterPointer
+GetOWSArgs3AfterPointer: ; cc9e (3:4c9e)
+ ld a, $3
+
+GetOWSArgsAfterPointer: ; cca0 (3:4ca0)
+ push hl
+ ld l, a
+ ld a, [wOWScriptPointer]
+ add l
+ ld l, a
+ ld a, [wOWScriptPointer+1]
+ adc $0
+ ld h, a
+ ld a, [hli]
+ ld c, a
+ ld b, [hl]
+ pop hl
+ or b
+ ret
+
+Func_ccb3: ; ccb3 (3:4cb3)
+ ld a, $ff
+ ld [wd415], a
+ ret
+
+Func_ccb9: ; ccb9 (3:4cb9)
+ xor a
+ ld [wd415], a
+ ret
+
+OWScript_EndScriptLoop1: ; ccbe (3:4cbe)
+OWScript_EndScriptLoop2: ; ccbe (3:4cbe)
+OWScript_EndScriptLoop3: ; ccbe (3:4cbe)
+OWScript_EndScriptLoop4: ; ccbe (3:4cbe)
+OWScript_EndScriptLoop5: ; ccbe (3:4cbe)
+OWScript_EndScriptLoop6: ; ccbe (3:4cbe)
+OWScript_EndScriptLoop7: ; ccbe (3:4cbe)
+OWScript_EndScriptLoop8: ; ccbe (3:4cbe)
+OWScript_EndScriptLoop9: ; ccbe (3:4cbe)
+OWScript_EndScriptLoop10: ; ccbe (3:4cbe)
+ ld a, $01
+ ld [wBreakOWScriptLoop], a
+ jp IncreaseOWScriptPointerBy1
+
+OWScript_CloseTextBox: ; ccc6 (3:4cc6)
+ call CloseDialogueBox
+ jp IncreaseOWScriptPointerBy1
+
+OWScript_EndScriptCloseText: ; cccc (3:4ccc)
+ call OWScript_CloseTextBox
+ call OWScript_EndScriptLoop1
+ pop hl
+ ret
+
+; args: 2-Text String Index
+OWScript_PrintTextString: ; ccd4 (3:4cd4)
+ ld l, c
+ ld h, b
+ call Func_cc32
+ jp IncreaseOWScriptPointerBy3
+
+Func_ccdc: ; ccdc (3:4cdc)
+ ld l, c
+ ld h, b
+ call Func_c891
+ jp IncreaseOWScriptPointerBy3
+
+Func_cce4: ; cce4 (3:4ce4)
+ ld a, $1
+ ld [wcd9a], a
+
+; Asks the player a question then jumps if they answer yes
+OWScript_AskQuestionJump: ; cce9 (3:4ce9)
+ ld l, c
+ ld h, b
+ call Func_c8ed
+ ld a, [hCurrentMenuItem]
+ ld [wd415], a
+ jr c, .asm_ccfe
+ call GetOWSArgs3AfterPointer
+ jr z, .asm_ccfe
+ jp SetOWScriptPointer
+
+.asm_ccfe
+ jp IncreaseOWScriptPointerBy5
+
+; args - prize cards, deck id, duel theme index
+; sets a battle up, doesn't start until we break out of the script system.
+OWScript_StartBattle: ; cd01 (3:4d01)
+ call Func_cd66
+ ld a, [wd3b6]
+ ld l, $0
+ call Func_39ad
+ ld a, [hl]
+ farcall Func_118d3
+ ld a, [wcc19]
+ cp $ff
+ jr nz, .asm_cd26
+ ld a, [wd695]
+ ld c, a
+ ld b, $0
+ ld hl, $4d63
+ add hl, bc
+ ld a, [hl]
+ ld [wcc19], a
+.asm_cd26
+ ld a, [wd3b6]
+ ld l, $0
+ call Func_39ad
+ ld a, [hl]
+asm_cd2f
+ ld [wd0c4], a
+ ld [wcc14], a
+ push af
+ farcall Func_1c557
+ ld [wd0c5], a
+ pop af
+ farcall Func_118a7
+ ld a, GAME_EVENT_DUEL
+ ld [wGameEvent], a
+ ld hl, wd0b4
+ set 6, [hl]
+ jp IncreaseOWScriptPointerBy4
+
+Func_cd4f: ; cd4f (3:4d4f)
+ call Func_cd66
+ ld a, [wd696]
+ farcall Func_118bf
+ ld a, $16
+ ld [wMatchStartTheme], a
+ ld a, [wd696]
+ jr asm_cd2f
+
+Unknown_dd63: ; cd4f (3:4d4f)
+ INCROM $cd63, $cd66
+
+Func_cd66: ; cd66 (3:4d66)
+ ld a, c
+ ld [wcc18], a
+ ld a, b
+ ld [wcc19], a
+ call GetOWSArgs3AfterPointer
+ ld a, c
+ ld [wDuelTheme], a
+ ret
+
+Func_cd76: ; cd76 (3:4d76)
+ ld a, GAME_EVENT_BATTLE_CENTER
+ ld [wGameEvent], a
+ ld hl, wd0b4
+ set 6, [hl]
+ jp IncreaseOWScriptPointerBy1
+
+Func_cd83: ; cd83 (3:4d83)
+ ld a, [wd415]
+ or a
+ jr nz, .asm_cd8c
+ call GetOWSArgs3AfterPointer
+.asm_cd8c
+ ld l, c
+ ld h, b
+ call Func_cc32
+ jp IncreaseOWScriptPointerBy5
+
+Func_cd94: ; cd94 (3:4d94)
+ call Func_ca69
+ ld b, h
+Unknown_cd98:
+ dec a
+ and $3
+ add a
+ inc a
+ call GetOWSArgsAfterPointer
+ ld l, c
+ ld h, b
+ call Func_cc32
+ jp IncreaseOWScriptPointerBy7
+
+Func_cda8: ; cda8 (3:4da8)
+ ld a, [wd415]
+ or a
+ jr nz, .asm_cdb1
+ call GetOWSArgs3AfterPointer
+.asm_cdb1
+ ld l, c
+ ld h, b
+ call Func_c891
+ jp IncreaseOWScriptPointerBy5
+
+OWScript_PrintTextCloseBox: ; cdb9 (3:4db9)
+ ld l, c
+ ld h, b
+ call Func_cc32
+ call CloseDialogueBox
+ ld a, $1
+ ld [wBreakOWScriptLoop], a
+ call IncreaseOWScriptPointerBy3
+ pop hl
+ ret
+
+Func_cdcb: ; cdcb (3:4dcb)
+ ld a, [wd3b6]
+ ld [wd3aa], a
+Func_4dd1: ; cdd1 (3:4dd1)
+ farcall Func_1c50a
+ jp IncreaseOWScriptPointerBy1
+
+Func_cdd8: ; cdd8 (3:4dd8)
+ ld a, [wd3aa]
+ push af
+ ld a, [wd3ab]
+ push af
+ ld a, [wd696]
+ ld [wd3ab], a
+ call Func_39c3
+ call Func_4dd1
+ pop af
+ ld [wd3ab], a
+ pop af
+ ld [wd3aa], a
+ ret
+
+Func_cdf5: ; cdf5 (3:4df5)
+ ld a, [wd3aa]
+ push af
+ ld a, [wd3ab]
+ push af
+ ld a, [wd696]
+ ld [wd3ab], a
+ ld a, c
+ ld [wd3ac], a
+ ld a, b
+ ld [wd3ad], a
+ ld a, $2
+ ld [wd3ae], a
+ ld a, [wd3ab]
+ farcall Func_11857
+ farcall Func_1c485
+ pop af
+ ld [wd3ab], a
+ pop af
+ ld [wd3aa], a
+ jp IncreaseOWScriptPointerBy3
+
+Func_ce26: ; ce26 (3:4e26)
+ ld a, [wd3b6]
+ ld [wd3aa], a
+ farcall Func_1c455
+ rlca
+ add c
+ ld l, a
+ ld a, b
+ adc $0
+ ld h, a
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+
+Func_ce3a: ; ce3a (3:4e3a)
+ farcall Func_1c78d
+.asm_ce3e
+ call DoFrameIfLCDEnabled
+ farcall Func_1c7de
+ jr nz, .asm_ce3e
+ jp IncreaseOWScriptPointerBy3
+
+Func_ce4a: ; ce4a (3:4e4a)
+ ld a, [wd3b6]
+ ld [wd3aa], a
+ jr Func_ce3a
+
+Func_ce52: ; ce52 (3:4e52)
+ ld a, [wd3aa]
+ push af
+ ld a, [wd3ab]
+ push af
+ ld a, [wd696]
+asm_ce5d
+ ld [wd3ab], a
+ call Func_39c3
+ call Func_ce3a
+ pop af
+ ld [wd3ab], a
+ pop af
+ ld [wd3aa], a
+ ret
+
+Func_ce6f: ; ce6f (3:4e6f)
+ ld a, [wd3aa]
+ push af
+ ld a, [wd3ab]
+ push af
+ ld a, c
+ push af
+ call GetOWSArgs2AfterPointer
+ push bc
+ call IncreaseOWScriptPointerBy1
+ pop bc
+ pop af
+ jr asm_ce5d
+
+Func_ce84: ; ce84 (3:4e84)
+ call Func_c135
+ jp IncreaseOWScriptPointerBy1
+
+; args: booster pack index, booster pack index, booster pack index
+OWScript_GiveBoosterPacks: ; ce8a (3:4e8a)
+ xor a
+ ld [wd117], a
+ push bc
+ call Func_c2a3
+ pop bc
+ push bc
+ ld a, c
+ farcall BoosterPack_1031b
+ ld a, 1
+ ld [wd117], a
+ pop bc
+ ld a, b
+ cp $ff
+ jr z, .asm_ceb4
+ farcall BoosterPack_1031b
+ call GetOWSArgs3AfterPointer
+ ld a, c
+ cp $ff
+ jr z, .asm_ceb4
+ farcall BoosterPack_1031b
+.asm_ceb4
+ call Func_c2d4
+ jp IncreaseOWScriptPointerBy4
+
+Func_ceba: ; ceba (3:4eba)
+ xor a
+ ld [wd117], a
+ call Func_c2a3
+ ld hl, $4edd
+.asm_cec4
+ ld a, [hl]
+ cp $ff
+ jr z, .asm_ced7
+ push hl
+ farcall BoosterPack_1031b
+ ld a, $1
+ ld [wd117], a
+ pop hl
+ inc hl
+ jr .asm_cec4
+.asm_ced7
+ call Func_c2d4
+ jp IncreaseOWScriptPointerBy1
+; 0xcedd
+
+ INCROM $cedd, $cee2
+
+Func_cee2: ; cee2 (3:4ee2)
+ call Func_c2a3
+ ld a, c
+ cp $ff
+ jr z, .asm_cf09
+ or a
+ jr nz, .asm_cef0
+ ld a, [wd697]
+
+.asm_cef0
+ push af
+ farcall Func_10000
+ farcall Func_10031
+ pop af
+ bank1call Func_7594
+ call Func_c1a4
+ call DoFrameIfLCDEnabled
+ call Func_c2d4
+ jp IncreaseOWScriptPointerBy2
+
+.asm_cf09
+ xor a
+ jr .asm_cef0
+
+Func_cf0c: ; cf0c (3:4f0c)
+ ld a, c
+ call GetCardCountInCollectionAndDecks
+ jr asm_cf16
+
+Func_cf12: ; cf12 (3:4f12)
+ ld a, c
+ call GetCardCountInCollection
+
+asm_cf16
+ or a
+ jr nz, asm_cf1f
+
+asm_cf19
+ call Func_ccb9
+ jp IncreaseOWScriptPointerBy4
+
+asm_cf1f
+ call Func_ccb3
+ call GetOWSArgs2AfterPointer
+ jr z, asm_cf2a
+ jp SetOWScriptPointer
+
+asm_cf2a
+ jp IncreaseOWScriptPointerBy4
+
+Func_cf2d: ; cf2d (3:4f2d)
+ push bc
+ call IncreaseOWScriptPointerBy1
+ pop bc
+ call GetRawAmountOfCardsOwned
+ ld a, h
+ cp b
+ jr nz, .asm_cf3b
+ ld a, l
+ cp c
+
+.asm_cf3b
+ jr nc, asm_cf1f
+ jr asm_cf19
+
+Func_cf3f: ; cf3f (3:4f3f)
+ ld a, c
+ or a
+ jr nz, .asm_cf46
+ ld a, [wd697]
+
+.asm_cf46
+ call AddCardToCollection
+ jp IncreaseOWScriptPointerBy2
+
+Func_cf4c: ; cf4c (3:4f4c)
+ ld a, c
+ call RemoveCardFromCollection
+ jp IncreaseOWScriptPointerBy2
+
+Func_cf53: ; cf53 (3:4f53)
+ ld c, $1
+ ld b, $0
+.asm_cf57
+ ld a, c
+ call GetCardCountInCollection
+ add b
+ ld b, a
+ inc c
+ ld a, c
+ cp $8
+ jr c, .asm_cf57
+ ld a, b
+ or a
+ jr nz, Func_cf6d
+Func_cf67: ; cf67 (3:4f67)
+ call Func_ccb9
+ jp IncreaseOWScriptPointerBy3
+
+Func_cf6d: ; cf6d (3:4f6d)
+ call Func_ccb3
+ call GetOWSArgs1AfterPointer
+ jr z, .asm_cf78
+ jp SetOWScriptPointer
+
+.asm_cf78
+ jp IncreaseOWScriptPointerBy3
+
+Func_cf7b: ; cf7b (3:4f7b)
+ ld c, $1
+.asm_cf7d
+ push bc
+ ld a, c
+ call GetCardCountInCollection
+ jr c, .asm_cf8c
+ ld b, a
+.asm_cf85
+ ld a, c
+ call RemoveCardFromCollection
+ dec b
+ jr nz, .asm_cf85
+
+.asm_cf8c
+ pop bc
+ inc c
+ ld a, c
+ cp $8
+ jr c, .asm_cf7d
+ jp IncreaseOWScriptPointerBy1
+
+; This function doesn't look like a valid function, but it's pointed to in the table.
+Func_cf96: ; cf96 (3:4f96)
+ ld c, $0
+ call Func_ca69
+ ld de, $28b7
+ ld hl, $08fe
+ jr c, .asm_cfa4
+ inc c
+
+.asm_cfa4
+ call Func_ca69
+ rla
+ cp $8
+ jr c, .asm_cfad
+ inc c
+
+.asm_cfad
+ call Func_ca69
+.asm_cfb0
+ jr nz, .asm_cfb0
+ ld [$0138], sp
+ inc c
+ ld a, c
+ rlca
+ add $3
+ call GetOWSArgsAfterPointer
+ jp SetOWScriptPointer
+
+Func_cfc0: ; cfc0 (3:4fc0)
+ call GetOWSArgs1AfterPointer
+ jp SetOWScriptPointer
+
+Func_cfc6: ; cfc6 (3:4fc6)
+ ld a, [wd3b6]
+ ld [wd3aa], a
+ ld a, c
+ farcall Func_1c52e
+ jp IncreaseOWScriptPointerBy2
+
+Func_cfd4: ; cfd4 (3:4fd4)
+ call Func_ca69
+ dec l
+ ld b, a
+.asm_cfd9
+ ld a, $5
+ call Random
+ ld e, $1
+ ld c, a
+ push bc
+ or a
+ jr z, .asm_cfea
+.asm_cfe5
+ sla e
+ dec c
+ jr nz, .asm_cfe5
+
+.asm_cfea
+ ld a, e
+ and b
+ pop bc
+ jr nz, .asm_cfd9
+ ld a, e
+ or b
+ push bc
+ ld c, a
+ call Func_ca8f
+ dec l
+ pop bc
+ ld b, $0
+ ld hl, $5006
+ add hl, bc
+ ld c, [hl]
+ call Func_ca8f
+ dec hl
+ jp IncreaseOWScriptPointerBy1
+
+ INCROM $d006, $d00b
+
+Func_d00b: ; d00b (3:500b)
+ sla c
+ ld b, $0
+ ld hl, wTxRam2
+ add hl, bc
+ push hl
+ call Func_ca69
+ dec hl
+ ld e, a
+ ld d, $0
+ call GetCardName
+ pop hl
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ jp IncreaseOWScriptPointerBy2
+
+Func_d025: ; d025 (3:5025)
+ call Func_ca69
+ dec hl
+ call GetCardCountInCollectionAndDecks
+ jp c, Func_cf67
+ jp Func_cf6d
+
+Func_d032: ; d032 (3:5032)
+ call Func_ca69
+ dec hl
+ call GetCardCountInCollection
+ jp c, Func_cf67
+ jp Func_cf6d
+
+Func_d03f: ; d03f (3:503f)
+ call Func_ca69
+ dec hl
+ call RemoveCardFromCollection
+ jp IncreaseOWScriptPointerBy1
+
+OWScript_ScriptJump: ; d049 (3:5049)
+ call GetOWSArgs1AfterPointer
+ jp SetOWScriptPointer
+
+Func_d04f: ; d04f (3:504f)
+ call Func_cad8
+ jp IncreaseOWScriptPointerBy1
+
+Func_d055: ; d055 (3:5055)
+ ld a, c
+ call Func_c5ce
+ jp IncreaseOWScriptPointerBy2
+
+
+OWScript_MovePlayer: ; 505c (3:505c)
+ ld a, c
+ ld [wd339], a
+ ld a, b
+ ld [wd33a], a
+ call StartScriptedMovement
+.asm_d067
+ call DoFrameIfLCDEnabled
+ call SetScreenScroll
+ call Func_c53d
+ ld a, [wd335]
+ and $03
+ jr nz, .asm_d067
+ call DoFrameIfLCDEnabled
+ call SetScreenScroll
+ jp IncreaseOWScriptPointerBy3
+
+Func_d080: ; d080 (3:5080)
+ ld a, c
+ farcall Func_11893
+ jp IncreaseOWScriptPointerBy2
+
+Func_d088: ; d088 (3:5088)
+ ld a, c
+ ld [wd3ab], a
+ call GetOWSArgs2AfterPointer
+ call Func_c926
+ jp IncreaseOWScriptPointerBy4
+
+Func_d095: ; d095 (3:5095)
+ ld a, [wd3b6]
+ ld [wd3aa], a
+ push bc
+ call GetOWSArgs3AfterPointer
+ ld a, [wd3b6]
+ ld l, $5
+ call Func_39ad
+ res 4, [hl]
+ ld a, [hl]
+ or c
+ ld [hl], a
+ pop bc
+ ld e, c
+ ld a, [wConsole]
+ cp $2
+ jr nz, .asm_d0b6
+ ld e, b
+
+.asm_d0b6
+ ld a, e
+ farcall Func_1c57b
+ jp IncreaseOWScriptPointerBy4
+
+Func_d0be: ; d0be (3:50be)
+ ld a, [wd3b6]
+ ld [wd3aa], a
+ ld a, c
+ ld c, b
+ ld b, a
+ farcall Func_1c461
+ jp IncreaseOWScriptPointerBy3
+
+Func_d0ce: ; d0ce (3:50ce)
+ push bc
+ call DoFrameIfLCDEnabled
+ pop bc
+ dec c
+ jr nz, Func_d0ce
+ jp IncreaseOWScriptPointerBy2
+
+Func_d0d9: ; d0d9 (3:50d9)
+ ld a, [wd3b6]
+ ld [wd3aa], a
+ ld d, c
+ ld e, b
+ farcall Func_1c477
+ ld a, e
+ cp c
+ jp nz, Func_d48a
+ ld a, d
+ cp b
+ jp nz, Func_d48a
+ jp Func_d490
+
+Func_d0f2: ; d0f2 (3:50f2)
+ ld a, [wPlayerXCoord]
+ cp c
+ jp nz, Func_d48a
+ ld a, [wPlayerYCoord]
+ cp b
+ jp nz, Func_d48a
+ jp Func_d490
+
+Func_d103: ; d103 (3:5103)
+ ld a, [wd3aa]
+ push af
+ ld a, [wd3ab]
+ push af
+ ld a, c
+ ld [wd3ab], a
+ call Func_39c3
+ jr c, .asm_d119
+ call $54d1
+ jr .asm_d11c
+
+.asm_d119
+ call $54e6
+
+.asm_d11c
+ pop af
+ ld [wd3ab], a
+ pop af
+ ld [wd3aa], a
+ ret
+
+Func_d125: ; d125 (3:5125)
+ ld a, c
+ push af
+ call Func_c2a3
+ pop af
+ farcall Medal_1029e
+ call Func_c2d4
+ jp IncreaseOWScriptPointerBy2
+
+Func_d135: ; d135 (3:5135)
+ sla c
+ ld b, $0
+ ld hl, wTxRam2
+ add hl, bc
+ push hl
+ ld a, [wd32e]
+ rlca
+ ld c, a
+ ld b, $0
+ ld hl, $5151
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ pop hl
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ jp IncreaseOWScriptPointerBy2
+
+ INCROM $d153, $d16b
+
+Func_d16b: ; d16b (3:516b)
+ ld hl, wd0c8
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ push de
+ sla c
+ ld b, $0
+ ld hl, wTxRam2
+ add hl, bc
+ push hl
+ ld a, [wd696]
+ farcall Func_11893
+ pop hl
+ ld a, [wd0c8]
+ ld [hli], a
+ ld a, [wd0c9]
+ ld [hl], a
+ pop de
+ ld hl, wd0c8
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ jp IncreaseOWScriptPointerBy2
+
+Func_d195: ; d195 (3:5195)
+ ld a, [wd3ab]
+ push af
+ call Func_ca69
+ ld b, l
+ inc a
+ ld c, a
+ call Func_ca8f
+ ld b, l
+ call Func_f580
+ pop af
+ ld [wd3ab], a
+ jp IncreaseOWScriptPointerBy1
+
+Func_d1ad: ; d1ad (3:51ad)
+ call MainMenu_c75a
+ jp IncreaseOWScriptPointerBy1
+
+Func_d1b3: ; d1b3 (3:51b3)
+ call Func_ca69
+ ld b, h
+ dec a
+ cp $2
+ jr c, .asm_d1c3
+ ld a, $d
+ call Random
+ add $2
+
+.asm_d1c3
+ ld hl, $51dc
+asm_d1c6
+ ld e, a
+ add a
+ add e
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld a, [hli]
+ ld [wd697], a
+ ld a, [hli]
+ ld [wTxRam2], a
+ ld a, [hl]
+ ld [wTxRam2 + 1], a
+ jp IncreaseOWScriptPointerBy1
+
+ INCROM $d1dc, $d209
+
+Func_d209: ; d209 (3:5209)
+ call Func_ca69
+ ld [hl], c
+ ld e, a
+.asm_d20e
+ call UpdateRNGSources
+ ld d, $8
+ and $3
+ ld c, a
+ ld b, a
+.asm_d217
+ jr z, .asm_d21e
+ srl d
+ dec b
+ jr .asm_d217
+
+.asm_d21e
+ ld a, d
+ and e
+ jr nz, .asm_d20e
+ push bc
+ ld b, $0
+ ld hl, $5240
+ add hl, bc
+ ld a, [hl]
+ call SetEventFlags
+ pop bc
+ ld hl, $5234
+ ld a, c
+ jr asm_d1c6
+
+ INCROM $d234, $d244
+
+Func_d244: ; d244 (3:5244)
+ ld a, c
+ farcall Func_80ba4
+ jp IncreaseOWScriptPointerBy2
+
+Func_d24c: ; d24c (3:524c)
+ ld hl, $525e
+ xor a
+ call Func_d28c
+ ld a, [wd695]
+ ld c, a
+ call Func_ca8f
+ halt
+ jp IncreaseOWScriptPointerBy1
+
+ INCROM $d25e, $d271
+
+Func_d271: ; d271 (3:5271)
+ ld hl, $527b
+ xor a
+ call Func_d28c
+ jp IncreaseOWScriptPointerBy1
+; 0xd27b
+
+ INCROM $d27b, $d28c
+
+Func_d28c: ; d28c (3:528c)
+ ld [wd416], a
+ push hl
+ call Func_c241
+ call Func_c915
+ call DoFrameIfLCDEnabled
+ pop hl
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
+ push hl
+ ld h, [hl]
+ ld l, a
+ or h
+ jr z, .asm_d2a8
+ call Func_c8ba
+
+.asm_d2a8
+ ld a, $1
+ call Func_c29b
+ pop hl
+ inc hl
+ ld a, [hli]
+ push hl
+ ld h, [hl]
+ ld l, a
+ ld a, [wd416]
+ farcall Func_111e9
+ pop hl
+ inc hl
+ ld a, [hli]
+ ld [wd417], a
+ push hl
+
+.asm_d2c1
+ call DoFrameIfLCDEnabled
+ call HandleMenuInput
+ jr nc, .asm_d2c1
+ ld a, [hCurrentMenuItem]
+ cp e
+ jr z, .asm_d2d9
+ ld a, [wd417]
+ or a
+ jr z, .asm_d2c1
+ ld e, a
+ ld [hCurrentMenuItem], a
+
+.asm_d2d9
+ pop hl
+ ld a, [hli]
+ push hl
+ ld h, [hl]
+ ld l, a
+ ld a, e
+ ld [hl], a
+ add a
+ ld c, a
+ ld b, $0
+ pop hl
+ inc hl
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ or h
+ jr z, .asm_d2f5
+ add hl, bc
+ ld a, [hli]
+ ld [wTxRam2], a
+ ld a, [hl]
+ ld [wTxRam2 + 1], a
+
+.asm_d2f5
+ ret
+
+Func_d2f6: ; d2f6 (3:52f6)
+ ld hl, $530c
+ xor a
+ call Func_d28c
+ ld a, [wd694]
+ ld c, a
+ call Func_ca8f
+ ld [hl], l
+ xor a
+ ld [wd694], a
+ jp IncreaseOWScriptPointerBy1
+; 0xd30c
+
+ INCROM $d30c, $d317
+
+Func_d317: ; d317 (3:5317)
+ ld hl, $532b
+ ld a, [wd694]
+ call Func_d28c
+ ld a, [wd694]
+ ld c, a
+ call Func_ca8f
+ ld [hl], l
+ jp IncreaseOWScriptPointerBy1
+
+
+ INCROM $d32b, $d336
+
+DeckMachine_d336: ; d336 (3:5336)
+ push bc
+ call Func_c2a3
+ call PauseSong
+ ld a, MUSIC_DECK_MACHINE
+ call PlaySong
+ call EmptyScreen
+ xor a
+ ldh [hSCX], a
+ ldh [hSCY], a
+ farcall Func_1288c
+ call EnableLCD
+ pop bc
+ ld a, c
+ or a
+ jr z, .asm_d360
+ dec a
+ ld [wd0a9], a
+ farcall Func_ba04
+ jr .asm_d364
+.asm_d360
+ farcall Func_b19d
+.asm_d364
+ call ResumeSong
+ call Func_c2d4
+ jp IncreaseOWScriptPointerBy2
+
+Func_d36d: ; d36d (3:536d)
+ ld a, [wOWScriptPointer]
+ ld l, a
+ ld a, [wOWScriptPointer+1]
+ ld h, a
+ inc hl
+ ld a, [hli]
+ ld a, [hli]
+ ld [wd0bb], a
+ ld a, [hli]
+ ld [wd0bc], a
+ ld a, [hli]
+ ld [wd0bd], a
+ ld a, [hli]
+ ld [wd0be], a
+ ld hl, wd0b4
+ set 4, [hl]
+ jp IncreaseOWScriptPointerBy6
+
+Func_d38f: ; d38f (3:538f)
+ farcall Func_10c96
+ jp IncreaseOWScriptPointerBy2
+
+Func_d396: ; d396 (3:5396)
+ farcall Func_1157c
+ jp IncreaseOWScriptPointerBy2
+
+Func_d39d: ; d39d (3:539d)
+ ld a, c
+ or a
+ jr nz, .asm_d3ac
+ farcall Func_10dba
+ ld c, a
+ call Func_ca8f
+ ld [hl], d
+ jr .asm_d3b6
+
+.asm_d3ac
+ ld a, GAME_EVENT_GIFT_CENTER
+ ld [wGameEvent], a
+ ld hl, wd0b4
+ set 6, [hl]
+
+.asm_d3b6
+ jp IncreaseOWScriptPointerBy2
+
+Func_d3b9: ; d3b9 (3:53b9)
+ call Func_3917
+ ld a, GAME_EVENT_CREDITS
+ ld [wGameEvent], a
+ ld hl, wd0b4
+ set 6, [hl]
+ jp IncreaseOWScriptPointerBy1
+
+Func_d3c9: ; d3c9 (3:53c9)
+ ld a, c
+ farcall Func_10a70
+ jp IncreaseOWScriptPointerBy2
+
+Func_d3d1: ; d3d1 (3:53d1)
+ jp IncreaseOWScriptPointerBy1
+
+Func_d3d4: ; d3d4 (3:53d4)
+ ld a, [wd693]
+ bank1call Func_7576
+ jp IncreaseOWScriptPointerBy1
+
+ INCROM $d3dd, $d3e0
+
+Func_d3e0: ; d3e0 (3:53e0)
+ ld a, $1
+ ld [wd32e], a
+ farcall Func_11024
+.asm_d3e9
+ call DoFrameIfLCDEnabled
+ farcall Func_11060
+ ld a, [wd33e]
+ cp $2
+ jr nz, .asm_d3e9
+ farcall Func_10f2e
+ jp IncreaseOWScriptPointerBy1
+
+Func_d3fe: ; d3fe (3:53fe)
+ ld a, c
+ ld [wd112], a
+ call PlaySong
+ jp IncreaseOWScriptPointerBy2
+
+Func_d408: ; d408 (3:5408)
+ ld a, c
+ ld [wd111], a
+ jp IncreaseOWScriptPointerBy2
+
+Func_d40f: ; d40f (3:540f)
+ ld a, c
+ call Func_3c83
+ jp IncreaseOWScriptPointerBy2
+
+Func_d416: ; d416 (3:5416)
+ ld a, c
+ call PlaySFX
+ jp IncreaseOWScriptPointerBy2
+
+Func_d41d: ; d41d (3:541d)
+ call Func_39fc
+ jp IncreaseOWScriptPointerBy1
+
+Func_d423: ; d423 (3:5423)
+ call PauseSong
+ jp IncreaseOWScriptPointerBy1
+
+Func_d429: ; d429 (3:5429)
+ call ResumeSong
+ jp IncreaseOWScriptPointerBy1
+
+Func_d42f: ; d42f (3:542f)
+ call Func_3c96
+ jp IncreaseOWScriptPointerBy1
+
+Func_d435: ; d435 (3:5435)
+ ld a, c
+ farcall Func_1c83d
+ jp IncreaseOWScriptPointerBy2
+
+Func_d43d: ; d43d (3:543d)
+ ld a, GAME_EVENT_CHALLENGE_MACHINE
+ ld [wGameEvent], a
+ ld hl, wd0b4
+ set 6, [hl]
+ jp IncreaseOWScriptPointerBy1
+
+OWScript_CustomModifyEventFlags: ; d44a (3:544a)
+ ld a, c
+ ld c, b
+ call ModifyEventFlags
+ jp IncreaseOWScriptPointerBy3
+
+Func_d452: ; d452 (3:5452)
+ ld a, c
+ push af
+ call CheckIfEventFlagSet
+ inc a
+ ld c, a
+ pop af
+ call ModifyEventFlags
+ jp IncreaseOWScriptPointerBy2
+
+Func_d460: ; d460 (3:5460)
+ ld a, c
+ call CheckIfEventFlagSet
+ or a
+ jr z, asm_d46d
+asm_d467
+ call Func_ccb9
+ jp IncreaseOWScriptPointerBy4
+
+asm_d46d
+ call Func_ccb3
+ call GetOWSArgs2AfterPointer
+ jr z, .asm_d478
+ jp SetOWScriptPointer
+
+.asm_d478
+ jp IncreaseOWScriptPointerBy4
+
+OWScript_JumpIfFlagSet: ; d47b (3:547b)
+ ld a, c
+ call CheckIfEventFlagSet
+ or a
+ jr nz, asm_d46d
+ jr asm_d467
+
+Func_d484: ; d484 (3:5484)
+ call Func_d4b6
+ cp c
+ jr z, Func_d490
+
+Func_d48a: ; d48a (3:548a)
+ call Func_ccb9
+ jp IncreaseOWScriptPointerBy5
+
+Func_d490: ; d490 (3:5490)
+ call Func_ccb3
+ call GetOWSArgs3AfterPointer
+ jr z, .asm_d49b
+ jp SetOWScriptPointer
+
+.asm_d49b
+ jp IncreaseOWScriptPointerBy5
+
+Func_d49e: ; d49e (3:549e)
+ call Func_d4b6
+ cp c
+ jr nz, Func_d490
+ jr Func_d48a
+
+Func_d4a6: ; d4a6 (3:54a6)
+ call Func_d4b6
+ cp c
+ jr nc, Func_d490
+ jr Func_d48a
+
+Func_d4ae: ; d4ae (3:54ae)
+ call Func_d4b6
+ cp c
+ jr c, Func_d490 ; 0xd4b2 $dc
+ jr Func_d48a ; 0xd4b4 $d4
+
+Func_d4b6: ; d4b6 (3:54b6)
+ ld a, c
+ ld c, b
+ call CheckIfEventFlagSet
+ ret
+
+OWScript_SetEventFlags: ; d4bc (3:54bc)
+ ld a, c
+ call SetEventFlags
+ jp IncreaseOWScriptPointerBy2
+
+Func_d4c3: ; d4c3 (3:54c3)
+ ld a, c
+ call Func_cad0
+ jp IncreaseOWScriptPointerBy2
+
+Func_d4ca: ; d4ca (3:54ca)
+ ld a, c
+ call CheckIfEventFlagSet
+ or a
+ jr z, asm_d4e6
+Func_d4d1:
+ call Func_ccb3
+ call GetOWSArgs2AfterPointer
+ jr z, .asm_d4dc
+ jp SetOWScriptPointer
+.asm_d4dc
+ jp IncreaseOWScriptPointerBy4
+
+OWScript_JumpIfFlagNotSet:
+ ld a, c
+ call CheckIfEventFlagSet
+ or a
+ jr z, Func_d4d1
+asm_d4e6
+ call Func_ccb9
+ jp IncreaseOWScriptPointerBy4
+; 0xd4ec
+
+ INCROM $d4ec, $d753
+
+OWSequence_d753: ; d753 (3:5753)
+ start_script
+ run_script OWScript_MovePlayer
+ db $00
+ db $02
+ run_script OWScript_MovePlayer
+ db $00
+ db $02
+ run_script OWScript_MovePlayer
+ db $00
+ db $02
+ run_script OWScript_MovePlayer
+ db $00
+ db $02
+ run_script OWScript_MovePlayer
+ db $00
+ db $02
+ run_script OWScript_MovePlayer
+ db $00
+ db $02
+ run_script OWScript_MovePlayer
+ db $00
+ db $02
+ run_script OWScript_MovePlayer
+ db $00
+ db $02
+ run_script OWScript_MovePlayer
+ db $00
+ db $02
+ run_script OWScript_PrintTextString
+ tx Text05e3
+ run_script OWScript_CloseTextBox
+ run_script Func_d088
+ db $07
+ db $79
+ db $57
+ run_script OWScript_EndScriptLoop1
+ ret
+
+ start_script
+ run_script Func_ce4a
+ db $80
+ db $58
+ db $02
+
+ ; there's more to this script but it hasn't been disassembled yet
+
+ INCROM $d77e, $e13f
+
+WaterClubMovePlayer: ; e13f (3:613f)
+ ld a, [wPlayerYCoord]
+ cp $8
+ ret nz
+ call Func_ca69
+ inc sp
+ cp $2
+ ret nc
+ ld a, $21
+ ld [wd3ab], a
+ ld bc, OWSequence_NotReadyToSeeAmy
+ jp Func_c926
+
+WaterClubAfterDuel: ;e157 (3:6157)
+ ld hl, .after_duel_table
+ call FindEndOfBattleScript
+ ret
+
+.after_duel_table
+ dw $1f1f
+ dw OWSequence_BeatSara
+ dw OWSequence_LostToSara
+
+ dw $2020
+ dw OWSequence_BeatAmanda
+ dw OWSequence_LostToAmanda
+
+ dw $2121
+ dw $626c
+ dw $6260
+
+ dw $2222
+ dw $6322
+ dw $6344
+ db $00
+
+OWSequence_Sara: ; e177 (3:6177)
+ start_script
+ run_script OWScript_PrintTextString
+ tx Text042c
+ run_script OWScript_AskQuestionJump
+ tx Text042d
+ dw .yes_duel
+ run_script OWScript_PrintTextString
+ tx Text042e
+ run_script OWScript_EndScriptCloseText
+.yes_duel
+ run_script OWScript_PrintTextString
+ tx Text042f
+ run_script OWScript_StartBattle
+ db 2
+ db WATERFRONT_POKEMON_DECK_ID ; 6189
+ db MUSIC_DUEL_THEME_1
+ run_script OWScript_EndScriptCloseText
+
+OWSequence_BeatSara: ; e18c (3:618c)
+ start_script
+ run_script OWScript_SetEventFlags
+ db FLAG_BEAT_SARA
+ run_script OWScript_PrintTextString
+ tx Text0430
+ run_script OWScript_GiveBoosterPacks
+ db BOOSTER_COLOSSEUM_WATER
+ db BOOSTER_COLOSSEUM_WATER
+ db NO_BOOSTER
+ run_script OWScript_PrintTextString
+ tx Text0431
+ run_script OWScript_EndScriptCloseText
+
+OWSequence_LostToSara: ; e19a (03:619a)
+ start_script
+ run_script OWScript_PrintTextCloseBox
+ tx Text0432
+
+OWSequence_Amanda: ; e19e (03:619e)
+ start_script
+ run_script OWScript_PrintTextString
+ tx Text0433
+ run_script OWScript_AskQuestionJump
+ tx Text0434
+ dw .yes_duel
+ run_script OWScript_PrintTextString
+ tx Text0435
+ run_script OWScript_EndScriptCloseText
+.yes_duel
+ run_script OWScript_PrintTextString
+ tx Text0436
+ run_script OWScript_StartBattle
+ db 03
+ db LONELY_FRIENDS_DECK_ID
+ db MUSIC_DUEL_THEME_1
+ run_script OWScript_EndScriptCloseText
+
+OWSequence_BeatAmanda: ; e1b3 (03:61b3)
+ start_script
+ run_script OWScript_SetEventFlags
+ db FLAG_BEAT_AMANDA
+ run_script OWScript_PrintTextString
+ tx Text0437
+ run_script OWScript_GiveBoosterPacks
+ db BOOSTER_MYSTERY_LIGHTNING_COLORLESS
+ db BOOSTER_MYSTERY_LIGHTNING_COLORLESS
+ db NO_BOOSTER
+ run_script OWScript_PrintTextString
+ tx Text0438
+ run_script OWScript_EndScriptCloseText
+
+OWSequence_LostToAmanda: ; e1c1 (03:61c1)
+ start_script
+ run_script OWScript_PrintTextCloseBox
+ tx Text0439
+
+OWSequence_NotReadyToSeeAmy:
+ INCROM $e1c5, $e21c
+
+OWSequence_Joshua:
+ start_script
+ run_script OWScript_JumpIfFlagNotSet
+ db FLAG_BEAT_AMANDA
+ dw .sara_and_amanda_not_beaten
+ run_script OWScript_JumpIfFlagNotSet
+ db FLAG_BEAT_SARA
+ dw .sara_and_amanda_not_beaten
+ run_script OWScript_ScriptJump
+ dw .beat_sara_and_amanda
+.sara_and_amanda_not_beaten
+ run_script OWScript_CustomModifyEventFlags
+ db $33 ; offset on flagmod table
+ db $01 ; the control bit
+ run_script OWScript_PrintTextString
+ tx Text043b
+ run_script OWScript_EndScriptCloseText
+.beat_sara_and_amanda
+ run_script OWScript_JumpIfFlagSet
+ db $33
+ dw $623c
+ run_script OWScript_CustomModifyEventFlags
+ db $33
+ db $01
+ run_script OWScript_PrintTextString
+ tx Text043b
+ run_script OWScript_PrintTextString
+ tx Text043c
+ run_script Func_d484
+ db $33
+ db $01
+
+ INCROM $e23f, $e52c
+
+FindEndOfBattleScript: ; e52c (3:652c)
+ ld c, $0
+ ld a, [wDuelResult]
+ or a ; cp DUEL_WIN
+ jr z, .player_won
+ ld c, $2
+
+.player_won
+ ld a, [wd0c4]
+ ld b, a
+ ld de, $0005
+.check_enemy_byte_loop
+ ld a, [hli]
+ or a
+ ret z
+ cp b
+ jr z, .found_enemy
+ add hl, de
+ jr .check_enemy_byte_loop
+
+.found_enemy
+ ld a, [hli]
+ ld [wd3ab], a
+ ld b, $0
+ add hl, bc
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ jp Func_c926
+; 0xe553
+
+ INCROM $e553, $f580
+
+Func_f580: ; f580 (3:7580)
+ call Func_ca69
+ ld b, h
+ cp $3
+ jr z, .asm_f596
+ call Func_ca69
+ ld b, l
+ cp $3
+ ld d, $18
+ jr nz, .asm_f598
+ ld a, $2
+ jr .asm_f5ac
+
+.asm_f596
+ ld d, $19
+
+.asm_f598
+ ld a, d
+ call Random
+ ld c, a
+ call $75cc
+ jr c, .asm_f598
+ call $75d4
+ ld b, $0
+ ld hl, $75b3
+ add hl, bc
+ ld a, [hl]
+
+.asm_f5ac
+ ld [wd3ab], a
+ ld [wd696], a
+ ret
+; 0xf5b3
+
+ INCROM $f5b3, $fc2b
+
+Func_fc2b: ; fc2b (3:7c2b)
+ ld a, [wDuelResult]
+ cp 2
+ jr c, .asm_fc34
+ ld a, $2
+.asm_fc34
+ rlca
+ ld c, a
+ ld b, $0
+ ld hl, PointerTable_fc4c
+ add hl, bc
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ ld a, $b0
+ ld [wd0c8], a
+ ld a, $3
+ ld [wd0c9], a
+ jp Func_c935
+
+PointerTable_fc4c: ; fc4c (3:7c4c)
+ dw Unknown_fc64
+ dw Unknown_fc68
+ dw Unknown_fc60
+
+ INCROM $fc52, $fc60
+
+Unknown_fc60: ; fc60 (3:7c60)
+ INCROM $fc60, $fc64
+
+Unknown_fc64: ; fc64 (3:7c64)
+ INCROM $fc64, $fc68
+
+Unknown_fc68: ; fc68 (3:7c68)
+ INCROM $fc68, $fcad
+
+Func_fcad: ; fcad (3:7cad)
+ INCROM $fcad, $10000