mirror of
https://github.com/thornAvery/kep-hack.git
synced 2025-09-17 02:40:50 +12:00
title / diploma / vending machine
This commit is contained in:
parent
9fbd9e9a1f
commit
aa3da5f3b0
|
@ -20,9 +20,14 @@ D_LEFT EQU %00100000
|
|||
D_UP EQU %01000000
|
||||
D_DOWN EQU %10000000
|
||||
|
||||
PIXELS_PER_TILE EQU 8
|
||||
|
||||
SCREEN_WIDTH EQU 20
|
||||
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_UP EQU $40
|
||||
NPC_MOVEMENT_LEFT EQU $80
|
||||
|
|
|
@ -36,19 +36,23 @@ DisplayDiploma: ; 566e2 (15:66e2)
|
|||
hlCoord 10, 4
|
||||
ld de, wPlayerName
|
||||
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 bc, $8028
|
||||
.asm_5673e
|
||||
ld a, [hl]
|
||||
add $21
|
||||
.adjustPlayerGfxLoop
|
||||
ld a, [hl] ; X
|
||||
add 33
|
||||
ld [hli], a
|
||||
inc hl
|
||||
ld a, b
|
||||
ld [hli], a
|
||||
ld [hli], a ; attributes
|
||||
inc hl
|
||||
dec c
|
||||
jr nz, .asm_5673e
|
||||
jr nz, .adjustPlayerGfxLoop
|
||||
|
||||
call EnableLCD
|
||||
callba LoadTrainerInfoTextBoxTiles
|
||||
ld b, $8
|
||||
|
@ -65,15 +69,17 @@ DisplayDiploma: ; 566e2 (15:66e2)
|
|||
call Delay3
|
||||
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 bc, $ff00
|
||||
.asm_5677d
|
||||
.loop
|
||||
ld a, [hli]
|
||||
cp $50
|
||||
cp "@"
|
||||
ret z
|
||||
dec c
|
||||
jr .asm_5677d
|
||||
jr .loop
|
||||
|
||||
DiplomaTextPointersAndCoords: ; 56784 (15:6784)
|
||||
dw DiplomaText
|
||||
|
|
|
@ -7,19 +7,19 @@ VendingMachineMenu: ; 74ee0 (1d:4ee0)
|
|||
xor a
|
||||
ld [wCurrentMenuItem], a
|
||||
ld [wLastMenuItem], a
|
||||
ld a, $3
|
||||
ld a, A_BUTTON | B_BUTTON
|
||||
ld [wMenuWatchedKeys], a
|
||||
ld a, $3
|
||||
ld a, 3
|
||||
ld [wMaxMenuItem], a
|
||||
ld a, $5
|
||||
ld a, 5
|
||||
ld [wTopMenuItemY], a
|
||||
ld a, $1
|
||||
ld a, 1
|
||||
ld [wTopMenuItemX], a
|
||||
ld hl, wd730
|
||||
set 6, [hl]
|
||||
hlCoord 0, 3
|
||||
ld b, $8
|
||||
ld c, $c
|
||||
ld b, 8
|
||||
ld c, 12
|
||||
call TextBoxBorder
|
||||
call UpdateSprites
|
||||
hlCoord 2, 5
|
||||
|
@ -31,11 +31,11 @@ VendingMachineMenu: ; 74ee0 (1d:4ee0)
|
|||
ld hl, wd730
|
||||
res 6, [hl]
|
||||
call HandleMenuInput
|
||||
bit 1, a
|
||||
jr nz, .asm_74f93
|
||||
bit 1, a ; pressed B?
|
||||
jr nz, .notThirsty
|
||||
ld a, [wCurrentMenuItem]
|
||||
cp $3
|
||||
jr z, .asm_74f93
|
||||
cp 3 ; chose Cancel?
|
||||
jr z, .notThirsty
|
||||
xor a
|
||||
ld [$ff9f], a
|
||||
ld [$ffa1], a
|
||||
|
@ -46,12 +46,13 @@ VendingMachineMenu: ; 74ee0 (1d:4ee0)
|
|||
ld hl, VendingMachineText4
|
||||
jp PrintText
|
||||
.enoughMoney
|
||||
call Func_74fe7
|
||||
ld a, [$ffdb]
|
||||
call LoadVendingMachineItem
|
||||
ld a, [hVendingMachineItem]
|
||||
ld b, a
|
||||
ld c, 1
|
||||
call GiveItem
|
||||
jr nc, .BagFull
|
||||
|
||||
ld b, 60 ; number of times to play the "brrrrr" sound
|
||||
.playDeliverySound
|
||||
ld c, 2
|
||||
|
@ -62,10 +63,10 @@ VendingMachineMenu: ; 74ee0 (1d:4ee0)
|
|||
pop bc
|
||||
dec b
|
||||
jr nz, .playDeliverySound
|
||||
.asm_74f72
|
||||
|
||||
ld hl, VendingMachineText5
|
||||
call PrintText
|
||||
ld hl, $ffde
|
||||
ld hl, hVendingMachinePrice + 2
|
||||
ld de, wPlayerMoney + 2
|
||||
ld c, $3
|
||||
predef SubBCDPredef
|
||||
|
@ -75,7 +76,7 @@ VendingMachineMenu: ; 74ee0 (1d:4ee0)
|
|||
.BagFull
|
||||
ld hl, VendingMachineText6
|
||||
jp PrintText
|
||||
.asm_74f93
|
||||
.notThirsty
|
||||
ld hl, VendingMachineText7
|
||||
jp PrintText
|
||||
|
||||
|
@ -110,22 +111,22 @@ VendingMachineText7: ; 74fe2 (1d:4fe2)
|
|||
TX_FAR _VendingMachineText7
|
||||
db "@"
|
||||
|
||||
Func_74fe7: ; 74fe7 (1d:4fe7)
|
||||
LoadVendingMachineItem: ; 74fe7 (1d:4fe7)
|
||||
ld hl, VendingPrices
|
||||
ld a, [wCurrentMenuItem]
|
||||
add a
|
||||
add a
|
||||
ld d, $0
|
||||
ld d, 0
|
||||
ld e, a
|
||||
add hl, de
|
||||
ld a, [hli]
|
||||
ld [$ffdb], a
|
||||
ld [hVendingMachineItem], a
|
||||
ld a, [hli]
|
||||
ld [$ffdc], a
|
||||
ld [hVendingMachinePrice], a
|
||||
ld a, [hli]
|
||||
ld [$ffdd], a
|
||||
ld [hVendingMachinePrice + 1], a
|
||||
ld a, [hl]
|
||||
ld [$ffde], a
|
||||
ld [hVendingMachinePrice + 2], a
|
||||
ret
|
||||
|
||||
VendingPrices: ; 75000 (1d:5000)
|
||||
|
|
|
@ -67,50 +67,60 @@ ENDC
|
|||
|
||||
ld a, BANK(Version_GFX)
|
||||
call FarCopyDataDouble
|
||||
call Func_4519
|
||||
call ClearBothBGMaps
|
||||
|
||||
; place tiles for pokemon logo (except for the last row)
|
||||
hlCoord 2, 1
|
||||
ld a, $80
|
||||
ld de, SCREEN_WIDTH
|
||||
ld c, $6
|
||||
.asm_434d
|
||||
ld c, 6
|
||||
.pokemonLogoTileLoop
|
||||
ld b, $10
|
||||
push hl
|
||||
.asm_4350
|
||||
.pokemonLogoTileRowLoop ; place tiles for one row
|
||||
ld [hli], a
|
||||
inc a
|
||||
dec b
|
||||
jr nz, .asm_4350
|
||||
jr nz, .pokemonLogoTileRowLoop
|
||||
pop hl
|
||||
add hl, de
|
||||
dec c
|
||||
jr nz, .asm_434d
|
||||
jr nz, .pokemonLogoTileLoop
|
||||
|
||||
; place tiles for the last row of the pokemon logo
|
||||
hlCoord 2, 7
|
||||
ld a, $31
|
||||
ld b, $10
|
||||
.asm_4361
|
||||
.pokemonLogoLastTileRowLoop
|
||||
ld [hli], a
|
||||
inc a
|
||||
dec b
|
||||
jr nz, .asm_4361
|
||||
call Func_44dd
|
||||
jr nz, .pokemonLogoLastTileRowLoop
|
||||
|
||||
call DrawPlayerCharacter
|
||||
|
||||
; put a pokeball in the player's hand
|
||||
ld hl, wOAMBuffer + $28
|
||||
ld a, $74
|
||||
ld [hl], a
|
||||
|
||||
; place tiles for title screen copyright
|
||||
hlCoord 2, 17
|
||||
ld de, .titlescreenTilemap
|
||||
ld de, .tileScreenCopyrightTiles
|
||||
ld b, $10
|
||||
.asm_4377
|
||||
.tileScreenCopyrightTilesLoop
|
||||
ld a, [de]
|
||||
ld [hli], a
|
||||
inc de
|
||||
dec b
|
||||
jr nz, .asm_4377
|
||||
jr .asm_438f
|
||||
jr nz, .tileScreenCopyrightTilesLoop
|
||||
|
||||
.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.
|
||||
|
||||
.asm_438f
|
||||
.next
|
||||
call SaveScreenTilesToBuffer2
|
||||
call LoadScreenTilesFromBuffer2
|
||||
call EnableLCD
|
||||
|
@ -121,37 +131,39 @@ IF DEF(_BLUE)
|
|||
ld a,SQUIRTLE ; which Pokemon to show first on the title screen
|
||||
ENDC
|
||||
|
||||
ld [wWhichTrade], a
|
||||
call Func_4524
|
||||
ld a, $9b
|
||||
call Func_4533
|
||||
ld [wTitleMonSpecies], a
|
||||
call LoadTitleMonSprite
|
||||
ld a, (vBGMap0 + $300) / $100
|
||||
call TitleScreenCopyTileMapToVRAM
|
||||
call SaveScreenTilesToBuffer1
|
||||
ld a, $40
|
||||
ld [hWY], a
|
||||
call LoadScreenTilesFromBuffer2
|
||||
ld a, $98
|
||||
call Func_4533
|
||||
ld a, vBGMap0 / $100
|
||||
call TitleScreenCopyTileMapToVRAM
|
||||
ld b, $6
|
||||
call GoPAL_SET
|
||||
call GBPalNormal
|
||||
ld a, $e4
|
||||
ld a, %11100100
|
||||
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
|
||||
.asm_43c6
|
||||
.bouncePokemonLogoLoop
|
||||
ld a, [hli]
|
||||
and a
|
||||
jr z, .asm_43f4
|
||||
jr z, .finishedBouncingPokemonLogo
|
||||
ld d, a
|
||||
cp $fd
|
||||
jr nz, .asm_43d4
|
||||
cp -3
|
||||
jr nz, .skipPlayingSound
|
||||
ld a, (SFX_1f_62 - SFX_Headers_1f) / 3
|
||||
call PlaySound
|
||||
.asm_43d4
|
||||
.skipPlayingSound
|
||||
ld a, [hli]
|
||||
ld e, a
|
||||
call .ScrollTitleScreenPokemonLogo
|
||||
jr .asm_43c6
|
||||
jr .bouncePokemonLogoLoop
|
||||
|
||||
.TitleScreenPokemonLogoYScrolls: ; 43db (1:43db)
|
||||
; 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 d pixels e times
|
||||
call DelayFrame
|
||||
ld a, [bc]
|
||||
ld a, [bc] ; background scroll Y
|
||||
add d
|
||||
ld [bc], a
|
||||
dec e
|
||||
jr nz, .ScrollTitleScreenPokemonLogo
|
||||
ret
|
||||
.asm_43f4
|
||||
|
||||
.finishedBouncingPokemonLogo
|
||||
call LoadScreenTilesFromBuffer1
|
||||
ld c, 36
|
||||
call DelayFrames
|
||||
ld a, (SFX_1f_63 - SFX_Headers_1f) / 3
|
||||
call PlaySound
|
||||
|
||||
; scroll game version in from the right
|
||||
call PrintGameVersionOnTitleScreen
|
||||
ld a, $90
|
||||
ld a, SCREEN_HEIGHT_PIXELS
|
||||
ld [hWY], a
|
||||
ld d, $90
|
||||
.asm_440a
|
||||
ld d, 144
|
||||
.scrollTitleScreenGameVersionLoop
|
||||
ld h, d
|
||||
ld l, $40
|
||||
call Func_44cf
|
||||
ld h, $0
|
||||
ld l, $50
|
||||
call Func_44cf
|
||||
ld l, 64
|
||||
call ScrollTitleScreenGameVersion
|
||||
ld h, 0
|
||||
ld l, 80
|
||||
call ScrollTitleScreenGameVersion
|
||||
ld a, d
|
||||
add $4
|
||||
add 4
|
||||
ld d, a
|
||||
and a
|
||||
jr nz, .asm_440a
|
||||
ld a, $9c
|
||||
call Func_4533
|
||||
jr nz, .scrollTitleScreenGameVersionLoop
|
||||
|
||||
ld a, vBGMap1 / $100
|
||||
call TitleScreenCopyTileMapToVRAM
|
||||
call LoadScreenTilesFromBuffer2
|
||||
call PrintGameVersionOnTitleScreen
|
||||
call Delay3
|
||||
|
@ -207,19 +223,22 @@ ENDC
|
|||
call PlaySound
|
||||
xor 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
|
||||
jr c, .asm_4459
|
||||
call Func_44c1
|
||||
ld c, $1
|
||||
jr c, .finishedWaiting
|
||||
call TitleScreenScrollInMon
|
||||
ld c, 1
|
||||
call CheckForUserInterruption
|
||||
jr c, .asm_4459
|
||||
callba Func_372ac
|
||||
call Func_4496
|
||||
jr .asm_443b
|
||||
.asm_4459
|
||||
ld a, [wWhichTrade]
|
||||
jr c, .finishedWaiting
|
||||
callba TitleScreenAnimateBallIfStarterOut
|
||||
call TitleScreenPickNewMon
|
||||
jr .awaitUserInterruptionLoop
|
||||
|
||||
.finishedWaiting
|
||||
ld a, [wTitleMonSpecies]
|
||||
call PlayCry
|
||||
call WaitForSoundToFinish
|
||||
call GBPalWhiteOutWithDelay3
|
||||
|
@ -229,10 +248,10 @@ ENDC
|
|||
inc a
|
||||
ld [H_AUTOBGTRANSFERENABLED], a
|
||||
call ClearScreen
|
||||
ld a, $98
|
||||
call Func_4533
|
||||
ld a, $9c
|
||||
call Func_4533
|
||||
ld a, vBGMap0 / $100
|
||||
call TitleScreenCopyTileMapToVRAM
|
||||
ld a, vBGMap1 / $100
|
||||
call TitleScreenCopyTileMapToVRAM
|
||||
call Delay3
|
||||
call LoadGBPal
|
||||
ld a, [hJoyHeld]
|
||||
|
@ -247,12 +266,12 @@ ENDC
|
|||
ld hl, DoClearSaveDialogue
|
||||
jp Bankswitch
|
||||
|
||||
Func_4496: ; 4496 (1:4496)
|
||||
ld a, $98
|
||||
call Func_4533
|
||||
TitleScreenPickNewMon: ; 4496 (1:4496)
|
||||
ld a, vBGMap0 / $100
|
||||
call TitleScreenCopyTileMapToVRAM
|
||||
|
||||
.new
|
||||
; Generate a new TitleMon.
|
||||
.loop
|
||||
; Keep looping until a mon different from the current one is picked.
|
||||
call Random
|
||||
and $f
|
||||
ld c, a
|
||||
|
@ -260,14 +279,14 @@ Func_4496: ; 4496 (1:4496)
|
|||
ld hl, TitleMons
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
ld hl, wWhichTrade
|
||||
ld hl, wTitleMonSpecies
|
||||
|
||||
; Can't be the same as before.
|
||||
cp [hl]
|
||||
jr z, .new
|
||||
jr z, .loop
|
||||
|
||||
ld [hl], a
|
||||
call Func_4524
|
||||
call LoadTitleMonSprite
|
||||
|
||||
ld a, $90
|
||||
ld [hWY], a
|
||||
|
@ -275,14 +294,14 @@ Func_4496: ; 4496 (1:4496)
|
|||
callba TitleScroll
|
||||
ret
|
||||
|
||||
Func_44c1: ; 44c1 (1:44c1)
|
||||
TitleScreenScrollInMon: ; 44c1 (1:44c1)
|
||||
ld d, 0 ; scroll in
|
||||
callba TitleScroll
|
||||
xor a
|
||||
ld [hWY], a
|
||||
ret
|
||||
|
||||
Func_44cf: ; 44cf (1:44cf)
|
||||
ScrollTitleScreenGameVersion: ; 44cf (1:44cf)
|
||||
.wait
|
||||
ld a, [rLY]
|
||||
cp l
|
||||
|
@ -297,7 +316,7 @@ Func_44cf: ; 44cf (1:44cf)
|
|||
jr z, .wait2
|
||||
ret
|
||||
|
||||
Func_44dd: ; 44dd (1:44dd)
|
||||
DrawPlayerCharacter: ; 44dd (1:44dd)
|
||||
ld hl, PlayerCharacterTitleGraphics
|
||||
ld de, vSprites
|
||||
ld bc, $230
|
||||
|
@ -305,49 +324,49 @@ Func_44dd: ; 44dd (1:44dd)
|
|||
call FarCopyData2
|
||||
call ClearSprites
|
||||
xor a
|
||||
ld [wWhichTrade], a
|
||||
ld [wPlayerCharacterOAMTile], a
|
||||
ld hl, wOAMBuffer
|
||||
ld de, $605a
|
||||
ld b, $7
|
||||
.asm_44fa
|
||||
ld b, 7
|
||||
.loop
|
||||
push de
|
||||
ld c, $5
|
||||
.asm_44fd
|
||||
ld c, 5
|
||||
.innerLoop
|
||||
ld a, d
|
||||
ld [hli], a
|
||||
ld [hli], a ; Y
|
||||
ld a, e
|
||||
ld [hli], a
|
||||
add $8
|
||||
ld [hli], a ; X
|
||||
add 8
|
||||
ld e, a
|
||||
ld a, [wWhichTrade]
|
||||
ld [hli], a
|
||||
ld a, [wPlayerCharacterOAMTile]
|
||||
ld [hli], a ; tile
|
||||
inc a
|
||||
ld [wWhichTrade], a
|
||||
ld [wPlayerCharacterOAMTile], a
|
||||
inc hl
|
||||
dec c
|
||||
jr nz, .asm_44fd
|
||||
jr nz, .innerLoop
|
||||
pop de
|
||||
ld a, $8
|
||||
ld a, 8
|
||||
add d
|
||||
ld d, a
|
||||
dec b
|
||||
jr nz, .asm_44fa
|
||||
jr nz, .loop
|
||||
ret
|
||||
|
||||
Func_4519: ; 4519 (1:4519)
|
||||
ClearBothBGMaps: ; 4519 (1:4519)
|
||||
ld hl, vBGMap0
|
||||
ld bc, $800
|
||||
ld a, $7f
|
||||
ld bc, $400 * 2
|
||||
ld a, " "
|
||||
jp FillMemory
|
||||
|
||||
Func_4524: ; 4524 (1:4524)
|
||||
LoadTitleMonSprite: ; 4524 (1:4524)
|
||||
ld [wcf91], a
|
||||
ld [wd0b5], a
|
||||
hlCoord 5, 10
|
||||
call GetMonHeader
|
||||
jp LoadFrontSpriteByMonIndex
|
||||
|
||||
Func_4533: ; 4533 (1:4533)
|
||||
TitleScreenCopyTileMapToVRAM: ; 4533 (1:4533)
|
||||
ld [H_AUTOBGTRANSFERDEST + 1], a
|
||||
jp Delay3
|
||||
|
||||
|
|
|
@ -87,9 +87,9 @@ TitleBallYTable: ; 372a0 (d:72a0)
|
|||
; 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
|
||||
|
||||
Func_372ac: ; 372ac (d:72ac)
|
||||
TitleScreenAnimateBallIfStarterOut: ; 372ac (d:72ac)
|
||||
; Animate the TitleBall if a starter just got scrolled out.
|
||||
ld a, [wWhichTrade]
|
||||
ld a, [wTitleMonSpecies]
|
||||
cp STARTER1
|
||||
jr z, .ok
|
||||
cp STARTER2
|
||||
|
|
3
hram.asm
3
hram.asm
|
@ -201,6 +201,9 @@ hTilesetType EQU $FFD7
|
|||
|
||||
H_CURRENTSPRITEOFFSET EQU $FFDA ; multiple of $10
|
||||
|
||||
hVendingMachineItem EQU $FFDB
|
||||
hVendingMachinePrice EQU $FFDC ; 3-byte BCD number
|
||||
|
||||
hNewPartyLength EQU $FFE4
|
||||
|
||||
hDividend2 EQU $FFE5
|
||||
|
|
Loading…
Reference in a new issue