Files
poketcg/src/engine/bank3.asm
T
2018-02-25 19:32:52 +01:00

3226 lines
46 KiB
NASM

LoadMap: ; c000 (3:4000)
call DisableLCD
call EnableSRAM
bank1call Func_6785
call DisableSRAM
ld a, $0
ld [wd0b5], a
xor a
ld [wd10f], a
ld [wd110], a
ld [wMatchStartTheme], a
farcall Func_10a9b
call Func_c1a4
call InitSpritePositions
xor a
ld [wTileMapFill], a
call Func_2119
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 InitSpritePositions
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 InitSpritePositions
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 * CGB_PAL_SIZE
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 * CGB_PAL_SIZE
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 index - 2, 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, $1
ld [wd0b5], 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, $2
ld [wd0b5], 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, $3
ld [wd0b5], a
ld hl, wd0b4
set 6, [hl]
.asm_d3b6
jp IncreaseOWScriptPointerBy2
Func_d3b9: ; d3b9 (3:53b9)
call Func_3917
ld a, $4
ld [wd0b5], 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, $6
ld [wd0b5], 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 - 2 ; 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 - 2
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, [wd0c3]
or a
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, [wd0c3]
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