Mt Moon Pokemon Center

This commit is contained in:
pikalaxalt
2016-05-30 11:38:46 -04:00
parent b9df6fe86f
commit 6e3581df4b
10 changed files with 159 additions and 107 deletions

View File

@@ -7,13 +7,14 @@ MtMoonPokecenterObject: ; 0x49376 (size=56)
db $0 ; signs
db $6 ; objects
db $7 ; objects
object SPRITE_NURSE, $3, $1, STAY, DOWN, $1 ; person
object SPRITE_BUG_CATCHER, $4, $3, STAY, UP, $2 ; person
object SPRITE_GENTLEMAN, $7, $3, STAY, UP, $3 ; person
object SPRITE_FAT_BALD_GUY, $a, $6, WALK, $2, $4 ; person
object SPRITE_CLIPBOARD, $7, $2, STAY, NONE, $5 ; person
object SPRITE_CABLE_CLUB_WOMAN, $b, $2, STAY, DOWN, $6 ; person
object SPRITE_CHANSEY, $4, $1, STAY, DOWN, $7 ; person
; warp-to
EVENT_DISP MT_MOON_POKECENTER_WIDTH, $7, $3

View File

@@ -68,7 +68,7 @@ MapHeaderBanks:: ; fc3e4 (3f:43e4)
db BANK(CeruleanGym_h)
db BANK(BikeShop_h)
db BANK(CeruleanMart_h)
db $12 ; db BANK(MtMoonPokecenter_h)
db BANK(MtMoonPokecenter_h)
db BANK(CeruleanHouseTrashed_h)
db $07 ; db BANK(Route5Gate_h)
db $17 ; db BANK(UndergroundPathEntranceRoute5_h)

View File

@@ -68,7 +68,7 @@ MapHeaderPointers:: ; fc1f2 (3f:41f2)
dw CeruleanGym_h
dw BikeShop_h
dw CeruleanMart_h
dw $52a9 ; dw MtMoonPokecenter_h
dw MtMoonPokecenter_h
dw CeruleanHouseTrashed_h ; copy
dw $5831 ; dw Route5Gate_h
dw $55a8 ; dw UndergroundPathEntranceRoute5_h

View File

@@ -485,7 +485,9 @@ CeladonMansion1Text_f1eee:
TX_FAR _CeladonMansion1Text12
db "@"
dr $f1ef3, $f220e
dr $f1ef3, $f218c
INCLUDE "scripts/mtmoonpokecenter2.asm"
INCLUDE "data/mapHeaders/beach_house.asm"
INCLUDE "scripts/beach_house.asm"

View File

@@ -382,9 +382,9 @@ TextCommandProcessor:: ; 1919 (0:1919)
xor e
ld [wLetterPrintingDelayFlags], a
ld a, c
ld [wUnusedCC3A], a
ld [wTextDestinationTileAddrBuffer], a
ld a, b
ld [wUnusedCC3B], a
ld [wTextDestinationTileAddrBuffer + 1], a
NextTextCommand:: ; 192e (0:192e)
ld a, [hli]
@@ -493,10 +493,10 @@ TextCommand02:: ; 197e (0:197e)
TextCommand03:: ; 1990 (0:1990)
pop hl
ld a, [hli]
ld [wUnusedCC3A], a
ld [wTextDestinationTileAddrBuffer], a
ld c, a
ld a, [hli]
ld [wUnusedCC3B], a
ld [wTextDestinationTileAddrBuffer + 1], a
ld b, a
jp NextTextCommand

View File

@@ -153,44 +153,61 @@ bcd3: MACRO
coins equs "bcd2"
money equs "bcd3"
validateCoords: MACRO
if \1 >= SCREEN_WIDTH
fail "x coord out of range"
endc
if \2 >= SCREEN_HEIGHT
fail "y coord out of range"
endc
endm
;\1 = r
;\2 = X
;\3 = Y
;\4 = which tilemap (optional)
coord: MACRO
validateCoords \2, \3
if _NARG >= 4
ld \1, \4 + 20 * \3 + \2
ld \1, \4 + SCREEN_WIDTH * \3 + \2
else
ld \1, wTileMap + 20 * \3 + \2
ld \1, wTileMap + SCREEN_WIDTH * \3 + \2
endc
ENDM
;\1 = X
;\2 = Y
;\3 = which tilemap (optional)
aCoord: MACRO
validateCoords \1, \2
if _NARG >= 3
ld a, [\3 + 20 * \2 + \1]
ld a, [\3 + SCREEN_WIDTH * \2 + \1]
else
ld a, [wTileMap + 20 * \2 + \1]
ld a, [wTileMap + SCREEN_WIDTH * \2 + \1]
endc
ENDM
;\1 = X
;\2 = Y
;\3 = which tilemap (optional)
Coorda: MACRO
validateCoords \1, \2
if _NARG >= 3
ld [\3 + 20 * \2 + \1], a
ld [\3 + SCREEN_WIDTH * \2 + \1], a
else
ld [wTileMap + 20 * \2 + \1], a
ld [wTileMap + SCREEN_WIDTH * \2 + \1], a
endc
ENDM
;\1 = X
;\2 = Y
;\3 = which tilemap (optional)
dwCoord: MACRO
validateCoords \1, \2
if _NARG >= 3
dw \3 + 20 * \2 + \1
dw \3 + SCREEN_WIDTH * \2 + \1
else
dw wTileMap + 20 * \2 + \1
dw wTileMap + SCREEN_WIDTH * \2 + \1
endc
ENDM
@@ -266,6 +283,15 @@ dba: MACRO
dbw BANK(\1), \1
ENDM
dwb: MACRO
dw \1
db \2
ENDM
dab: MACRO
dwb \1, BANK(\1)
ENDM
dbbw: MACRO
db \1, \2
dw \3
@@ -277,22 +303,6 @@ RGB: MACRO
ENDM
; text macros
TX_NUM: MACRO
; print a big-endian decimal number.
; \1: address to read from
; \2: number of bytes to read
; \3: number of digits to display
db $09
dw \1
db \2 << 4 | \3
ENDM
TX_FAR: MACRO
db $17
dw \1
db BANK(\1)
ENDM
; text engine command $1
TX_RAM: MACRO
; prints text to screen
@@ -307,12 +317,26 @@ TX_BCD: MACRO
db \2
ENDM
TX_ASM: MACRO
db $08
TX_CURSOR: MACRO
; Move cursor to (\1, \2)
; \1: X coord (0 - 19)
; \2: Y coord (0 - 17)
db $3
dwCoord \1, \2
ENDM
TX_BUTTON_SOUND: MACRO
db $06
TX_LINE EQUS "db $05"
TX_BUTTON_SOUND EQUS "db $06"
TX_ASM EQUS "db $08"
TX_NUM: MACRO
; print a big-endian decimal number.
; \1: address to read from
; \2: number of bytes to read
; \3: number of digits to display
db $09
dw \1
db \2 << 4 | \3
ENDM
TX_SFX_ITEM EQUS "db $0b"
@@ -320,6 +344,16 @@ TX_WAIT_BUTTON EQUS "db $0d"
TX_SFX_CONGRATS EQUS "db $10"
TX_SFX_KEY_ITEM EQUS "db $11"
TX_FAR: MACRO
; 17AAAABB (call text at BB:AAAA)
db $17
dab \1
ENDM
TX_POKECENTER_PC EQUS "db $f6"
TX_POKECENTER_NURSE EQUS "db $ff"
; Predef macro.
add_predef: MACRO
\1Predef::

View File

@@ -765,7 +765,6 @@ LavenderPokecenterBlocks:
CeladonPokecenterBlocks:
FuchsiaPokecenterBlocks:
CinnabarPokecenterBlocks:
MtMoonPokecenterBlocks:
RockTunnelPokecenterBlocks:
INCBIN "maps/viridianpokecenter.blk"
dr $440fb,$4410b
@@ -790,7 +789,9 @@ INCLUDE "data/mapHeaders/route7.asm"
INCLUDE "data/mapObjects/route7.asm"
Route7Blocks: ; 48051
INCBIN "maps/route7.blk"
dr $480ab,$480eb
MtMoonPokecenterBlocks:
INCBIN "maps/mtmoonpokecenter.blk"
dr $480c7,$480eb
INCLUDE "scripts/route7.asm"
INCLUDE "data/mapHeaders/redshouse1f.asm"
@@ -798,7 +799,13 @@ INCLUDE "scripts/redshouse1f.asm"
INCLUDE "data/mapObjects/redshouse1f.asm"
RedsHouse1FBlocks:
INCBIN "maps/redshouse1f.blk"
dr $48157,$49953
dr $48157,$492a9
INCLUDE "data/mapHeaders/mtmoonpokecenter.asm"
INCLUDE "scripts/mtmoonpokecenter.asm"
INCLUDE "data/mapObjects/mtmoonpokecenter.asm"
dr $49330,$49953
INCLUDE "data/mapHeaders/mtmoon1.asm"
INCLUDE "scripts/mtmoon1.asm"

View File

@@ -9,9 +9,10 @@ MtMoonPokecenterTextPointers: ; 492d5 (12:52d5)
dw MtMoonPokecenterText4
dw MtMoonPokecenterText5
dw MtMoonPokecenterText6
dw MtMoonPokecenterText7
MtMoonPokecenterText1: ; 492e1 (12:52e1)
db $ff
TX_POKECENTER_NURSE
MtMoonPokecenterText2: ; 492e2 (12:52e2)
TX_FAR _MtMoonPokecenterText1
@@ -23,72 +24,17 @@ MtMoonPokecenterText3: ; 492e7 (12:52e7)
MtMoonPokecenterText4: ; 492ec (12:52ec)
TX_ASM
CheckEvent EVENT_BOUGHT_MAGIKARP, 1
jp c, .alreadyBoughtMagikarp
ld hl, MtMoonPokecenterText_4935c
call PrintText
ld a, MONEY_BOX
ld [wTextBoxID], a
call DisplayTextBoxID
call YesNoChoice
ld a, [wCurrentMenuItem]
and a
jp nz, .choseNo
ld [hMoney], a
ld [hMoney + 2], a
ld a, $5
ld [hMoney + 1], a
call HasEnoughMoney
jr nc, .enoughMoney
ld hl, MtMoonPokecenterText_49366
jr .printText
.enoughMoney
lb bc, MAGIKARP, 5
call GivePokemon
jr nc, .done
xor a
ld [wPriceTemp], a
ld [wPriceTemp + 2], a
ld a, $5
ld [wPriceTemp + 1], a
ld hl, wPriceTemp + 2
ld de, wPlayerMoney + 2
ld c, $3
predef SubBCDPredef
ld a, MONEY_BOX
ld [wTextBoxID], a
call DisplayTextBoxID
SetEvent EVENT_BOUGHT_MAGIKARP
jr .done
.choseNo
ld hl, MtMoonPokecenterText_49361
jr .printText
.alreadyBoughtMagikarp
ld hl, MtMoonPokecenterText_4936b
.printText
call PrintText
.done
callab Func_f218c
jp TextScriptEnd
MtMoonPokecenterText_4935c: ; 4935c (12:535c)
TX_FAR _MtMoonPokecenterText_4935c
db "@"
MtMoonPokecenterText_49361: ; 49361 (12:5361)
TX_FAR _MtMoonPokecenterText_49361
db "@"
MtMoonPokecenterText_49366: ; 49366 (12:5366)
TX_FAR _MtMoonPokecenterText_49366
db "@"
MtMoonPokecenterText_4936b: ; 4936b (12:536b)
TX_FAR _MtMoonPokecenterText_4936b
db "@"
MtMoonPokecenterText5: ; 49370 (12:5370)
TX_FAR _MtMoonPokecenterText5
db "@"
MtMoonPokecenterText6: ; 49375 (12:5375)
db $f6
TX_POKECENTER_PC
MtMoonPokecenterText7:
TX_ASM
callab Func_f0f12
jp TextScriptEnd

66
scripts/mtmoonpokecenter2.asm Executable file
View File

@@ -0,0 +1,66 @@
Func_f218c:
CheckEvent EVENT_BOUGHT_MAGIKARP, 1
jp c, .alreadyBoughtMagikarp
ld hl, MtMoonPokecenterText_4935c
call PrintText
ld a, MONEY_BOX
ld [wTextBoxID], a
call DisplayTextBoxID
call YesNoChoice
ld a, [wCurrentMenuItem]
and a
jp nz, .choseNo
; $000500
xor a
ld [hMoney], a
ld [hMoney + 2], a
ld a, $5
ld [hMoney + 1], a
call HasEnoughMoney
jr nc, .enoughMoney
ld hl, MtMoonPokecenterText_49366
jr .printText
.enoughMoney
lb bc, MAGIKARP, 5
call GivePokemon
jr nc, .done
; $000500
xor a
ld [wPriceTemp], a
ld [wPriceTemp + 2], a
ld a, $5
ld [wPriceTemp + 1], a
ld hl, wPriceTemp + 2
ld de, wPlayerMoney + 2
ld c, $3
predef SubBCDPredef
ld a, MONEY_BOX
ld [wTextBoxID], a
call DisplayTextBoxID
SetEvent EVENT_BOUGHT_MAGIKARP
jr .done
.choseNo
ld hl, MtMoonPokecenterText_49361
jr .printText
.alreadyBoughtMagikarp
ld hl, MtMoonPokecenterText_4936b
.printText
call PrintText
.done
ret
MtMoonPokecenterText_4935c: ; 4935c (12:535c)
TX_FAR _MtMoonPokecenterText_4935c
db "@"
MtMoonPokecenterText_49361: ; 49361 (12:5361)
TX_FAR _MtMoonPokecenterText_49361
db "@"
MtMoonPokecenterText_49366: ; 49366 (12:5366)
TX_FAR _MtMoonPokecenterText_49366
db "@"
MtMoonPokecenterText_4936b: ; 4936b (12:536b)
TX_FAR _MtMoonPokecenterText_4936b
db "@"

View File

@@ -386,11 +386,7 @@ wTradeCenterPointerTableIndex:: ; cc38
ds 1
wUnusedCC3A:: ; cc3a
ds 1
wUnusedCC3B:: ; cc3b
ds 1
wTextDestinationTileAddrBuffer:: dw ; cc3a
wDoNotWaitForButtonPressAfterDisplayingText:: ; cc3c
; if non-zero, skip waiting for a button press after displaying text in DisplayTextID