This commit is contained in:
dannye 2024-05-05 11:06:40 -05:00
commit b135272f95
24 changed files with 80 additions and 74 deletions

View File

@ -16,7 +16,7 @@ jobs:
uses: actions/checkout@master
with:
path: rgbds
ref: v0.6.1
ref: v0.7.0
repository: gbdev/rgbds
- name: Install rgbds

View File

@ -42,9 +42,9 @@ Run setup and leave the default settings. At the "**Select Packages**" step, cho
Double click on the text that says "**Skip**" next to each package to select the most recent version to install.
Then follow the [**rgbds** install instructions](https://rgbds.gbdev.io/install#pre-built) for Windows with Cygwin to install **rgbds 0.6.1**.
Then follow the [**rgbds** install instructions](https://rgbds.gbdev.io/install#pre-built) for Windows with Cygwin to install **rgbds 0.7.0**.
**Note:** If you already have an installed rgbds older than 0.6.0, you will need to update to 0.6.0 or 0.6.1. Ignore this if you have never installed rgbds before. If a version newer than 0.6.1 does not work, try downloading 0.6.1.
**Note:** If you already have an installed rgbds older than 0.7.0, you will need to update to 0.7.0. Ignore this if you have never installed rgbds before. If a version newer than 0.7.0 does not work, try downloading 0.7.0.
Now open the **Cygwin terminal** and enter the following commands.
@ -67,7 +67,7 @@ Install [**Homebrew**](https://brew.sh/). Follow the official instructions.
Open **Terminal** and prepare to enter commands.
Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#pre-built) for macOS to install **rgbds 0.6.1**.
Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#pre-built) for macOS to install **rgbds 0.7.0**.
Now you're ready to [build **pokeyellow**](#build-pokeyellow).
@ -84,7 +84,7 @@ To install the software required for **pokeyellow**:
sudo apt-get install make gcc git
```
Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 0.6.1** from source.
Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 0.7.0** from source.
### OpenSUSE
@ -94,7 +94,7 @@ To install the software required for **pokeyellow**:
sudo zypper install make gcc git
```
Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 0.6.1** from source.
Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 0.7.0** from source.
### Arch Linux
@ -104,7 +104,7 @@ To install the software required for **pokeyellow**:
sudo pacman -S make gcc git rgbds
```
If you want to compile and install **rgbds** yourself instead, then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 0.6.1** from source.
If you want to compile and install **rgbds** yourself instead, then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 0.7.0** from source.
### Termux
@ -120,7 +120,7 @@ To install **rgbds**:
sudo apt install rgbds
```
If you want to compile and install **rgbds** yourself instead, then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 0.6.1** from source.
If you want to compile and install **rgbds** yourself instead, then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 0.7.0** from source.
### Other distros
@ -131,7 +131,7 @@ If your distro is not listed here, try to find the required software in its repo
- `git`
- `rgbds`
If `rgbds` is not available, you'll need to follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 0.6.1** from source.
If `rgbds` is not available, you'll need to follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 0.7.0** from source.
Now you're ready to [build **pokeyellow**](#build-pokeyellow).
@ -153,8 +153,8 @@ make
### Build with a local rgbds version
If you have different projects that require different versions of `rgbds`, it might not be convenient to install rgbds 0.6.1 globally. Instead, you can put its files in a directory within pokeyellow, such as `pokeyellow/rgbds-0.6.1/`. Then specify it when you run `make`:
If you have different projects that require different versions of `rgbds`, it might not be convenient to install rgbds 0.7.0 globally. Instead, you can put its files in a directory within pokeyellow, such as `pokeyellow/rgbds-0.7.0/`. Then specify it when you run `make`:
```bash
make RGBDS=rgbds-0.6.1/
make RGBDS=rgbds-0.7.0/
```

View File

@ -81,7 +81,7 @@ tools:
$(MAKE) -C tools/
RGBASMFLAGS = -hL -Q8 -P includes.asm -Weverything -Wnumeric-string=2 -Wtruncation=1
RGBASMFLAGS = -Q8 -P includes.asm -Weverything -Wnumeric-string=2 -Wtruncation=1
# Create a sym/map for debug purposes if `make` run with `DEBUG=1`
ifeq ($(DEBUG),1)
RGBASMFLAGS += -E

View File

@ -2,19 +2,6 @@
DEF GBC EQU $11
; memory map
DEF VRAM_Begin EQU $8000
DEF VRAM_End EQU $a000
DEF SRAM_Begin EQU $a000
DEF SRAM_End EQU $c000
DEF WRAM0_Begin EQU $c000
DEF WRAM0_End EQU $d000
DEF WRAM1_Begin EQU $d000
DEF WRAM1_End EQU $e000
; hardware registers $ff00-$ff80 (see below)
DEF HRAM_Begin EQU $ff80
DEF HRAM_End EQU $ffff
; MBC1
DEF MBC1SRamEnable EQU $0000
DEF MBC1RomBank EQU $2000

View File

@ -52,13 +52,13 @@ DEF SAFARI_ROCK EQU CASCADEBADGE ; overload
const DOME_FOSSIL ; $29
const HELIX_FOSSIL ; $2A
const SECRET_KEY ; $2B
const ITEM_2C ; $2C
const ITEM_2C ; $2C ; unused
const BIKE_VOUCHER ; $2D
const X_ACCURACY ; $2E
const LEAF_STONE ; $2F
const CARD_KEY ; $30
const NUGGET ; $31
const ITEM_32 ; $32
const ITEM_32 ; $32 ; unused
const POKE_DOLL ; $33
const FULL_HEAL ; $34
const REVIVE ; $35
@ -216,6 +216,9 @@ DEF NUM_TM_HM EQU NUM_TMS + NUM_HMS
DEF __tmhm_value__ = NUM_TM_HM + 1
DEF UNUSED_TMNUM EQU __tmhm_value__
DEF MAX_HIDDEN_ITEMS EQU 112
DEF MAX_HIDDEN_COINS EQU 16
; used for Time Capsule held item compatibility
DEF TWISTEDSPOON_GSC EQU $60
DEF LIGHT_BALL_GSC EQU $a3

View File

@ -3,6 +3,7 @@ MACRO hidden_coin
ENDM
HiddenCoinCoords:
table_width 3, HiddenCoinCoords
; map id, x, y
hidden_coin GAME_CORNER, 0, 8
hidden_coin GAME_CORNER, 1, 16
@ -16,4 +17,5 @@ HiddenCoinCoords:
hidden_coin GAME_CORNER, 11, 7
hidden_coin GAME_CORNER, 15, 8
hidden_coin GAME_CORNER, 12, 15
assert_max_table_length MAX_HIDDEN_COINS
db -1 ; end

View File

@ -3,6 +3,7 @@ MACRO hidden_item
ENDM
HiddenItemCoords:
table_width 3, HiddenItemCoords
; map id, x, y
hidden_item SILPH_CO_5F, 12, 3
hidden_item SILPH_CO_9F, 2, 15
@ -59,4 +60,5 @@ HiddenItemCoords:
hidden_item CELADON_CITY, 48, 15
hidden_item SAFARI_ZONE_GATE, 10, 1 ; inaccessible
hidden_item POKEMON_MANSION_1F, 8, 16
assert_max_table_length MAX_HIDDEN_ITEMS
db -1 ; end

View File

@ -28,7 +28,7 @@ AttackAnimationPointers:
dw JumpKickAnim
dw RollingKickAnim
dw SandAttackAnim
dw HeadButtAnim
dw HeadbuttAnim
dw HornAttackAnim
dw FuryAttackAnim
dw HornDrillAnim
@ -358,7 +358,7 @@ SandAttackAnim:
battle_anim SAND_ATTACK, SUBANIM_1_SAND, 1, 6
db -1 ; end
HeadButtAnim:
HeadbuttAnim:
battle_anim HEADBUTT, SUBANIM_1_STAR_BIG, 1, 6
db -1 ; end

View File

@ -1,4 +1,4 @@
; this function temporarily makes the starters (and Ivysaur) seen
; this function temporarily makes the starters (and Ivysaur) owned
; so that the full Pokedex information gets displayed in Oak's lab
StarterDex:
ld a, 1 << (DEX_BULBASAUR - 1) | 1 << (DEX_IVYSAUR - 1) | 1 << (DEX_CHARMANDER - 1) | 1 << (DEX_SQUIRTLE - 1)

View File

@ -2,7 +2,7 @@ WriteDMACodeToHRAM::
; Since no other memory is available during OAM DMA,
; DMARoutine is copied to HRAM and executed there.
ld c, LOW(hDMARoutine)
ld b, DMARoutineEnd - DMARoutine
ld b, DMARoutine.End - DMARoutine
ld hl, DMARoutine
.copy
ld a, [hli]
@ -25,4 +25,4 @@ hDMARoutine::
jr nz, .wait
ret
ENDL
DMARoutineEnd:
.End:

View File

@ -23,7 +23,7 @@ ItemUsePtrTable:
dw ItemUseBall ; POKE_BALL
dw ItemUseTownMap ; TOWN_MAP
dw ItemUseBicycle ; BICYCLE
dw ItemUseSurfboard ; out-of-battle Surf effect
dw ItemUseSurfboard ; SURFBOARD
dw ItemUseBall ; SAFARI_BALL
dw ItemUsePokedex ; POKEDEX
dw ItemUseEvoStone ; MOON_STONE
@ -60,19 +60,19 @@ ItemUsePtrTable:
dw UnusableItem ; DOME_FOSSIL
dw UnusableItem ; HELIX_FOSSIL
dw UnusableItem ; SECRET_KEY
dw UnusableItem
dw UnusableItem ; ITEM_2C
dw UnusableItem ; BIKE_VOUCHER
dw ItemUseXAccuracy ; X_ACCURACY
dw ItemUseEvoStone ; LEAF_STONE
dw ItemUseCardKey ; CARD_KEY
dw UnusableItem ; NUGGET
dw UnusableItem ; ??? PP_UP
dw ItemUsePokedoll ; POKE_DOLL
dw UnusableItem ; ITEM_32
dw ItemUsePokeDoll ; POKE_DOLL
dw ItemUseMedicine ; FULL_HEAL
dw ItemUseMedicine ; REVIVE
dw ItemUseMedicine ; MAX_REVIVE
dw ItemUseGuardSpec ; GUARD_SPEC
dw ItemUseSuperRepel ; SUPER_REPL
dw ItemUseSuperRepel ; SUPER_REPEL
dw ItemUseMaxRepel ; MAX_REPEL
dw ItemUseDireHit ; DIRE_HIT
dw UnusableItem ; COIN
@ -89,13 +89,13 @@ ItemUsePtrTable:
dw ItemUseOaksParcel ; OAKS_PARCEL
dw ItemUseItemfinder ; ITEMFINDER
dw UnusableItem ; SILPH_SCOPE
dw ItemUsePokeflute ; POKE_FLUTE
dw ItemUsePokeFlute ; POKE_FLUTE
dw UnusableItem ; LIFT_KEY
dw UnusableItem ; EXP_ALL
dw ItemUseOldRod ; OLD_ROD
dw ItemUseGoodRod ; GOOD_ROD
dw ItemUseSuperRod ; SUPER_ROD
dw ItemUsePPUp ; PP_UP (real one)
dw ItemUsePPUp ; PP_UP
dw ItemUsePPRestore ; ETHER
dw ItemUsePPRestore ; MAX_ETHER
dw ItemUsePPRestore ; ELIXER
@ -696,7 +696,7 @@ ItemUseBicycle:
ld [wWalkBikeSurfState], a
ret
; used for Surf out-of-battle effect
; indirectly used by SURF in StartMenu_Pokemon.surf
ItemUseSurfboard:
ld a, [wWalkBikeSurfState]
ld [wWalkBikeSurfStateCopy], a
@ -1565,6 +1565,9 @@ VitaminNoEffectText:
INCLUDE "data/battle/stat_names.asm"
; for BOULDERBADGE when used from the
; ITEM window, which corresponds to
; SAFARI_BAIT during Safari Game encounters
ItemUseBait:
ld hl, ThrewBaitText
call PrintText
@ -1575,6 +1578,9 @@ ItemUseBait:
ld de, wSafariEscapeFactor ; escape factor
jr BaitRockCommon
; for CASCADEBADGE when used from the
; ITEM window, which corresponds to
; SAFARI_ROCK during Safari Game encounters
ItemUseRock:
ld hl, ThrewRockText
call PrintText
@ -1620,7 +1626,7 @@ ThrewRockText:
text_far _ThrewRockText
text_end
; also used for Dig out-of-battle effect
; indirectly used by DIG in StartMenu_Pokemon.dig
ItemUseEscapeRope:
ld a, [wIsInBattle]
and a
@ -1746,7 +1752,7 @@ ItemUseCardKey:
INCLUDE "data/events/card_key_coords.asm"
ItemUsePokedoll:
ItemUsePokeDoll:
ld a, [wIsInBattle]
dec a
jp nz, ItemUseNotTime
@ -1839,7 +1845,7 @@ ItemUseXStat:
ld [hl], a ; restore [wPlayerMoveNum]
ret
ItemUsePokeflute:
ItemUsePokeFlute:
ld a, [wIsInBattle]
and a
jr nz, .inBattle

View File

@ -666,8 +666,8 @@ ClearSAV:
PadSRAM_FF:
ld [MBC1SRamBank], a
ld hl, SRAM_Begin
ld bc, SRAM_End - SRAM_Begin
ld hl, STARTOF(SRAM)
ld bc, SIZEOF(SRAM)
ld a, $ff
jp FillMemory

View File

@ -54,7 +54,7 @@ ChooseRivalName:
call ClearScreen
call Delay3
ld de, Rival1Pic
ld b, $13
ld b, BANK(Rival1Pic)
call IntroDisplayPicCenteredOrUpperRight
.done
ld hl, HisNameIsText

View File

@ -14,7 +14,7 @@ PrepareForSpecialWarp::
.setNewGameMatWarp
; This is called by OakSpeech during StartNewGame and
; loads the first warp event for the specified map index.
ld a, PALLET_TOWN
ld a, PALLET_TOWN
.next
ld b, a
ld a, [wd72d]

View File

@ -79,3 +79,5 @@ Start::
; This makes sure it doesn't get used for anything else.
ds $0150 - @
ENDSECTION

View File

@ -41,8 +41,8 @@ DEF rLCDC_DEFAULT EQU %11100011
ld sp, wStack
ld hl, WRAM0_Begin
ld bc, WRAM1_End - WRAM0_Begin
ld hl, STARTOF(WRAM0)
ld bc, SIZEOF(WRAM0)
.loop
ld [hl], 0
inc hl
@ -53,8 +53,8 @@ DEF rLCDC_DEFAULT EQU %11100011
call ClearVram
ld hl, HRAM_Begin
ld bc, HRAM_End - HRAM_Begin - 1
ld hl, STARTOF(HRAM)
ld bc, SIZEOF(HRAM) - 1
call FillMemory
call ClearSprites
@ -121,8 +121,8 @@ DEF rLCDC_DEFAULT EQU %11100011
jp PrepareTitleScreen
ClearVram::
ld hl, VRAM_Begin
ld bc, VRAM_End - VRAM_Begin
ld hl, STARTOF(VRAM)
ld bc, SIZEOF(VRAM)
xor a
jp FillMemory

View File

@ -258,7 +258,7 @@ SetSpritePosition1::
SetSpritePosition2::
ld hl, _SetSpritePosition2
SpritePositionBankswitch::
ld b, BANK(_GetSpritePosition1) ; BANK(_GetSpritePosition2), BANK(_SetSpritePosition1), BANK(_SetSpritePosition2)
ld b, BANK("Trainer Sight")
jp Bankswitch ; indirect jump to one of the four functions
CheckForEngagingTrainers::

View File

@ -16,6 +16,12 @@ MACRO assert_table_length
"{CURRENT_TABLE_START}: expected {d:x} entries, each {d:CURRENT_TABLE_WIDTH} bytes"
ENDM
MACRO assert_max_table_length
DEF x = \1
ASSERT x * CURRENT_TABLE_WIDTH >= @ - {CURRENT_TABLE_START}, \
"{CURRENT_TABLE_START}: expected a maximum of {d:x} entries, each {d:CURRENT_TABLE_WIDTH} bytes"
ENDM
MACRO list_start
DEF list_index = 0
IF _NARG == 1

View File

@ -23,7 +23,7 @@ MACRO box_struct
\1DefenseExp:: dw
\1SpeedExp:: dw
\1SpecialExp:: dw
\1DVs:: ds 2
\1DVs:: dw
\1PP:: ds NUM_MOVES
ENDM
@ -49,7 +49,7 @@ MACRO battle_struct
\1Type2:: db
\1CatchRate:: db
\1Moves:: ds NUM_MOVES
\1DVs:: ds 2
\1DVs:: dw
\1Level:: db
\1Stats::
\1MaxHP:: dw

View File

@ -173,7 +173,7 @@ hMoney:: ds 3 ; BCD number
NEXTU
; some code zeroes this for no reason when writing a coin amount
hUnusedCoinsByte:: db
hCoins:: ds 2 ; BCD number
hCoins:: dw ; BCD number
ENDU
hDivideBCDDivisor::
@ -407,3 +407,5 @@ hPikachuSpriteVRAMOffset:: db
; 0 if DMG, != 0 if GBC
hGBC:: db
ENDSECTION

View File

@ -51,3 +51,5 @@ sBank3IndividualBoxChecksums:: ds 6
; All 12 boxes fit within 2 SRAM banks
ASSERT box_n == NUM_BOXES, \
"boxes: Expected {d:NUM_BOXES} total boxes, got {d:box_n}"
ENDSECTION

View File

@ -29,3 +29,5 @@ vTitleLogo:: ds $80 tiles
vTitleLogo2:: ds 30 tiles
ENDU
ENDSECTION

View File

@ -1977,7 +1977,7 @@ wUnusedD366:: db
wCurMapHeader::
wCurMapTileset:: db
wCurMapHeight:: db
wCurMapHeight:: db
wCurMapWidth:: db
wCurMapDataPtr:: dw
wCurMapTextPtr:: dw
@ -2162,7 +2162,7 @@ wNumHoFTeams:: db
wUnusedD5A3:: db
wPlayerCoins:: ds 2 ; BCD
wPlayerCoins:: dw ; BCD
; bit array of missable objects. set = removed
wMissableObjectFlags:: flag_array $100
@ -2300,9 +2300,9 @@ wGameProgressFlagsEnd::
ds 56
wObtainedHiddenItemsFlags:: flag_array 112
wObtainedHiddenItemsFlags:: flag_array MAX_HIDDEN_ITEMS
wObtainedHiddenCoinsFlags:: flag_array 16
wObtainedHiddenCoinsFlags:: flag_array MAX_HIDDEN_COINS
; $00 = walking
; $01 = biking
@ -2594,3 +2594,5 @@ SECTION "Stack", WRAM0
; the stack grows downward
ds $eb - 1
wStack:: db
ENDSECTION

View File

@ -1,16 +1,6 @@
MAJOR EQU 0
MINOR EQU 6
PATCH EQU 0
WRONG_RGBDS EQUS "fail \"pokeyellow requires rgbds v0.6.0 or newer.\""
IF !DEF(__RGBDS_MAJOR__) || !DEF(__RGBDS_MINOR__) || !DEF(__RGBDS_PATCH__)
WRONG_RGBDS
ELSE
IF (__RGBDS_MAJOR__ < MAJOR) || \
(__RGBDS_MAJOR__ == MAJOR && __RGBDS_MINOR__ < MINOR) || \
(__RGBDS_MAJOR__ == MAJOR && __RGBDS_MINOR__ == MINOR && __RGBDS_PATCH__ < PATCH) || \
(__RGBDS_MAJOR__ == MAJOR && __RGBDS_MINOR__ == MINOR && __RGBDS_PATCH__ == PATCH && DEF(__RGBDS_RC__))
WRONG_RGBDS
fail "pokeyellow requires rgbds v0.7.0 or newer."
ENDC
IF __RGBDS_MAJOR__ == 0 && __RGBDS_MINOR__ < 7
fail "pokeyellow requires rgbds v0.7.0 or newer."
ENDC