mirror of
https://github.com/pret/pokeyellow.git
synced 2026-05-23 03:16:20 -05:00
370 lines
6.8 KiB
NASM
370 lines
6.8 KiB
NASM
INCLUDE "engine/pikachu_pcm.asm"
|
|
INCLUDE "engine/overworld/advance_player_sprite.asm"
|
|
|
|
ResetStatusAndHalveMoneyOnBlackout:: ; f0274 (3c:4274)
|
|
; Reset player status on blackout.
|
|
xor a
|
|
ld [wd435], a
|
|
xor a ; gamefreak copypasting functions (double xor a)
|
|
ld [wBattleResult], a
|
|
ld [wWalkBikeSurfState], a
|
|
ld [wIsInBattle], a
|
|
ld [wMapPalOffset], a
|
|
ld [wNPCMovementScriptFunctionNum], a
|
|
ld [hJoyHeld], a
|
|
ld [wNPCMovementScriptPointerTableNum], a
|
|
ld [wFlags_0xcd60], a
|
|
|
|
ld [hMoney], a
|
|
ld [hMoney + 1], a
|
|
ld [hMoney + 2], a
|
|
call HasEnoughMoney
|
|
jr c, .lostmoney ; never happens
|
|
|
|
; Halve the player's money.
|
|
ld a, [wPlayerMoney]
|
|
ld [hMoney], a
|
|
ld a, [wPlayerMoney + 1]
|
|
ld [hMoney + 1], a
|
|
ld a, [wPlayerMoney + 2]
|
|
ld [hMoney + 2], a
|
|
xor a
|
|
ld [hDivideBCDDivisor], a
|
|
ld [hDivideBCDDivisor + 1], a
|
|
ld a, 2
|
|
ld [hDivideBCDDivisor + 2], a
|
|
predef DivideBCDPredef3
|
|
ld a, [hDivideBCDQuotient]
|
|
ld [wPlayerMoney], a
|
|
ld a, [hDivideBCDQuotient + 1]
|
|
ld [wPlayerMoney + 1], a
|
|
ld a, [hDivideBCDQuotient + 2]
|
|
ld [wPlayerMoney + 2], a
|
|
|
|
.lostmoney
|
|
ld hl, wd732
|
|
set 2, [hl]
|
|
res 3, [hl]
|
|
set 6, [hl]
|
|
ld a, %11111111
|
|
ld [wJoyIgnore], a
|
|
predef_jump HealParty
|
|
|
|
Func_f02da:: ; f02da (3c:42da)
|
|
ld a, [wCurMap]
|
|
cp VERMILION_GYM ; ??? new thing about verm gym?
|
|
jr z, .asm_f02ee
|
|
ld c, a
|
|
ld hl, Pointer_f02fa
|
|
.asm_f02e5
|
|
ld a, [hli]
|
|
cp c
|
|
jr z, .asm_f02f4
|
|
cp a, $ff
|
|
jr nz, .asm_f02e5
|
|
ret
|
|
|
|
.asm_f02ee
|
|
ld hl, wCurrentMapScriptFlags
|
|
set 6, [hl]
|
|
ret
|
|
|
|
.asm_f02f4
|
|
ld hl, wCurrentMapScriptFlags
|
|
set 5, [hl]
|
|
ret
|
|
|
|
Pointer_f02fa:: ; f02fa (3c:42fa)
|
|
db SILPH_CO_2F
|
|
db SILPH_CO_3F
|
|
db SILPH_CO_4F
|
|
db SILPH_CO_5F
|
|
db SILPH_CO_6F
|
|
db SILPH_CO_7F
|
|
db SILPH_CO_8F
|
|
db SILPH_CO_9F
|
|
db SILPH_CO_10F
|
|
db SILPH_CO_11F
|
|
db MANSION_2
|
|
db MANSION_3
|
|
db MANSION_4
|
|
db MANSION_1
|
|
db CINNABAR_GYM
|
|
db GAME_CORNER
|
|
db ROCKET_HIDEOUT_1
|
|
db ROCKET_HIDEOUT_4
|
|
db VICTORY_ROAD_3
|
|
db VICTORY_ROAD_1
|
|
db VICTORY_ROAD_2
|
|
db LANCES_ROOM
|
|
db LORELEIS_ROOM
|
|
db BRUNOS_ROOM
|
|
db AGATHAS_ROOM
|
|
db $ff
|
|
|
|
BeachHouse_GFX:: ; f0314 (3c:4314)
|
|
INCBIN "gfx/tilesets/beachhouse.2bpp"
|
|
|
|
BeachHouse_Block:: ; f0914 (3c:4914)
|
|
INCBIN "gfx/blocksets/beachhouse.bst"
|
|
|
|
Func_f0a54:: ; f0a54 (3c:4a54)
|
|
ret
|
|
|
|
Func_f0a55:: ; f0a55 (3c:4a55)
|
|
; referenced in an unused function
|
|
ld hl, Pointer_f0a76 ; 3c:4a76
|
|
.loop
|
|
ld a, [hli]
|
|
cp a, $ff
|
|
ret z
|
|
ld b, a
|
|
ld a, [wCurMap]
|
|
cp b
|
|
jr z, .asm_f0a68
|
|
inc hl
|
|
inc hl
|
|
inc hl
|
|
jr .loop
|
|
|
|
.asm_f0a68
|
|
ld a, [hli]
|
|
ld c, a
|
|
ld b, 0
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld de, wMissableObjectList
|
|
call CopyData
|
|
ret
|
|
|
|
Pointer_f0a76:: ; f0a76 (3c:4a76)
|
|
dbbw BLUES_HOUSE, Pointer_f0a7bEnd - Pointer_f0a7b, Pointer_f0a7b
|
|
db $ff
|
|
|
|
Pointer_f0a7b:
|
|
db 1, HS_DAISY_SITTING_COPY
|
|
db 2, HS_DAISY_WALKING_COPY
|
|
db 3, HS_TOWN_MAP_COPY
|
|
db $ff
|
|
Pointer_f0a7bEnd:
|
|
|
|
TryApplyPikachuMovementData: ; f0a82
|
|
ld a, [wd472]
|
|
bit 7, a
|
|
ret z
|
|
ld a, [wWalkBikeSurfState]
|
|
and a
|
|
ret nz
|
|
push hl
|
|
push bc
|
|
callab GetPikachuFacingDirectionAndReturnToE
|
|
pop bc
|
|
pop hl
|
|
ld a, b
|
|
cp e
|
|
ret nz
|
|
push hl
|
|
ld a, [wUpdateSpritesEnabled]
|
|
push af
|
|
ld a, $ff
|
|
ld [wUpdateSpritesEnabled], a
|
|
callab LoadPikachuShadowIntoVRAM
|
|
pop af
|
|
ld [wUpdateSpritesEnabled], a
|
|
pop hl
|
|
call ApplyPikachuMovementData
|
|
callab RefreshPikachuFollow
|
|
ret
|
|
|
|
Pic_f0abf: ; f0abf (3c:4abf)
|
|
INCBIN "gfx/pikachu/unknown_f0abf.pic"
|
|
GFX_f0b64: ; f0b64 (3c:4b64)
|
|
INCBIN "gfx/pikachu/unknown_f0b64.2bpp"
|
|
Pic_f0cf4: ; f0cf4 (3c:4cf4)
|
|
INCBIN "gfx/pikachu/unknown_f0cf4.pic"
|
|
GFX_f0d82: ; f0d82 (3c:4d82)
|
|
INCBIN "gfx/pikachu/unknown_f0d82.2bpp"
|
|
|
|
PokecenterChanseyText:
|
|
ld hl, NurseChanseyText
|
|
call PrintText
|
|
ld a, CHANSEY
|
|
call PlayCry
|
|
call WaitForSoundToFinish
|
|
ret
|
|
|
|
NurseChanseyText:
|
|
TX_FAR _NurseChanseyText
|
|
db "@"
|
|
|
|
INCLUDE "engine/HoF_room_pc.asm"
|
|
INCLUDE "scripts/viridiancity2.asm"
|
|
INCLUDE "scripts/vermilioncity2.asm"
|
|
INCLUDE "scripts/celadoncity2.asm"
|
|
INCLUDE "scripts/route1_2.asm"
|
|
INCLUDE "scripts/route22_2.asm"
|
|
INCLUDE "scripts/redshouse1f2.asm"
|
|
INCLUDE "scripts/oakslab2.asm"
|
|
INCLUDE "scripts/school2.asm"
|
|
INCLUDE "scripts/museum1f2.asm"
|
|
INCLUDE "scripts/pewterpokecenter2.asm"
|
|
|
|
Func_f1e22:
|
|
ld hl, PikachuMovementData_f1e2b
|
|
ld b, SPRITE_FACING_RIGHT
|
|
call TryApplyPikachuMovementData
|
|
ret
|
|
|
|
PikachuMovementData_f1e2b:
|
|
db $00
|
|
db $1d
|
|
db $1f
|
|
db $38
|
|
db $3f
|
|
|
|
INCLUDE "scripts/celadonmart3_2.asm"
|
|
INCLUDE "scripts/celadonmansion1_2.asm"
|
|
INCLUDE "scripts/celadonmansion3_2.asm"
|
|
|
|
Func_f1f23:
|
|
ld hl, PikachuMovementData_f1f2c
|
|
ld b, SPRITE_FACING_DOWN
|
|
call TryApplyPikachuMovementData
|
|
ret
|
|
|
|
PikachuMovementData_f1f2c:
|
|
db $00
|
|
db $20
|
|
db $1e
|
|
db $35
|
|
db $3f
|
|
|
|
INCLUDE "scripts/celadondiner2.asm"
|
|
INCLUDE "scripts/safarizoneentrance2.asm"
|
|
INCLUDE "scripts/cinnabargym3.asm"
|
|
|
|
INCLUDE "scripts/mtmoonpokecenter2.asm"
|
|
|
|
INCLUDE "data/mapHeaders/beach_house.asm"
|
|
INCLUDE "scripts/beach_house.asm"
|
|
BeachHouseBlockdata: ; f2388 (3c:6388)
|
|
INCBIN "maps/beach_house.blk"
|
|
INCLUDE "data/mapObjects/beach_house.asm"
|
|
|
|
INCLUDE "scripts/beach_house2.asm"
|
|
INCLUDE "scripts/billshouse2.asm"
|
|
INCLUDE "scripts/viridianforest2.asm"
|
|
INCLUDE "scripts/ssanne9_2.asm"
|
|
INCLUDE "scripts/silphco11_2.asm"
|
|
|
|
INCLUDE "engine/overworld/hidden_objects.asm"
|
|
|
|
Func_f2cd0:
|
|
ld d, 0
|
|
ld hl, Jumptable_f2ce1
|
|
add hl, de
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
call JumpToAddress
|
|
ld e, a
|
|
ld d, 0
|
|
ret
|
|
|
|
Jumptable_f2ce1:
|
|
dw Func_f2ceb
|
|
dw Func_f2ceb
|
|
dw Func_f2cee
|
|
dw Func_f2cf4
|
|
dw Func_f2d06
|
|
|
|
Func_f2ceb:
|
|
ld a, 0
|
|
ret
|
|
|
|
Func_f2cee:
|
|
call Random
|
|
and $1
|
|
ret
|
|
|
|
Func_f2cf4: ; should return to a, instead returns to b
|
|
call Random
|
|
swap a
|
|
cp 1 * $ff / 3
|
|
ld b, 0
|
|
ret c
|
|
cp 2 * $ff / 3
|
|
ld b, 1
|
|
ret c
|
|
ld b, 2
|
|
ret
|
|
|
|
Func_f2d06:
|
|
call Random
|
|
and $3
|
|
ret
|
|
|
|
Func_f2d0c:
|
|
ld hl, GymTrashCans3c
|
|
ld a, [wGymTrashCanIndex]
|
|
ld c, a
|
|
ld b, 0
|
|
ld a, 9
|
|
call AddNTimes
|
|
call AddNTimes ; ????
|
|
ld a, [hli]
|
|
ld [hGymTrashCanRandNumMask], a
|
|
ld e, a
|
|
push hl
|
|
call Func_f2cd0
|
|
pop hl
|
|
add hl, de
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld [wSecondLockTrashCanIndex], a
|
|
ld a, [hl]
|
|
ld [wSecondLockTrashCanIndex + 1], a
|
|
ret
|
|
|
|
GymTrashCans3c: ; f2d31 (3c:6d31)
|
|
; First byte: number of trashcan entries
|
|
; Following four byte pairs: indices for the second trash can.
|
|
; BUG: Rows that have 3 trashcan entries are sampled incorrectly.
|
|
; The sampling occurs by taking a random number and seeing which
|
|
; third of the range 0-255 the number falls in. However, it returns
|
|
; that value to the wrong register, so the result is never used.
|
|
; Instead of using an offset in [0,1,2], the offset is instead
|
|
; in the full range 0-255. This results in truly random behavior.
|
|
db 4
|
|
db 1,3, 3,1, 1,-1, 3,-1
|
|
db 3
|
|
db 0,2, 2,4, 4,0, -1,-1
|
|
db 4
|
|
db 1,5, 5,1, 1,-1, 5,-1
|
|
db 3
|
|
db 0,4, 4,6, 6,0, -1,-1
|
|
db 4
|
|
db 1,3, 3,1, 5,5, 7,7
|
|
db 3
|
|
db 2,4, 4,8, 8,2, -1,-1
|
|
db 3
|
|
db 3,7, 7,9, 9,3, -1,-1
|
|
db 4
|
|
db 4,8, 6,10, 8,4, 10,6
|
|
db 3
|
|
db 5,7, 7,11, 11,5, -1,-1
|
|
db 3
|
|
db 6,10, 10,12, 12,6, -1,-1
|
|
db 4
|
|
db 7,9, 9,7, 11,13, 13,11
|
|
db 3
|
|
db 8,10, 10,14, 14,8, -1,-1
|
|
db 4
|
|
db 9,13, 13,9, 9,-1, 13,-1
|
|
db 3
|
|
db 10,12, 12,14, 14,10, -1,-1
|
|
db 4
|
|
db 11,13, 13,11, 11,-1, 13,-1
|