Merge pull request #103 from YamaArashi/master

Misc changes again
This commit is contained in:
Daniel Harding 2015-07-17 10:49:54 -05:00
commit 6e46ec61f9
21 changed files with 423 additions and 349 deletions

View file

@ -20,9 +20,14 @@ D_LEFT EQU %00100000
D_UP EQU %01000000 D_UP EQU %01000000
D_DOWN EQU %10000000 D_DOWN EQU %10000000
PIXELS_PER_TILE EQU 8
SCREEN_WIDTH EQU 20 SCREEN_WIDTH EQU 20
SCREEN_HEIGHT EQU 18 SCREEN_HEIGHT EQU 18
SCREEN_WIDTH_PIXELS EQU SCREEN_WIDTH * PIXELS_PER_TILE
SCREEN_HEIGHT_PIXELS EQU SCREEN_HEIGHT * PIXELS_PER_TILE
NPC_MOVEMENT_DOWN EQU $00 NPC_MOVEMENT_DOWN EQU $00
NPC_MOVEMENT_UP EQU $40 NPC_MOVEMENT_UP EQU $40
NPC_MOVEMENT_LEFT EQU $80 NPC_MOVEMENT_LEFT EQU $80

View file

@ -28,67 +28,78 @@ AnimateShootingStar: ; 70044 (1c:4044)
call LoadShootingStarGraphics call LoadShootingStarGraphics
ld a, (SFX_1f_67 - SFX_Headers_1f) / 3 ld a, (SFX_1f_67 - SFX_Headers_1f) / 3
call PlaySound call PlaySound
; Move the big star down and left across the screen.
ld hl, wOAMBuffer ld hl, wOAMBuffer
ld bc, $a004 ld bc, $a004
.asm_70052 .bigStarLoop
push hl push hl
push bc push bc
.asm_70054 .bigStarInnerLoop
ld a, [hl] ld a, [hl] ; Y
add $4 add 4
ld [hli], a ld [hli], a
ld a, [hl] ld a, [hl] ; X
add $fc add -4
ld [hli], a ld [hli], a
inc hl inc hl
inc hl inc hl
dec c dec c
jr nz, .asm_70054 jr nz, .bigStarInnerLoop
ld c, $1 ld c, 1
call CheckForUserInterruption call CheckForUserInterruption
pop bc pop bc
pop hl pop hl
ret c ret c
ld a, [hl] ld a, [hl]
cp $50 cp 80
jr nz, .asm_70070 jr nz, .next
jr .asm_70052 jr .bigStarLoop
.asm_70070 .next
cp b cp b
jr nz, .asm_70052 jr nz, .bigStarLoop
; Clear big star OAM.
ld hl, wOAMBuffer ld hl, wOAMBuffer
ld c, $4 ld c, 4
ld de, $4 ld de, 4
.asm_7007b .clearOAMLoop
ld [hl], $a0 ld [hl], 160
add hl, de add hl, de
dec c dec c
jr nz, .asm_7007b jr nz, .clearOAMLoop
ld b, $3
.asm_70083 ; Make Gamefreak logo flash.
ld b, 3
.flashLogoLoop
ld hl, rOBP0 ld hl, rOBP0
rrc [hl] rrc [hl]
rrc [hl] rrc [hl]
ld c, $a ld c, 10
call CheckForUserInterruption call CheckForUserInterruption
ret c ret c
dec b dec b
jr nz, .asm_70083 jr nz, .flashLogoLoop
; Copy 24 instances of the small stars OAM data.
; Note that their coordinates put them off-screen.
ld de, wOAMBuffer ld de, wOAMBuffer
ld a, $18 ld a, 24
.asm_70098 .initSmallStarsOAMLoop
push af push af
ld hl, OAMData_700ee ld hl, SmallStarsOAM
ld bc, $4 ld bc, 4
call CopyData call CopyData
pop af pop af
dec a dec a
jr nz, .asm_70098 jr nz, .initSmallStarsOAMLoop
; Animate the small stars falling from the Gamefreak logo.
xor a xor a
ld [wWhichTrade], a ld [wMoveDownSmallStarsOAMCount], a
ld hl, PointerTable_700f2 ld hl, SmallStarsWaveCoordsPointerTable
ld c, $6 ld c, 6
.asm_700af .smallStarsLoop
ld a, [hli] ld a, [hli]
ld e, a ld e, a
ld a, [hli] ld a, [hli]
@ -96,100 +107,109 @@ AnimateShootingStar: ; 70044 (1c:4044)
push bc push bc
push hl push hl
ld hl, wOAMBuffer + $50 ld hl, wOAMBuffer + $50
ld c, $4 ld c, 4
.asm_700ba .smallStarsInnerLoop ; introduce new wave of 4 small stars OAM entries
ld a, [de] ld a, [de]
cp $ff cp $ff
jr z, .asm_700d5 jr z, .next2
ld [hli], a ld [hli], a ; Y
inc de inc de
ld a, [de] ld a, [de]
ld [hli], a ld [hli], a ; X
inc de inc de
inc hl inc hl
inc hl inc hl
dec c dec c
jr nz, .asm_700ba jr nz, .smallStarsInnerLoop
ld a, [wWhichTrade] ld a, [wMoveDownSmallStarsOAMCount]
cp $18 cp 24
jr z, .asm_700d5 jr z, .next2
add $6 add 6 ; should be 4, but the extra 2 aren't visible on screen
ld [wWhichTrade], a ld [wMoveDownSmallStarsOAMCount], a
.asm_700d5 .next2
call Func_7011f call MoveDownSmallStars
push af push af
; shift the existing OAM entries down to make room for the next wave
ld hl, wOAMBuffer + $10 ld hl, wOAMBuffer + $10
ld de, wOAMBuffer ld de, wOAMBuffer
ld bc, $50 ld bc, $50
call CopyData call CopyData
pop af pop af
pop hl pop hl
pop bc pop bc
ret c ret c
dec c dec c
jr nz, .asm_700af jr nz, .smallStarsLoop
and a and a
ret ret
OAMData_700ee: ; 700ee (1c:40ee) SmallStarsOAM: ; 700ee (1c:40ee)
db $00,$00,$A2,$90 db $00,$00,$A2,$90
PointerTable_700f2: ; 700f2 (1c:40f2) SmallStarsWaveCoordsPointerTable: ; 700f2 (1c:40f2)
dw OAMData_700fe dw SmallStarsWave1Coords
dw OAMData_70106 dw SmallStarsWave2Coords
dw OAMData_7010e dw SmallStarsWave3Coords
dw OAMData_70116 dw SmallStarsWave4Coords
dw OAMData_7011e dw SmallStarsEmptyWave
dw OAMData_7011e dw SmallStarsEmptyWave
; each entry is only half of an OAM tile ; The stars that fall from the Gamefreak logo come in 4 waves of 4 OAM entries.
OAMData_700fe: ; 700fe (1c:40fe) ; These arrays contain the Y and X coordinates of each OAM entry.
SmallStarsWave1Coords: ; 700fe (1c:40fe)
db $68,$30 db $68,$30
db $68,$40 db $68,$40
db $68,$58 db $68,$58
db $68,$78 db $68,$78
OAMData_70106: ; 70106 (1c:4106) SmallStarsWave2Coords: ; 70106 (1c:4106)
db $68,$38 db $68,$38
db $68,$48 db $68,$48
db $68,$60 db $68,$60
db $68,$70 db $68,$70
OAMData_7010e: ; 7010e (1c:410e) SmallStarsWave3Coords: ; 7010e (1c:410e)
db $68,$34 db $68,$34
db $68,$4C db $68,$4C
db $68,$54 db $68,$54
db $68,$64 db $68,$64
OAMData_70116: ; 70116 (1c:4116) SmallStarsWave4Coords: ; 70116 (1c:4116)
db $68,$3C db $68,$3C
db $68,$5C db $68,$5C
db $68,$6C db $68,$6C
db $68,$74 db $68,$74
OAMData_7011e: ; 7011e (1c:411e) SmallStarsEmptyWave: ; 7011e (1c:411e)
db $FF db $FF
Func_7011f: ; 7011f (1c:411f) MoveDownSmallStars: ; 7011f (1c:411f)
ld b, $8 ld b, 8
.asm_70121 .loop
ld hl, wOAMBuffer + $5c ld hl, wOAMBuffer + $5c
ld a, [wWhichTrade] ld a, [wMoveDownSmallStarsOAMCount]
ld de, $fffc ld de, -4
ld c, a ld c, a
.asm_7012b .innerLoop
inc [hl] inc [hl] ; Y
add hl, de add hl, de
dec c dec c
jr nz, .asm_7012b jr nz, .innerLoop
; Toggle the palette so that the lower star in the small stars tile blinks in
; and out.
ld a, [rOBP1] ld a, [rOBP1]
xor $a0 xor %10100000
ld [rOBP1], a ld [rOBP1], a
ld c, $3
ld c, 3
call CheckForUserInterruption call CheckForUserInterruption
ret c ret c
dec b dec b
jr nz, .asm_70121 jr nz, .loop
ret ret
GameFreakLogoOAMData: ; 70140 (1c:4140) GameFreakLogoOAMData: ; 70140 (1c:4140)

View file

@ -22,16 +22,16 @@ PlayIntroScene: ; 4169d (10:569d)
ld [rOBP1], a ld [rOBP1], a
xor a xor a
ld [hSCX], a ld [hSCX], a
ld b, $3 ld b, $3 ; Gengar tiles
call Func_4183f call IntroCopyTiles
ld a, 0 ld a, 0
ld [W_BASECOORDX], a ld [W_BASECOORDX], a
ld a, 80 ld a, 80
ld [W_BASECOORDY], a ld [W_BASECOORDY], a
ld bc, $606 ld bc, $606
call Func_417c7 call InitIntroNidorinoOAM
ld de, $28ff ld de, $28ff ; move Nidorino right by 80 pixels
call Func_4180e call IntroMoveMon
ret c ret c
; hip ; hip
@ -66,22 +66,22 @@ PlayIntroScene: ; 4169d (10:569d)
; raise ; raise
ld b, $4 ld b, $4
call Func_4183f call IntroCopyTiles
ld a, (SFX_1f_61 - SFX_Headers_1f) / 3 ld a, (SFX_1f_61 - SFX_Headers_1f) / 3
call PlaySound call PlaySound
ld de, $401 ld de, $401 ; move Gengar left by 8 pixels
call Func_4180e call IntroMoveMon
ld c, $1e ld c, $1e
call CheckForUserInterruption call CheckForUserInterruption
ret c ret c
; slash ; slash
ld b, $5 ld b, $5
call Func_4183f call IntroCopyTiles
ld a, (SFX_1f_62 - SFX_Headers_1f) / 3 ld a, (SFX_1f_62 - SFX_Headers_1f) / 3
call PlaySound call PlaySound
ld de, $800 ld de, $800 ; move Gengar right by 16 pixels
call Func_4180e call IntroMoveMon
; hip ; hip
ld a, (SFX_1f_5f - SFX_Headers_1f) / 3 ld a, (SFX_1f_5f - SFX_Headers_1f) / 3
call PlaySound call PlaySound
@ -93,10 +93,10 @@ PlayIntroScene: ; 4169d (10:569d)
call CheckForUserInterruption call CheckForUserInterruption
ret c ret c
ld de, $401 ld de, $401 ; move Gengar left by 8 pixels
call Func_4180e call IntroMoveMon
ld b, $3 ld b, $3
call Func_4183f call IntroCopyTiles
ld c, $3c ld c, $3c
call CheckForUserInterruption call CheckForUserInterruption
ret c ret c
@ -142,19 +142,19 @@ AnimateIntroNidorino: ; 41793 (10:5793)
ld a, [de] ld a, [de]
ld [W_BASECOORDX], a ld [W_BASECOORDX], a
push de push de
ld c, $24 ld c, 6 * 6
call Func_417ae call UpdateIntroNidorinoOAM
ld c, 5 ld c, 5
call DelayFrames call DelayFrames
pop de pop de
inc de inc de
jr AnimateIntroNidorino jr AnimateIntroNidorino
Func_417ae: ; 417ae (10:57ae) UpdateIntroNidorinoOAM: ; 417ae (10:57ae)
ld hl, wOAMBuffer ld hl, wOAMBuffer
ld a, [wd09f] ld a, [wd09f]
ld d, a ld d, a
.asm_417b5 .loop
ld a, [W_BASECOORDY] ld a, [W_BASECOORDY]
add [hl] add [hl]
ld [hli], a ld [hli], a
@ -166,105 +166,111 @@ Func_417ae: ; 417ae (10:57ae)
inc hl inc hl
inc d inc d
dec c dec c
jr nz, .asm_417b5 jr nz, .loop
ret ret
Func_417c7: ; 417c7 (10:57c7) InitIntroNidorinoOAM: ; 417c7 (10:57c7)
ld hl, wOAMBuffer ld hl, wOAMBuffer
ld d, $0 ld d, 0
.asm_417cc .loop
push bc push bc
ld a, [W_BASECOORDY] ld a, [W_BASECOORDY]
ld e, a ld e, a
.asm_417d1 .innerLoop
ld a, e ld a, e
add $8 add 8
ld e, a ld e, a
ld [hli], a ld [hli], a ; Y
ld a, [W_BASECOORDX] ld a, [W_BASECOORDX]
ld [hli], a ld [hli], a ; X
ld a, d ld a, d
ld [hli], a ld [hli], a ; tile
ld a, $80 ld a, $80
ld [hli], a ld [hli], a ; attributes
inc d inc d
dec c dec c
jr nz, .asm_417d1 jr nz, .innerLoop
ld a, [W_BASECOORDX] ld a, [W_BASECOORDX]
add $8 add 8
ld [W_BASECOORDX], a ld [W_BASECOORDX], a
pop bc pop bc
dec b dec b
jr nz, .asm_417cc jr nz, .loop
ret ret
Func_417f0: ; 417f0 (10:57f0) IntroClearScreen: ; 417f0 (10:57f0)
ld hl, vBGMap1 ld hl, vBGMap1
ld bc, $240 ld bc, $240
jr asm_417fe jr IntroClearCommon
Func_417f8: ; 417f8 (10:57f8) IntroClearMiddleOfScreen: ; 417f8 (10:57f8)
; clear the area of the tile map between the black bars on the top and bottom
hlCoord 0, 4 hlCoord 0, 4
ld bc, $c8 ld bc, SCREEN_WIDTH * 10
asm_417fe: ; 417fe (10:57fe)
IntroClearCommon: ; 417fe (10:57fe)
ld [hl], $0 ld [hl], $0
inc hl inc hl
dec bc dec bc
ld a, b ld a, b
or c or c
jr nz, asm_417fe jr nz, IntroClearCommon
ret ret
Func_41807: ; 41807 (10:5807) IntroPlaceBlackTiles: ; 41807 (10:5807)
ld a, $1 ld a, $1
.asm_41809 .loop
ld [hli], a ld [hli], a
dec c dec c
jr nz, .asm_41809 jr nz, .loop
ret ret
Func_4180e: ; 4180e (10:580e) IntroMoveMon: ; 4180e (10:580e)
; d = number of times to move the mon (2 pixels each time)
; e: $00 = move Gengar right, $01 = move Gengar left, $ff = move Nidorino right
ld a, e ld a, e
cp $ff cp $ff
jr z, .asm_4181d jr z, .moveNidorinoRight
cp $1 cp $1
jr z, .asm_4182d jr z, .moveGengarLeft
; move Gengar right
ld a, [hSCX] ld a, [hSCX]
dec a dec a
dec a dec a
jr .asm_41831 jr .next
.asm_4181d .moveNidorinoRight
push de push de
ld a, $2 ld a, 2
ld [W_BASECOORDX], a ld [W_BASECOORDX], a
xor a xor a
ld [W_BASECOORDY], a ld [W_BASECOORDY], a
ld c, $24 ld c, 6 * 6
call Func_417ae call UpdateIntroNidorinoOAM
pop de pop de
.asm_4182d .moveGengarLeft
ld a, [hSCX] ld a, [hSCX]
inc a inc a
inc a inc a
.asm_41831 .next
ld [hSCX], a ld [hSCX], a
push de push de
ld c, $2 ld c, 2
call CheckForUserInterruption call CheckForUserInterruption
pop de pop de
ret c ret c
dec d dec d
jr nz, Func_4180e jr nz, IntroMoveMon
ret ret
Func_4183f: ; 4183f (10:583f) IntroCopyTiles: ; 4183f (10:583f)
hlCoord 13, 7 hlCoord 13, 7
CopyTileIDsFromList_ZeroBaseTileID: ; 41842 (10:5842) CopyTileIDsFromList_ZeroBaseTileID: ; 41842 (10:5842)
ld c, $0 ld c, 0
predef_jump CopyTileIDsFromList predef_jump CopyTileIDsFromList
Func_41849: ; 41849 (10:5849) PlayMoveSoundB: ; 41849 (10:5849)
; unused
predef GetMoveSoundB predef GetMoveSoundB
ld a, b ld a, b
jp PlaySound jp PlaySound
@ -303,7 +309,7 @@ PlayShootingStar: ; 4188a (10:588a)
call DisableLCD call DisableLCD
xor a xor a
ld [W_CUROPPONENT], a ld [W_CUROPPONENT], a
call Func_418e9 call IntroDrawBlackBars
call LoadIntroGraphics call LoadIntroGraphics
call EnableLCD call EnableLCD
ld hl, rLCDC ld hl, rLCDC
@ -314,36 +320,37 @@ PlayShootingStar: ; 4188a (10:588a)
callba AnimateShootingStar callba AnimateShootingStar
push af push af
pop af pop af
jr c, .asm_418d0 jr c, .next ; skip the delay if the user interrupted the animation
ld c, 40 ld c, 40
call DelayFrames call DelayFrames
.asm_418d0 .next
ld a, BANK(Music_IntroBattle) ld a, BANK(Music_IntroBattle)
ld [wc0ef], a ld [wc0ef], a
ld [wc0f0], a ld [wc0f0], a
ld a, MUSIC_INTRO_BATTLE ld a, MUSIC_INTRO_BATTLE
ld [wc0ee], a ld [wc0ee], a
call PlaySound call PlaySound
call Func_417f8 call IntroClearMiddleOfScreen
call ClearSprites call ClearSprites
jp Delay3 jp Delay3
Func_418e9: ; 418e9 (10:58e9) IntroDrawBlackBars: ; 418e9 (10:58e9)
call Func_417f0 ; clear the screen and draw black bars on the top and bottom
call IntroClearScreen
hlCoord 0, 0 hlCoord 0, 0
ld c, $50 ld c, SCREEN_WIDTH * 4
call Func_41807 call IntroPlaceBlackTiles
hlCoord 0, 14 hlCoord 0, 14
ld c, $50 ld c, SCREEN_WIDTH * 4
call Func_41807 call IntroPlaceBlackTiles
ld hl, vBGMap1 ld hl, vBGMap1
ld c, $80 ld c, $80
call Func_41807 call IntroPlaceBlackTiles
ld hl, vBGMap1 + $1c0 ld hl, vBGMap1 + $1c0
ld c, $80 ld c, $80
jp Func_41807 jp IntroPlaceBlackTiles
Func_4190c: ; 4190c (10:590c) EmptyFunc4: ; 4190c (10:590c)
ret ret
IntroNidorinoAnimation0: ; 4190d (10:590d) IntroNidorinoAnimation0: ; 4190d (10:590d)

View file

@ -36,19 +36,23 @@ DisplayDiploma: ; 566e2 (15:66e2)
hlCoord 10, 4 hlCoord 10, 4
ld de, wPlayerName ld de, wPlayerName
call PlaceString call PlaceString
callba Func_44dd callba DrawPlayerCharacter
; Move the player 33 pixels right and set the priority bit so he appears
; behind the background layer.
ld hl, wOAMBuffer + $01 ld hl, wOAMBuffer + $01
ld bc, $8028 ld bc, $8028
.asm_5673e .adjustPlayerGfxLoop
ld a, [hl] ld a, [hl] ; X
add $21 add 33
ld [hli], a ld [hli], a
inc hl inc hl
ld a, b ld a, b
ld [hli], a ld [hli], a ; attributes
inc hl inc hl
dec c dec c
jr nz, .asm_5673e jr nz, .adjustPlayerGfxLoop
call EnableLCD call EnableLCD
callba LoadTrainerInfoTextBoxTiles callba LoadTrainerInfoTextBoxTiles
ld b, $8 ld b, $8
@ -65,15 +69,17 @@ DisplayDiploma: ; 566e2 (15:66e2)
call Delay3 call Delay3
jp GBPalNormal jp GBPalNormal
Func_56777: ; 56777 (15:6777) UnusedPlayerNameLengthFunc: ; 56777 (15:6777)
; Unused function that does a calculation involving the length of the player's
; name.
ld hl, wPlayerName ld hl, wPlayerName
ld bc, $ff00 ld bc, $ff00
.asm_5677d .loop
ld a, [hli] ld a, [hli]
cp $50 cp "@"
ret z ret z
dec c dec c
jr .asm_5677d jr .loop
DiplomaTextPointersAndCoords: ; 56784 (15:6784) DiplomaTextPointersAndCoords: ; 56784 (15:6784)
dw DiplomaText dw DiplomaText

View file

@ -179,11 +179,11 @@ LoadCoinsToSubtract: ; 528b1 (14:68b1)
ld hl,wd141 ; first prize's price ld hl,wd141 ; first prize's price
add hl,de ; get selected prize's price add hl,de ; get selected prize's price
xor a xor a
ld [$FF9F],a ld [hCoins - 1],a
ld a,[hli] ld a,[hli]
ld [$FFA0],a ld [hCoins],a
ld a,[hl] ld a,[hl]
ld [$FFA1],a ld [hCoins + 1],a
ret ret
HandlePrizeChoice: ; 528c6 (14:68c6) HandlePrizeChoice: ; 528c6 (14:68c6)
@ -239,7 +239,7 @@ HandlePrizeChoice: ; 528c6 (14:68c6)
ret nc ret nc
.SubtractCoins .SubtractCoins
call LoadCoinsToSubtract call LoadCoinsToSubtract
ld hl,$FFA1 ld hl,hCoins + 1
ld de,wPlayerCoins + 1 ld de,wPlayerCoins + 1
ld c,$02 ; how many bytes ld c,$02 ; how many bytes
predef SubBCDPredef ; subtract coins (BCD daa operations) predef SubBCDPredef ; subtract coins (BCD daa operations)

View file

@ -7,19 +7,19 @@ VendingMachineMenu: ; 74ee0 (1d:4ee0)
xor a xor a
ld [wCurrentMenuItem], a ld [wCurrentMenuItem], a
ld [wLastMenuItem], a ld [wLastMenuItem], a
ld a, $3 ld a, A_BUTTON | B_BUTTON
ld [wMenuWatchedKeys], a ld [wMenuWatchedKeys], a
ld a, $3 ld a, 3
ld [wMaxMenuItem], a ld [wMaxMenuItem], a
ld a, $5 ld a, 5
ld [wTopMenuItemY], a ld [wTopMenuItemY], a
ld a, $1 ld a, 1
ld [wTopMenuItemX], a ld [wTopMenuItemX], a
ld hl, wd730 ld hl, wd730
set 6, [hl] set 6, [hl]
hlCoord 0, 3 hlCoord 0, 3
ld b, $8 ld b, 8
ld c, $c ld c, 12
call TextBoxBorder call TextBoxBorder
call UpdateSprites call UpdateSprites
hlCoord 2, 5 hlCoord 2, 5
@ -31,27 +31,28 @@ VendingMachineMenu: ; 74ee0 (1d:4ee0)
ld hl, wd730 ld hl, wd730
res 6, [hl] res 6, [hl]
call HandleMenuInput call HandleMenuInput
bit 1, a bit 1, a ; pressed B?
jr nz, .asm_74f93 jr nz, .notThirsty
ld a, [wCurrentMenuItem] ld a, [wCurrentMenuItem]
cp $3 cp 3 ; chose Cancel?
jr z, .asm_74f93 jr z, .notThirsty
xor a xor a
ld [$ff9f], a ld [hMoney], a
ld [$ffa1], a ld [hMoney + 2], a
ld a, $2 ld a, $2
ld [$ffa0], a ld [hMoney + 1], a
call HasEnoughMoney call HasEnoughMoney
jr nc, .enoughMoney jr nc, .enoughMoney
ld hl, VendingMachineText4 ld hl, VendingMachineText4
jp PrintText jp PrintText
.enoughMoney .enoughMoney
call Func_74fe7 call LoadVendingMachineItem
ld a, [$ffdb] ld a, [hVendingMachineItem]
ld b, a ld b, a
ld c, 1 ld c, 1
call GiveItem call GiveItem
jr nc, .BagFull jr nc, .BagFull
ld b, 60 ; number of times to play the "brrrrr" sound ld b, 60 ; number of times to play the "brrrrr" sound
.playDeliverySound .playDeliverySound
ld c, 2 ld c, 2
@ -62,10 +63,10 @@ VendingMachineMenu: ; 74ee0 (1d:4ee0)
pop bc pop bc
dec b dec b
jr nz, .playDeliverySound jr nz, .playDeliverySound
.asm_74f72
ld hl, VendingMachineText5 ld hl, VendingMachineText5
call PrintText call PrintText
ld hl, $ffde ld hl, hVendingMachinePrice + 2
ld de, wPlayerMoney + 2 ld de, wPlayerMoney + 2
ld c, $3 ld c, $3
predef SubBCDPredef predef SubBCDPredef
@ -75,7 +76,7 @@ VendingMachineMenu: ; 74ee0 (1d:4ee0)
.BagFull .BagFull
ld hl, VendingMachineText6 ld hl, VendingMachineText6
jp PrintText jp PrintText
.asm_74f93 .notThirsty
ld hl, VendingMachineText7 ld hl, VendingMachineText7
jp PrintText jp PrintText
@ -110,22 +111,22 @@ VendingMachineText7: ; 74fe2 (1d:4fe2)
TX_FAR _VendingMachineText7 TX_FAR _VendingMachineText7
db "@" db "@"
Func_74fe7: ; 74fe7 (1d:4fe7) LoadVendingMachineItem: ; 74fe7 (1d:4fe7)
ld hl, VendingPrices ld hl, VendingPrices
ld a, [wCurrentMenuItem] ld a, [wCurrentMenuItem]
add a add a
add a add a
ld d, $0 ld d, 0
ld e, a ld e, a
add hl, de add hl, de
ld a, [hli] ld a, [hli]
ld [$ffdb], a ld [hVendingMachineItem], a
ld a, [hli] ld a, [hli]
ld [$ffdc], a ld [hVendingMachinePrice], a
ld a, [hli] ld a, [hli]
ld [$ffdd], a ld [hVendingMachinePrice + 1], a
ld a, [hl] ld a, [hl]
ld [$ffde], a ld [hVendingMachinePrice + 2], a
ret ret
VendingPrices: ; 75000 (1d:5000) VendingPrices: ; 75000 (1d:5000)

View file

@ -67,9 +67,9 @@ HiddenCoins: ; 76799 (1d:6799)
and a and a
ret nz ret nz
xor a xor a
ld [$ff9f], a ld [hCoins - 1], a
ld [$ffa0], a ld [hCoins], a
ld [$ffa1], a ld [hCoins + 1], a
ld a, [wWhichTrade] ld a, [wWhichTrade]
sub COIN sub COIN
cp 10 cp 10
@ -81,22 +81,22 @@ HiddenCoins: ; 76799 (1d:6799)
jr .bcd100 jr .bcd100
.bcd10 .bcd10
ld a, $10 ld a, $10
ld [$ffa1], a ld [hCoins + 1], a
jr .bcddone jr .bcddone
.bcd20 .bcd20
ld a, $20 ld a, $20
ld [$ffa1], a ld [hCoins + 1], a
jr .bcddone jr .bcddone
.bcd40 ; due to a typo, this is never used .bcd40 ; due to a typo, this is never used
ld a, $40 ld a, $40
ld [$ffa1], a ld [hCoins + 1], a
jr .bcddone jr .bcddone
.bcd100 .bcd100
ld a, $1 ld a, $1
ld [$ffa0], a ld [hCoins], a
.bcddone .bcddone
ld de, wPlayerCoins + 1 ld de, wPlayerCoins + 1
ld hl, $ffa1 ld hl, hCoins + 1
ld c, $2 ld c, $2
predef AddBCDPredef predef AddBCDPredef
ld hl, wd6fe ld hl, wd6fe

View file

@ -74,7 +74,7 @@ PalletMovementScript_OakMoveLeft: ; 1a44c (6:644c)
jr .done jr .done
; The player is on the left tile of the northern path out of Pallet Town and ; The player is on the left tile of the northern path out of Pallet Town and
; Prof. Oak is below. ; Prof. Oak is below.
; Prof. Oak is already on the right tile. ; Prof. Oak is already where he needs to be.
.playerOnLeftTile .playerOnLeftTile
ld a, $3 ld a, $3
ld [wNPCMovementScriptFunctionNum], a ld [wNPCMovementScriptFunctionNum], a

View file

@ -206,7 +206,7 @@ DisplayPokemartDialogue_: ; 6c20 (1:6c20)
jp .loop jp .loop
.isThereEnoughMoney .isThereEnoughMoney
ld de,wPlayerMoney ld de,wPlayerMoney
ld hl,$ff9f ; item price ld hl,hMoney
ld c,3 ; length of money in bytes ld c,3 ; length of money in bytes
jp StringCmp jp StringCmp
.notEnoughMoney .notEnoughMoney

View file

@ -67,50 +67,60 @@ ENDC
ld a, BANK(Version_GFX) ld a, BANK(Version_GFX)
call FarCopyDataDouble call FarCopyDataDouble
call Func_4519 call ClearBothBGMaps
; place tiles for pokemon logo (except for the last row)
hlCoord 2, 1 hlCoord 2, 1
ld a, $80 ld a, $80
ld de, SCREEN_WIDTH ld de, SCREEN_WIDTH
ld c, $6 ld c, 6
.asm_434d .pokemonLogoTileLoop
ld b, $10 ld b, $10
push hl push hl
.asm_4350 .pokemonLogoTileRowLoop ; place tiles for one row
ld [hli], a ld [hli], a
inc a inc a
dec b dec b
jr nz, .asm_4350 jr nz, .pokemonLogoTileRowLoop
pop hl pop hl
add hl, de add hl, de
dec c dec c
jr nz, .asm_434d jr nz, .pokemonLogoTileLoop
; place tiles for the last row of the pokemon logo
hlCoord 2, 7 hlCoord 2, 7
ld a, $31 ld a, $31
ld b, $10 ld b, $10
.asm_4361 .pokemonLogoLastTileRowLoop
ld [hli], a ld [hli], a
inc a inc a
dec b dec b
jr nz, .asm_4361 jr nz, .pokemonLogoLastTileRowLoop
call Func_44dd
call DrawPlayerCharacter
; put a pokeball in the player's hand
ld hl, wOAMBuffer + $28 ld hl, wOAMBuffer + $28
ld a, $74 ld a, $74
ld [hl], a ld [hl], a
; place tiles for title screen copyright
hlCoord 2, 17 hlCoord 2, 17
ld de, .titlescreenTilemap ld de, .tileScreenCopyrightTiles
ld b, $10 ld b, $10
.asm_4377 .tileScreenCopyrightTilesLoop
ld a, [de] ld a, [de]
ld [hli], a ld [hli], a
inc de inc de
dec b dec b
jr nz, .asm_4377 jr nz, .tileScreenCopyrightTilesLoop
jr .asm_438f
.titlescreenTilemap ; 437f (1:437f) jr .next
.tileScreenCopyrightTiles ; 437f (1:437f)
db $41,$42,$43,$42,$44,$42,$45,$46,$47,$48,$49,$4A,$4B,$4C,$4D,$4E ; ©'95.'96.'98 GAME FREAK inc. db $41,$42,$43,$42,$44,$42,$45,$46,$47,$48,$49,$4A,$4B,$4C,$4D,$4E ; ©'95.'96.'98 GAME FREAK inc.
.asm_438f .next
call SaveScreenTilesToBuffer2 call SaveScreenTilesToBuffer2
call LoadScreenTilesFromBuffer2 call LoadScreenTilesFromBuffer2
call EnableLCD call EnableLCD
@ -121,37 +131,39 @@ IF DEF(_BLUE)
ld a,SQUIRTLE ; which Pokemon to show first on the title screen ld a,SQUIRTLE ; which Pokemon to show first on the title screen
ENDC ENDC
ld [wWhichTrade], a ld [wTitleMonSpecies], a
call Func_4524 call LoadTitleMonSprite
ld a, $9b ld a, (vBGMap0 + $300) / $100
call Func_4533 call TitleScreenCopyTileMapToVRAM
call SaveScreenTilesToBuffer1 call SaveScreenTilesToBuffer1
ld a, $40 ld a, $40
ld [hWY], a ld [hWY], a
call LoadScreenTilesFromBuffer2 call LoadScreenTilesFromBuffer2
ld a, $98 ld a, vBGMap0 / $100
call Func_4533 call TitleScreenCopyTileMapToVRAM
ld b, $6 ld b, $6
call GoPAL_SET call GoPAL_SET
call GBPalNormal call GBPalNormal
ld a, $e4 ld a, %11100100
ld [rOBP0], a ld [rOBP0], a
ld bc, $ffaf ; background scroll Y
; make pokemon logo bounce up and down
ld bc, hSCY ; background scroll Y
ld hl, .TitleScreenPokemonLogoYScrolls ld hl, .TitleScreenPokemonLogoYScrolls
.asm_43c6 .bouncePokemonLogoLoop
ld a, [hli] ld a, [hli]
and a and a
jr z, .asm_43f4 jr z, .finishedBouncingPokemonLogo
ld d, a ld d, a
cp $fd cp -3
jr nz, .asm_43d4 jr nz, .skipPlayingSound
ld a, (SFX_1f_62 - SFX_Headers_1f) / 3 ld a, (SFX_1f_62 - SFX_Headers_1f) / 3
call PlaySound call PlaySound
.asm_43d4 .skipPlayingSound
ld a, [hli] ld a, [hli]
ld e, a ld e, a
call .ScrollTitleScreenPokemonLogo call .ScrollTitleScreenPokemonLogo
jr .asm_43c6 jr .bouncePokemonLogoLoop
.TitleScreenPokemonLogoYScrolls: ; 43db (1:43db) .TitleScreenPokemonLogoYScrolls: ; 43db (1:43db)
; Controls the bouncing effect of the Pokemon logo on the title screen ; Controls the bouncing effect of the Pokemon logo on the title screen
@ -168,36 +180,40 @@ ENDC
; Scrolls the Pokemon logo on the title screen to create the bouncing effect ; Scrolls the Pokemon logo on the title screen to create the bouncing effect
; Scrolls d pixels e times ; Scrolls d pixels e times
call DelayFrame call DelayFrame
ld a, [bc] ld a, [bc] ; background scroll Y
add d add d
ld [bc], a ld [bc], a
dec e dec e
jr nz, .ScrollTitleScreenPokemonLogo jr nz, .ScrollTitleScreenPokemonLogo
ret ret
.asm_43f4
.finishedBouncingPokemonLogo
call LoadScreenTilesFromBuffer1 call LoadScreenTilesFromBuffer1
ld c, 36 ld c, 36
call DelayFrames call DelayFrames
ld a, (SFX_1f_63 - SFX_Headers_1f) / 3 ld a, (SFX_1f_63 - SFX_Headers_1f) / 3
call PlaySound call PlaySound
; scroll game version in from the right
call PrintGameVersionOnTitleScreen call PrintGameVersionOnTitleScreen
ld a, $90 ld a, SCREEN_HEIGHT_PIXELS
ld [hWY], a ld [hWY], a
ld d, $90 ld d, 144
.asm_440a .scrollTitleScreenGameVersionLoop
ld h, d ld h, d
ld l, $40 ld l, 64
call Func_44cf call ScrollTitleScreenGameVersion
ld h, $0 ld h, 0
ld l, $50 ld l, 80
call Func_44cf call ScrollTitleScreenGameVersion
ld a, d ld a, d
add $4 add 4
ld d, a ld d, a
and a and a
jr nz, .asm_440a jr nz, .scrollTitleScreenGameVersionLoop
ld a, $9c
call Func_4533 ld a, vBGMap1 / $100
call TitleScreenCopyTileMapToVRAM
call LoadScreenTilesFromBuffer2 call LoadScreenTilesFromBuffer2
call PrintGameVersionOnTitleScreen call PrintGameVersionOnTitleScreen
call Delay3 call Delay3
@ -207,19 +223,22 @@ ENDC
call PlaySound call PlaySound
xor a xor a
ld [wcc5b], a ld [wcc5b], a
.asm_443b
ld c, $c8 ; Keep scrolling in new mons indefinitely until the user performs input.
.awaitUserInterruptionLoop
ld c, 200
call CheckForUserInterruption call CheckForUserInterruption
jr c, .asm_4459 jr c, .finishedWaiting
call Func_44c1 call TitleScreenScrollInMon
ld c, $1 ld c, 1
call CheckForUserInterruption call CheckForUserInterruption
jr c, .asm_4459 jr c, .finishedWaiting
callba Func_372ac callba TitleScreenAnimateBallIfStarterOut
call Func_4496 call TitleScreenPickNewMon
jr .asm_443b jr .awaitUserInterruptionLoop
.asm_4459
ld a, [wWhichTrade] .finishedWaiting
ld a, [wTitleMonSpecies]
call PlayCry call PlayCry
call WaitForSoundToFinish call WaitForSoundToFinish
call GBPalWhiteOutWithDelay3 call GBPalWhiteOutWithDelay3
@ -229,10 +248,10 @@ ENDC
inc a inc a
ld [H_AUTOBGTRANSFERENABLED], a ld [H_AUTOBGTRANSFERENABLED], a
call ClearScreen call ClearScreen
ld a, $98 ld a, vBGMap0 / $100
call Func_4533 call TitleScreenCopyTileMapToVRAM
ld a, $9c ld a, vBGMap1 / $100
call Func_4533 call TitleScreenCopyTileMapToVRAM
call Delay3 call Delay3
call LoadGBPal call LoadGBPal
ld a, [hJoyHeld] ld a, [hJoyHeld]
@ -247,12 +266,12 @@ ENDC
ld hl, DoClearSaveDialogue ld hl, DoClearSaveDialogue
jp Bankswitch jp Bankswitch
Func_4496: ; 4496 (1:4496) TitleScreenPickNewMon: ; 4496 (1:4496)
ld a, $98 ld a, vBGMap0 / $100
call Func_4533 call TitleScreenCopyTileMapToVRAM
.new .loop
; Generate a new TitleMon. ; Keep looping until a mon different from the current one is picked.
call Random call Random
and $f and $f
ld c, a ld c, a
@ -260,14 +279,14 @@ Func_4496: ; 4496 (1:4496)
ld hl, TitleMons ld hl, TitleMons
add hl, bc add hl, bc
ld a, [hl] ld a, [hl]
ld hl, wWhichTrade ld hl, wTitleMonSpecies
; Can't be the same as before. ; Can't be the same as before.
cp [hl] cp [hl]
jr z, .new jr z, .loop
ld [hl], a ld [hl], a
call Func_4524 call LoadTitleMonSprite
ld a, $90 ld a, $90
ld [hWY], a ld [hWY], a
@ -275,14 +294,14 @@ Func_4496: ; 4496 (1:4496)
callba TitleScroll callba TitleScroll
ret ret
Func_44c1: ; 44c1 (1:44c1) TitleScreenScrollInMon: ; 44c1 (1:44c1)
ld d, 0 ; scroll in ld d, 0 ; scroll in
callba TitleScroll callba TitleScroll
xor a xor a
ld [hWY], a ld [hWY], a
ret ret
Func_44cf: ; 44cf (1:44cf) ScrollTitleScreenGameVersion: ; 44cf (1:44cf)
.wait .wait
ld a, [rLY] ld a, [rLY]
cp l cp l
@ -297,7 +316,7 @@ Func_44cf: ; 44cf (1:44cf)
jr z, .wait2 jr z, .wait2
ret ret
Func_44dd: ; 44dd (1:44dd) DrawPlayerCharacter: ; 44dd (1:44dd)
ld hl, PlayerCharacterTitleGraphics ld hl, PlayerCharacterTitleGraphics
ld de, vSprites ld de, vSprites
ld bc, $230 ld bc, $230
@ -305,49 +324,49 @@ Func_44dd: ; 44dd (1:44dd)
call FarCopyData2 call FarCopyData2
call ClearSprites call ClearSprites
xor a xor a
ld [wWhichTrade], a ld [wPlayerCharacterOAMTile], a
ld hl, wOAMBuffer ld hl, wOAMBuffer
ld de, $605a ld de, $605a
ld b, $7 ld b, 7
.asm_44fa .loop
push de push de
ld c, $5 ld c, 5
.asm_44fd .innerLoop
ld a, d ld a, d
ld [hli], a ld [hli], a ; Y
ld a, e ld a, e
ld [hli], a ld [hli], a ; X
add $8 add 8
ld e, a ld e, a
ld a, [wWhichTrade] ld a, [wPlayerCharacterOAMTile]
ld [hli], a ld [hli], a ; tile
inc a inc a
ld [wWhichTrade], a ld [wPlayerCharacterOAMTile], a
inc hl inc hl
dec c dec c
jr nz, .asm_44fd jr nz, .innerLoop
pop de pop de
ld a, $8 ld a, 8
add d add d
ld d, a ld d, a
dec b dec b
jr nz, .asm_44fa jr nz, .loop
ret ret
Func_4519: ; 4519 (1:4519) ClearBothBGMaps: ; 4519 (1:4519)
ld hl, vBGMap0 ld hl, vBGMap0
ld bc, $800 ld bc, $400 * 2
ld a, $7f ld a, " "
jp FillMemory jp FillMemory
Func_4524: ; 4524 (1:4524) LoadTitleMonSprite: ; 4524 (1:4524)
ld [wcf91], a ld [wcf91], a
ld [wd0b5], a ld [wd0b5], a
hlCoord 5, 10 hlCoord 5, 10
call GetMonHeader call GetMonHeader
jp LoadFrontSpriteByMonIndex jp LoadFrontSpriteByMonIndex
Func_4533: ; 4533 (1:4533) TitleScreenCopyTileMapToVRAM: ; 4533 (1:4533)
ld [H_AUTOBGTRANSFERDEST + 1], a ld [H_AUTOBGTRANSFERDEST + 1], a
jp Delay3 jp Delay3

View file

@ -87,9 +87,9 @@ TitleBallYTable: ; 372a0 (d:72a0)
; This is really two 0-terminated lists. Initiated with an index of 1. ; This is really two 0-terminated lists. Initiated with an index of 1.
db 0, $71, $6f, $6e, $6d, $6c, $6d, $6e, $6f, $71, $74, 0 db 0, $71, $6f, $6e, $6d, $6c, $6d, $6e, $6f, $71, $74, 0
Func_372ac: ; 372ac (d:72ac) TitleScreenAnimateBallIfStarterOut: ; 372ac (d:72ac)
; Animate the TitleBall if a starter just got scrolled out. ; Animate the TitleBall if a starter just got scrolled out.
ld a, [wWhichTrade] ld a, [wTitleMonSpecies]
cp STARTER1 cp STARTER1
jr z, .ok jr z, .ok
cp STARTER2 cp STARTER2

View file

@ -1630,15 +1630,15 @@ DisplayChooseQuantityMenu:: ; 2d57 (0:2d57)
ld c,$03 ld c,$03
ld a,[wItemQuantity] ld a,[wItemQuantity]
ld b,a ld b,a
ld hl,$ff9f ; total price ld hl,hMoney ; total price
; initialize total price to 0 ; initialize total price to 0
xor a xor a
ld [hli],a ld [hli],a
ld [hli],a ld [hli],a
ld [hl],a ld [hl],a
.addLoop ; loop to multiply the individual price by the quantity to get the total price .addLoop ; loop to multiply the individual price by the quantity to get the total price
ld de,$ffa1 ld de,hMoney + 2
ld hl,$ff8d ld hl,hItemPrice + 2
push bc push bc
predef AddBCDPredef ; add the individual price to the current sum predef AddBCDPredef ; add the individual price to the current sum
pop bc pop bc
@ -1648,23 +1648,23 @@ DisplayChooseQuantityMenu:: ; 2d57 (0:2d57)
and a ; should the price be halved (for selling items)? and a ; should the price be halved (for selling items)?
jr z,.skipHalvingPrice jr z,.skipHalvingPrice
xor a xor a
ld [$ffa2],a ld [hDivideBCDDivisor],a
ld [$ffa3],a ld [hDivideBCDDivisor + 1],a
ld a,$02 ld a,$02
ld [$ffa4],a ld [hDivideBCDDivisor + 2],a
predef DivideBCDPredef3 ; halves the price predef DivideBCDPredef3 ; halves the price
; store the halved price ; store the halved price
ld a,[$ffa2] ld a,[hDivideBCDQuotient]
ld [$ff9f],a ld [hMoney],a
ld a,[$ffa3] ld a,[hDivideBCDQuotient + 1]
ld [$ffa0],a ld [hMoney + 1],a
ld a,[$ffa4] ld a,[hDivideBCDQuotient + 2]
ld [$ffa1],a ld [hMoney + 2],a
.skipHalvingPrice .skipHalvingPrice
hlCoord 12, 10 hlCoord 12, 10
ld de,SpacesBetweenQuantityAndPriceText ld de,SpacesBetweenQuantityAndPriceText
call PlaceString call PlaceString
ld de,$ff9f ; total price ld de,hMoney ; total price
ld c,$a3 ld c,$a3
call PrintBCDNumber call PrintBCDNumber
hlCoord 9, 10 hlCoord 9, 10
@ -2942,17 +2942,17 @@ GetTrainerName:: ; 359e (0:359e)
HasEnoughMoney:: HasEnoughMoney::
; Check if the player has at least as much ; Check if the player has at least as much
; money as the 3-byte BCD value at $ff9f. ; money as the 3-byte BCD value at hMoney.
ld de, wPlayerMoney ld de, wPlayerMoney
ld hl, $ff9f ld hl, hMoney
ld c, 3 ld c, 3
jp StringCmp jp StringCmp
HasEnoughCoins:: HasEnoughCoins::
; Check if the player has at least as many ; Check if the player has at least as many
; coins as the 2-byte BCD value at $ffa0. ; coins as the 2-byte BCD value at hCoins.
ld de, wPlayerCoins ld de, wPlayerCoins
ld hl, $ffa0 ld hl, hCoins
ld c, 2 ld c, 2
jp StringCmp jp StringCmp

View file

@ -92,6 +92,12 @@ hNPCPlayerRelativePosPerspective EQU $FF9B
; 1 = target is to the west ; 1 = target is to the west
hNPCPlayerRelativePosFlags EQU $FF9D hNPCPlayerRelativePosFlags EQU $FF9D
hMoney EQU $FF9F ; 3-byte BCD number
hCoins EQU $FFA0 ; 2-byte BCD number
hDivideBCDDivisor EQU $FFA2 ; 3-byte BCD number
hDivideBCDQuotient EQU $FFA2 ; 3-byte BCD number
hSerialReceivedNewData EQU $FFA9 hSerialReceivedNewData EQU $FFA9
; $01 = using external clock ; $01 = using external clock
@ -201,6 +207,9 @@ hTilesetType EQU $FFD7
H_CURRENTSPRITEOFFSET EQU $FFDA ; multiple of $10 H_CURRENTSPRITEOFFSET EQU $FFDA ; multiple of $10
hVendingMachineItem EQU $FFDB
hVendingMachinePrice EQU $FFDC ; 3-byte BCD number
hNewPartyLength EQU $FFE4 hNewPartyLength EQU $FFE4
hDividend2 EQU $FFE5 hDividend2 EQU $FFE5

View file

@ -31,30 +31,30 @@ ResetStatusAndHalveMoneyOnBlackout::
ld [wNPCMovementScriptPointerTableNum], a ld [wNPCMovementScriptPointerTableNum], a
ld [wFlags_0xcd60], a ld [wFlags_0xcd60], a
ld [$ff9f], a ld [hMoney], a
ld [$ff9f + 1], a ld [hMoney + 1], a
ld [$ff9f + 2], a ld [hMoney + 2], a
call HasEnoughMoney call HasEnoughMoney
jr c, .lostmoney ; never happens jr c, .lostmoney ; never happens
; Halve the player's money. ; Halve the player's money.
ld a, [wPlayerMoney] ld a, [wPlayerMoney]
ld [$ff9f], a ld [hMoney], a
ld a, [wPlayerMoney + 1] ld a, [wPlayerMoney + 1]
ld [$ff9f + 1], a ld [hMoney + 1], a
ld a, [wPlayerMoney + 2] ld a, [wPlayerMoney + 2]
ld [$ff9f + 2], a ld [hMoney + 2], a
xor a xor a
ld [$ffa2], a ld [hDivideBCDDivisor], a
ld [$ffa3], a ld [hDivideBCDDivisor + 1], a
ld a, 2 ld a, 2
ld [$ffa4], a ld [hDivideBCDDivisor + 2], a
predef DivideBCDPredef3 predef DivideBCDPredef3
ld a, [$ffa2] ld a, [hDivideBCDQuotient]
ld [wPlayerMoney], a ld [wPlayerMoney], a
ld a, [$ffa2 + 1] ld a, [hDivideBCDQuotient + 1]
ld [wPlayerMoney + 1], a ld [wPlayerMoney + 1], a
ld a, [$ffa2 + 2] ld a, [hDivideBCDQuotient + 2]
ld [wPlayerMoney + 2], a ld [wPlayerMoney + 2], a
.lostmoney .lostmoney
@ -789,12 +789,12 @@ INCLUDE "engine/oak_speech2.asm"
; sets carry flag if there is enough money and unsets carry flag if not ; sets carry flag if there is enough money and unsets carry flag if not
SubtractAmountPaidFromMoney_: ; 6b21 (1:6b21) SubtractAmountPaidFromMoney_: ; 6b21 (1:6b21)
ld de,wPlayerMoney ld de,wPlayerMoney
ld hl,$ff9f ; total price of items ld hl,hMoney ; total price of items
ld c,3 ; length of money in bytes ld c,3 ; length of money in bytes
call StringCmp call StringCmp
ret c ret c
ld de,wPlayerMoney + 2 ld de,wPlayerMoney + 2
ld hl,$ffa1 ; total price of items ld hl,hMoney + 2 ; total price of items
ld c,3 ; length of money in bytes ld c,3 ; length of money in bytes
predef SubBCDPredef ; subtract total price from money predef SubBCDPredef ; subtract total price from money
ld a,MONEY_BOX ld a,MONEY_BOX

View file

@ -151,31 +151,31 @@ CeladonGameCornerText2: ; 48ca9 (12:4ca9)
call Has9990Coins call Has9990Coins
jr nc, .asm_48d14 jr nc, .asm_48d14
xor a xor a
ld [$ff9f], a ld [hMoney], a
ld [$ffa1], a ld [hMoney + 2], a
ld a, $10 ld a, $10
ld [$ffa0], a ld [hMoney + 1], a
call HasEnoughMoney call HasEnoughMoney
jr nc, .asm_48cdb jr nc, .asm_48cdb
ld hl, CeladonGameCornerText_48d31 ld hl, CeladonGameCornerText_48d31
jr .asm_48d1c jr .asm_48d1c
.asm_48cdb .asm_48cdb
xor a xor a
ld [$ff9f], a ld [hMoney], a
ld [$ffa1], a ld [hMoney + 2], a
ld a, $10 ld a, $10
ld [$ffa0], a ld [hMoney + 1], a
ld hl, $ffa1 ld hl, hMoney + 2
ld de, wPlayerMoney + 2 ld de, wPlayerMoney + 2
ld c, $3 ld c, $3
predef SubBCDPredef predef SubBCDPredef
xor a xor a
ld [$ff9f], a ld [hCoins - 1], a
ld [$ffa0], a ld [hCoins], a
ld a, $50 ld a, $50
ld [$ffa1], a ld [hCoins + 1], a
ld de, wPlayerCoins + 1 ld de, wPlayerCoins + 1
ld hl, $ffa1 ld hl, hCoins + 1
ld c, $2 ld c, $2
predef AddBCDPredef predef AddBCDPredef
call CeladonGameCornerScript_48f1e call CeladonGameCornerScript_48f1e
@ -238,12 +238,12 @@ CeladonGameCornerText5: ; 48d4a (12:4d4a)
call Has9990Coins call Has9990Coins
jr nc, .asm_48d8e jr nc, .asm_48d8e
xor a xor a
ld [$ff9f], a ld [hCoins - 1], a
ld [$ffa0], a ld [hCoins], a
ld a, $10 ld a, $10
ld [$ffa1], a ld [hCoins + 1], a
ld de, wPlayerCoins + 1 ld de, wPlayerCoins + 1
ld hl, $ffa1 ld hl, hCoins + 1
ld c, $2 ld c, $2
predef AddBCDPredef predef AddBCDPredef
ld hl, wd77e ld hl, wd77e
@ -320,12 +320,12 @@ CeladonGameCornerText9: ; 48dd9 (12:4dd9)
call Has9990Coins call Has9990Coins
jr nc, .asm_48e18 jr nc, .asm_48e18
xor a xor a
ld [$ff9f], a ld [hCoins - 1], a
ld [$ffa0], a ld [hCoins], a
ld a, $20 ld a, $20
ld [$ffa1], a ld [hCoins + 1], a
ld de, wPlayerCoins + 1 ld de, wPlayerCoins + 1
ld hl, $ffa1 ld hl, hCoins + 1
ld c, $2 ld c, $2
predef AddBCDPredef predef AddBCDPredef
ld hl, wd77e ld hl, wd77e
@ -373,12 +373,12 @@ CeladonGameCornerText10: ; 48e3b (12:4e3b)
call Has9990Coins call Has9990Coins
jr z, .asm_48e7a jr z, .asm_48e7a
xor a xor a
ld [$ff9f], a ld [hCoins - 1], a
ld [$ffa0], a ld [hCoins], a
ld a, $20 ld a, $20
ld [$ffa1], a ld [hCoins + 1], a
ld de, wPlayerCoins + 1 ld de, wPlayerCoins + 1
ld hl, $ffa1 ld hl, hCoins + 1
ld c, $2 ld c, $2
predef AddBCDPredef predef AddBCDPredef
ld hl, wd77e ld hl, wd77e
@ -527,7 +527,7 @@ GameCornerBlankText2: ; 48f8d (12:4f8d)
Has9990Coins: ; 48f95 (12:4f95) Has9990Coins: ; 48f95 (12:4f95)
ld a, $99 ld a, $99
ld [$ffa0], a ld [hCoins], a
ld a, $90 ld a, $90
ld [$ffa1], a ld [hCoins + 1], a
jp HasEnoughCoins jp HasEnoughCoins

View file

@ -137,11 +137,11 @@ DayCareMScript_562e1: ; 562e1 (15:62e1)
and a and a
jp nz, .asm_56403 jp nz, .asm_56403
ld hl, wTrainerFacingDirection ld hl, wTrainerFacingDirection
ld [$ff9f], a ld [hMoney], a
ld a, [hli] ld a, [hli]
ld [$ffa0], a ld [hMoney + 1], a
ld a, [hl] ld a, [hl]
ld [$ffa1], a ld [hMoney + 2], a
call HasEnoughMoney call HasEnoughMoney
jr nc, .asm_56396 jr nc, .asm_56396
ld hl, DayCareMText_56454 ld hl, DayCareMText_56454

View file

@ -35,10 +35,10 @@ MtMoonPokecenterText4: ; 492ec (12:52ec)
ld a, [wCurrentMenuItem] ld a, [wCurrentMenuItem]
and a and a
jp nz, .asm_4934e jp nz, .asm_4934e
ld [$ff9f], a ld [hMoney], a
ld [$ffa1], a ld [hMoney + 2], a
ld a, $5 ld a, $5
ld [$ffa0], a ld [hMoney + 1], a
call HasEnoughMoney call HasEnoughMoney
jr nc, .asm_faa09 jr nc, .asm_faa09
ld hl, MtMoonPokecenterText_49366 ld hl, MtMoonPokecenterText_49366

View file

@ -81,10 +81,10 @@ Museum1FText1: ; 5c135 (17:4135)
and a and a
jr nz, .asm_de133 jr nz, .asm_de133
xor a xor a
ld [$ff9f], a ld [hMoney], a
ld [$ffa0], a ld [hMoney + 1], a
ld a, $50 ld a, $50
ld [$ffa1], a ld [hMoney + 2], a
call HasEnoughMoney call HasEnoughMoney
jr nc, .asm_0f3e3 jr nc, .asm_0f3e3
ld hl, Museum1FText_5c229 ld hl, Museum1FText_5c229

View file

@ -155,11 +155,11 @@ SafariZoneEntranceTextPointers: ; 752b9 (1d:52b9)
and a and a
jp nz,.PleaseComeAgain jp nz,.PleaseComeAgain
xor a xor a
ld [$ff9f],a ld [hMoney],a
ld a,$05 ld a,$05
ld [$ffa0],a ld [hMoney + 1],a
ld a,$00 ld a,$00
ld [$ffa1],a ld [hMoney + 2],a
call HasEnoughMoney call HasEnoughMoney
jr nc,.success jr nc,.success
ld hl,.NotEnoughMoneyText ld hl,.NotEnoughMoneyText

View file

@ -15,7 +15,7 @@ POKEDEX_TEXT EQU $2b
MOVE_NAMES EQU $2c MOVE_NAMES EQU $2c
INCLUDE "macros.asm" INCLUDE "macros.asm"
INCLUDE "hram.asm"
SECTION "Text 1", ROMX, BANK[TEXT_1] SECTION "Text 1", ROMX, BANK[TEXT_1]
@ -1015,13 +1015,13 @@ _HiddenItemBagFullText:: ; 894e1 (22:54e1)
_FoundHiddenCoinsText:: ; 8950b (22:550b) _FoundHiddenCoinsText:: ; 8950b (22:550b)
text $52, " found" text $52, " found"
line "@" line "@"
TX_BCD $ffa0, $c2 TX_BCD hCoins, $c2
text " coins!@@" text " coins!@@"
_FoundHiddenCoins2Text:: ; 89523 (22:5523) _FoundHiddenCoins2Text:: ; 89523 (22:5523)
text $52, " found" text $52, " found"
line "@" line "@"
TX_BCD $ffa0, $c2 TX_BCD hCoins, $c2
text " coins!@@" text " coins!@@"
_DroppedHiddenCoinsText:: ; 8953b (22:553b) _DroppedHiddenCoinsText:: ; 8953b (22:553b)
@ -2635,7 +2635,7 @@ _PokemartTellBuyPriceText:: ; a2619 (28:6619)
text "?" text "?"
line "That will be" line "That will be"
cont "¥@" cont "¥@"
TX_BCD $ff9f, $c3 TX_BCD hMoney, $c3
text ". OK?" text ". OK?"
done done
@ -2662,7 +2662,7 @@ _PokemonSellingGreetingText:: ; a2690 (28:6690)
_PokemartTellSellPriceText:: ; a26ae (28:66ae) _PokemartTellSellPriceText:: ; a26ae (28:66ae)
text "I can pay you" text "I can pay you"
line "¥@" line "¥@"
TX_BCD $ff9f, $c3 TX_BCD hMoney, $c3
text " for that." text " for that."
done done

View file

@ -634,6 +634,13 @@ wOverrideSimulatedJoypadStatesMask:: ; cd3b
ds 1 ds 1
wTitleMonSpecies:: ; cd3d
wPlayerCharacterOAMTile:: ; cd3d
wMoveDownSmallStarsOAMCount:: ; cd3d
; the number of small stars OAM entries to move down
wChargeMoveNum:: ; cd3d wChargeMoveNum:: ; cd3d
wCoordIndex:: ; cd3d wCoordIndex:: ; cd3d