mirror of
https://github.com/pret/pokeyellow.git
synced 2026-04-25 16:19:51 -05:00
Merge branch 'master' of https://github.com/pret/pokered
This commit is contained in:
commit
2c74f137fc
2
.github/workflows/main.yml
vendored
2
.github/workflows/main.yml
vendored
|
|
@ -16,7 +16,7 @@ jobs:
|
|||
uses: actions/checkout@master
|
||||
with:
|
||||
path: rgbds
|
||||
ref: v0.9.0
|
||||
ref: v0.9.2
|
||||
repository: gbdev/rgbds
|
||||
|
||||
- name: Install rgbds
|
||||
|
|
|
|||
24
INSTALL.md
24
INSTALL.md
|
|
@ -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.9.0**.
|
||||
Then follow the [**rgbds** install instructions](https://rgbds.gbdev.io/install#pre-built) for Windows with Cygwin to install **rgbds 0.9.2**.
|
||||
|
||||
**Note:** If you already have an installed rgbds older than 0.9.0, you will need to update to 0.9.0. Ignore this if you have never installed rgbds before. If a version newer than 0.9.0 does not work, try downloading 0.9.0.
|
||||
**Note:** If you already have an installed rgbds older than 0.9.2, you will need to update to 0.9.2. Ignore this if you have never installed rgbds before. If a version newer than 0.9.2 does not work, try downloading 0.9.2.
|
||||
|
||||
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.9.0**.
|
||||
Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#pre-built) for macOS to install **rgbds 0.9.2**.
|
||||
|
||||
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.9.0** from source.
|
||||
Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 0.9.2** 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.9.0** from source.
|
||||
Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install#building-from-source) to build **rgbds 0.9.2** from source.
|
||||
|
||||
### Arch Linux
|
||||
|
||||
|
|
@ -104,23 +104,23 @@ 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.9.0** 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.9.2** from source.
|
||||
|
||||
### Termux
|
||||
|
||||
To install the software required for **pokeyellow**:
|
||||
|
||||
```bash
|
||||
sudo apt install make clang git sed
|
||||
pkg install make clang git sed
|
||||
```
|
||||
|
||||
To install **rgbds**:
|
||||
|
||||
```bash
|
||||
sudo apt install rgbds
|
||||
pkg 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.9.0** 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.9.2** 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.9.0** 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.9.2** 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.9.0 globally. Instead, you can put its files in a directory within pokeyellow, such as `pokeyellow/rgbds-0.9.0/`. 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.9.2 globally. Instead, you can put its files in a directory within pokeyellow, such as `pokeyellow/rgbds-0.9.2/`. Then specify it when you run `make`:
|
||||
|
||||
```bash
|
||||
make RGBDS=rgbds-0.9.0/
|
||||
make RGBDS=rgbds-0.9.2/
|
||||
```
|
||||
|
|
|
|||
2
Makefile
2
Makefile
|
|
@ -23,7 +23,7 @@ pokeyellow_vc_obj := $(rom_obj:.o=_vc.o)
|
|||
|
||||
### Build tools
|
||||
|
||||
ifeq (,$(shell which sha1sum))
|
||||
ifeq (,$(shell command -v sha1sum 2>/dev/null))
|
||||
SHA1 := shasum
|
||||
else
|
||||
SHA1 := sha1sum
|
||||
|
|
|
|||
|
|
@ -98,3 +98,7 @@ DEF NUM_GROWTH_RATES EQU const_value
|
|||
; wild data (see data/wild/maps/*.asm)
|
||||
DEF NUM_WILDMONS EQU 10
|
||||
DEF WILDDATA_LENGTH EQU 1 + NUM_WILDMONS * 2
|
||||
|
||||
; PP in box_struct (see macros/ram.asm)
|
||||
DEF PP_UP_MASK EQU %11000000 ; number of PP Up used
|
||||
DEF PP_MASK EQU %00111111 ; currently remaining PP
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ DEF NUM_NPC_TRADES EQU const_value
|
|||
const TRADE_DIALOGSET_CASUAL
|
||||
const TRADE_DIALOGSET_EVOLUTION
|
||||
const TRADE_DIALOGSET_HAPPY
|
||||
DEF NUM_TRADE_DIALOGSETS EQU const_value
|
||||
|
||||
; OaksAideScript results
|
||||
DEF OAKS_AIDE_BAG_FULL EQU $00
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ DEF NAME_LENGTH EQU 11
|
|||
DEF ITEM_NAME_LENGTH EQU 13
|
||||
DEF NAME_BUFFER_LENGTH EQU 20
|
||||
|
||||
; PrintNumber
|
||||
; PrintNumber, PrintBCDNumber
|
||||
const_def 5
|
||||
const BIT_MONEY_SIGN ; 5
|
||||
const BIT_LEFT_ALIGN ; 6
|
||||
|
|
|
|||
|
|
@ -4,8 +4,11 @@ TradeMons:
|
|||
; give mon, get mon, dialog id, nickname
|
||||
; The two instances of TRADE_DIALOGSET_EVOLUTION are a leftover
|
||||
; from the Japanese Blue trades, which used species that evolve.
|
||||
; Japanese Red and Green used TRADE_DIALOGSET_CASUAL, and had
|
||||
; the same species as English Red and Blue.
|
||||
; TRADE_DIALOGSET_EVOLUTION did not refer to evolution in Japanese
|
||||
; Red/Green. Japanese Blue changed _AfterTrade2Text to say your Pokémon
|
||||
; "went and evolved" and also changed the trades to match. English
|
||||
; Red/Blue uses the original JP Red/Green trades but with the JP Blue
|
||||
; post-trade text.
|
||||
db LICKITUNG, DUGTRIO, TRADE_DIALOGSET_CASUAL, "GURIO@@@@@@"
|
||||
db CLEFAIRY, MR_MIME, TRADE_DIALOGSET_CASUAL, "MILES@@@@@@"
|
||||
db BUTTERFREE, BEEDRILL, TRADE_DIALOGSET_HAPPY, "STINGER@@@@" ; unused
|
||||
|
|
|
|||
|
|
@ -2753,7 +2753,7 @@ ENDC
|
|||
ld b, $0
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
and $3f
|
||||
and PP_MASK
|
||||
jr z, .noPP
|
||||
ld a, [wPlayerDisabledMove]
|
||||
swap a
|
||||
|
|
@ -2885,7 +2885,7 @@ AnyMoveToSelect:
|
|||
or [hl]
|
||||
inc hl
|
||||
or [hl]
|
||||
and $3f
|
||||
and PP_MASK
|
||||
ret nz
|
||||
jr .noMovesLeft
|
||||
.handleDisabledMove
|
||||
|
|
@ -3049,7 +3049,7 @@ PrintMenuItem:
|
|||
ld hl, wBattleMonPP
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
and $3f
|
||||
and PP_MASK
|
||||
ld [wBattleMenuCurrentPP], a
|
||||
; print TYPE/<type> and <curPP>/<maxPP>
|
||||
hlcoord 1, 9
|
||||
|
|
@ -4242,18 +4242,18 @@ CheckForDisobedience:
|
|||
ld hl, wBattleMonPP
|
||||
push hl
|
||||
ld a, [hli]
|
||||
and $3f
|
||||
and PP_MASK
|
||||
ld b, a
|
||||
ld a, [hli]
|
||||
and $3f
|
||||
and PP_MASK
|
||||
add b
|
||||
ld b, a
|
||||
ld a, [hli]
|
||||
and $3f
|
||||
and PP_MASK
|
||||
add b
|
||||
ld b, a
|
||||
ld a, [hl]
|
||||
and $3f
|
||||
and PP_MASK
|
||||
add b
|
||||
pop hl
|
||||
push af
|
||||
|
|
@ -4262,7 +4262,7 @@ CheckForDisobedience:
|
|||
ld b, $0
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
and $3f
|
||||
and PP_MASK
|
||||
ld b, a
|
||||
pop af
|
||||
cp b
|
||||
|
|
|
|||
|
|
@ -1388,7 +1388,7 @@ DisableEffect:
|
|||
or [hl]
|
||||
inc hl
|
||||
or [hl]
|
||||
and $3f
|
||||
and PP_MASK
|
||||
pop hl ; wBattleMonPP or wEnemyMonPP
|
||||
jr z, .moveMissedPopHL ; nothing to do if all moves have no PP left
|
||||
add hl, bc
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ HealParty:
|
|||
push bc
|
||||
ld b, a
|
||||
ld a, [hl]
|
||||
and $c0
|
||||
and PP_UP_MASK
|
||||
add b
|
||||
ld [hl], a
|
||||
pop bc
|
||||
|
|
|
|||
|
|
@ -1,3 +1,12 @@
|
|||
; TradeTextPointers1-3 indexes
|
||||
const_def
|
||||
const TRADETEXT_WANNA_TRADE ; 0
|
||||
const TRADETEXT_NO_TRADE ; 1
|
||||
const TRADETEXT_WRONG_MON ; 2
|
||||
const TRADETEXT_THANKS ; 3
|
||||
const TRADETEXT_AFTER_TRADE ; 4
|
||||
DEF NUM_TRADE_TEXTS EQU const_value
|
||||
|
||||
DoInGameTradeDialogue:
|
||||
; trigger the trade offer/action specified by wWhichTrade
|
||||
call SaveScreenTilesToBuffer2
|
||||
|
|
@ -30,7 +39,7 @@ DoInGameTradeDialogue:
|
|||
ld a, [wInGameTradeReceiveMonSpecies]
|
||||
ld de, wInGameTradeReceiveMonName
|
||||
call InGameTrade_GetMonName
|
||||
ld a, $4
|
||||
ld a, TRADETEXT_AFTER_TRADE
|
||||
ld [wInGameTradeTextPointerTableIndex], a
|
||||
ld b, FLAG_TEST
|
||||
call InGameTrade_FlagActionPredef
|
||||
|
|
@ -38,10 +47,10 @@ DoInGameTradeDialogue:
|
|||
and a
|
||||
jr nz, .printText
|
||||
; if the trade hasn't been done yet
|
||||
ld a, $0
|
||||
ld a, TRADETEXT_WANNA_TRADE
|
||||
ld [wInGameTradeTextPointerTableIndex], a
|
||||
call .printText
|
||||
ld a, $1
|
||||
ld a, TRADETEXT_NO_TRADE
|
||||
ld [wInGameTradeTextPointerTableIndex], a
|
||||
call YesNoChoice
|
||||
ld a, [wCurrentMenuItem]
|
||||
|
|
@ -87,13 +96,13 @@ InGameTrade_DoTrade:
|
|||
push af
|
||||
call InGameTrade_RestoreScreen
|
||||
pop af
|
||||
ld a, $1
|
||||
ld a, TRADETEXT_NO_TRADE
|
||||
jp c, .tradeFailed ; jump if the player didn't select a pokemon
|
||||
ld a, [wInGameTradeGiveMonSpecies]
|
||||
ld b, a
|
||||
ld a, [wCurPartySpecies]
|
||||
cp b
|
||||
ld a, $2
|
||||
ld a, TRADETEXT_WRONG_MON
|
||||
jr nz, .tradeFailed ; jump if the selected mon's species is not the required one
|
||||
ld a, [wWhichPokemon]
|
||||
ld hl, wPartyMon1Level
|
||||
|
|
@ -131,7 +140,7 @@ InGameTrade_DoTrade:
|
|||
call InGameTrade_RestoreScreen
|
||||
farcall RedrawMapView
|
||||
and a
|
||||
ld a, $3
|
||||
ld a, TRADETEXT_THANKS
|
||||
jr .tradeSucceeded
|
||||
.tradeFailed
|
||||
scf
|
||||
|
|
@ -254,30 +263,38 @@ InGameTrade_TrainerString:
|
|||
|
||||
InGameTradeTextPointers:
|
||||
; entries correspond to TRADE_DIALOGSET_* constants
|
||||
table_width 2
|
||||
dw TradeTextPointers1
|
||||
dw TradeTextPointers2
|
||||
dw TradeTextPointers3
|
||||
assert_table_length NUM_TRADE_DIALOGSETS
|
||||
|
||||
TradeTextPointers1:
|
||||
table_width 2
|
||||
dw WannaTrade1Text
|
||||
dw NoTrade1Text
|
||||
dw WrongMon1Text
|
||||
dw Thanks1Text
|
||||
dw AfterTrade1Text
|
||||
assert_table_length NUM_TRADE_TEXTS
|
||||
|
||||
TradeTextPointers2:
|
||||
table_width 2
|
||||
dw WannaTrade2Text
|
||||
dw NoTrade2Text
|
||||
dw WrongMon2Text
|
||||
dw Thanks2Text
|
||||
dw AfterTrade2Text
|
||||
assert_table_length NUM_TRADE_TEXTS
|
||||
|
||||
TradeTextPointers3:
|
||||
table_width 2
|
||||
dw WannaTrade3Text
|
||||
dw NoTrade3Text
|
||||
dw WrongMon3Text
|
||||
dw Thanks3Text
|
||||
dw AfterTrade3Text
|
||||
assert_table_length NUM_TRADE_TEXTS
|
||||
|
||||
ConnectCableText:
|
||||
text_far _ConnectCableText
|
||||
|
|
|
|||
|
|
@ -125,18 +125,15 @@ GetPrizeMenuId:
|
|||
; put prices on the right side of the textbox
|
||||
ld de, wPrize1Price
|
||||
hlcoord 13, 5
|
||||
; reg. c:
|
||||
; [low nybble] number of bytes
|
||||
; [bits 765 = %100] space-padding (not zero-padding)
|
||||
ld c, (1 << 7) | 2
|
||||
ld c, 2 | LEADING_ZEROES
|
||||
call PrintBCDNumber
|
||||
ld de, wPrize2Price
|
||||
hlcoord 13, 7
|
||||
ld c, (1 << 7) | 2
|
||||
ld c, 2 | LEADING_ZEROES
|
||||
call PrintBCDNumber
|
||||
ld de, wPrize3Price
|
||||
hlcoord 13, 9
|
||||
ld c, (1 << 7) | 2
|
||||
ld c, 2 | LEADING_ZEROES
|
||||
jp PrintBCDNumber
|
||||
|
||||
NoThanksText:
|
||||
|
|
@ -157,7 +154,7 @@ PrintPrizePrice:
|
|||
call PlaceString
|
||||
hlcoord 13, 1
|
||||
ld de, wPlayerCoins
|
||||
ld c, %10000010
|
||||
ld c, 2 | LEADING_ZEROES
|
||||
call PrintBCDNumber
|
||||
ret
|
||||
|
||||
|
|
|
|||
|
|
@ -295,13 +295,13 @@ INCLUDE "data/pokemon/menu_icons.asm"
|
|||
DEF INC_FRAME_1 EQUS "0, $20"
|
||||
DEF INC_FRAME_2 EQUS "$20, $20"
|
||||
|
||||
BugIconFrame1: INCBIN "gfx/icons/bug.2bpp", INC_FRAME_1
|
||||
PlantIconFrame1: INCBIN "gfx/icons/plant.2bpp", INC_FRAME_1
|
||||
BugIconFrame2: INCBIN "gfx/icons/bug.2bpp", INC_FRAME_2
|
||||
PlantIconFrame2: INCBIN "gfx/icons/plant.2bpp", INC_FRAME_2
|
||||
SnakeIconFrame1: INCBIN "gfx/icons/snake.2bpp", INC_FRAME_1
|
||||
BugIconFrame1: INCBIN "gfx/icons/bug.2bpp", INC_FRAME_1
|
||||
PlantIconFrame1: INCBIN "gfx/icons/plant.2bpp", INC_FRAME_1
|
||||
BugIconFrame2: INCBIN "gfx/icons/bug.2bpp", INC_FRAME_2
|
||||
PlantIconFrame2: INCBIN "gfx/icons/plant.2bpp", INC_FRAME_2
|
||||
SnakeIconFrame1: INCBIN "gfx/icons/snake.2bpp", INC_FRAME_1
|
||||
QuadrupedIconFrame1: INCBIN "gfx/icons/quadruped.2bpp", INC_FRAME_1
|
||||
SnakeIconFrame2: INCBIN "gfx/icons/snake.2bpp", INC_FRAME_2
|
||||
SnakeIconFrame2: INCBIN "gfx/icons/snake.2bpp", INC_FRAME_2
|
||||
QuadrupedIconFrame2: INCBIN "gfx/icons/quadruped.2bpp", INC_FRAME_2
|
||||
|
||||
TradeBubbleIconGFX: INCBIN "gfx/trade/bubble.2bpp"
|
||||
|
|
|
|||
|
|
@ -2301,7 +2301,7 @@ ItemUsePPRestore:
|
|||
cp MAX_ETHER
|
||||
jr z, .fullyRestorePP
|
||||
ld a, [hl] ; move PP
|
||||
and %00111111 ; lower 6 bit bits store current PP
|
||||
and PP_MASK
|
||||
cp b ; does current PP equal max PP?
|
||||
ret z ; if so, return
|
||||
add 10 ; increase current PP by 10
|
||||
|
|
@ -2314,7 +2314,7 @@ ItemUsePPRestore:
|
|||
ld b, a
|
||||
.storeNewAmount
|
||||
ld a, [hl] ; move PP
|
||||
and %11000000 ; PP Up counter bits
|
||||
and PP_UP_MASK
|
||||
add b
|
||||
ld [hl], a
|
||||
ret
|
||||
|
|
@ -2684,7 +2684,7 @@ RestoreBonusPP:
|
|||
jr nz, .nextMove
|
||||
.skipMenuItemIDCheck
|
||||
ld a, [hl]
|
||||
and %11000000 ; have any PP Ups been used?
|
||||
and PP_UP_MASK
|
||||
call nz, AddBonusPP ; if so, add bonus PP
|
||||
.nextMove
|
||||
inc hl
|
||||
|
|
@ -2791,7 +2791,7 @@ GetMaxPP:
|
|||
.addPPOffset
|
||||
add hl, bc
|
||||
ld a, [hl] ; a = current PP
|
||||
and %11000000 ; get PP Up count
|
||||
and PP_UP_MASK
|
||||
pop bc
|
||||
or b ; place normal max PP in 6 lower bits of a
|
||||
ASSERT wMoveData + MOVE_PP + 1 == wPPUpCountAndMaxPP
|
||||
|
|
@ -2803,7 +2803,7 @@ GetMaxPP:
|
|||
ld [wUsingPPUp], a
|
||||
call AddBonusPP ; add bonus PP from PP Ups
|
||||
ld a, [hl]
|
||||
and %00111111 ; mask out the PP Up count
|
||||
and PP_MASK
|
||||
ld [wMaxPP], a ; store max PP
|
||||
ret
|
||||
|
||||
|
|
|
|||
|
|
@ -570,7 +570,7 @@ DrawTrainerInfo:
|
|||
call PlaceString
|
||||
hlcoord 8, 4
|
||||
ld de, wPlayerMoney
|
||||
ld c, $e3
|
||||
ld c, 3 | LEADING_ZEROES | LEFT_ALIGN | MONEY_SIGN
|
||||
call PrintBCDNumber
|
||||
hlcoord 9, 6
|
||||
ld de, wPlayTimeHours ; hours
|
||||
|
|
|
|||
|
|
@ -138,7 +138,7 @@ DisplayMoneyBox:
|
|||
call ClearScreenArea
|
||||
hlcoord 12, 1
|
||||
ld de, wPlayerMoney
|
||||
ld c, $a3
|
||||
ld c, 3 | LEADING_ZEROES | MONEY_SIGN
|
||||
call PrintBCDNumber
|
||||
ld hl, wStatusFlags5
|
||||
res BIT_NO_TEXT_DELAY, [hl]
|
||||
|
|
|
|||
|
|
@ -252,7 +252,7 @@ HoFDisplayPlayerStats:
|
|||
call PlaceString
|
||||
hlcoord 4, 10
|
||||
ld de, wPlayerMoney
|
||||
ld c, $a3
|
||||
ld c, 3 | LEADING_ZEROES | MONEY_SIGN
|
||||
call PrintBCDNumber
|
||||
ld hl, DexSeenOwnedText
|
||||
call HoFPrintTextAndDelay
|
||||
|
|
|
|||
|
|
@ -378,7 +378,7 @@ StatusScreen2:
|
|||
ld bc, wPartyMon1PP - wPartyMon1Moves - 1
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
and $3f
|
||||
and PP_MASK
|
||||
ld [wStatusScreenCurrentPP], a
|
||||
ld h, d
|
||||
ld l, e
|
||||
|
|
|
|||
|
|
@ -648,7 +648,7 @@ SlotMachine_SubtractBetFromPlayerCoins:
|
|||
SlotMachine_PrintCreditCoins:
|
||||
hlcoord 5, 1
|
||||
ld de, wPlayerCoins
|
||||
ld c, $2
|
||||
ld c, 2
|
||||
jp PrintBCDNumber
|
||||
|
||||
SlotMachine_PrintPayoutCoins:
|
||||
|
|
|
|||
|
|
@ -293,7 +293,7 @@ DisplayChooseQuantityMenu::
|
|||
ld de, SpacesBetweenQuantityAndPriceText
|
||||
call PlaceString
|
||||
ld de, hMoney ; total price
|
||||
ld c, $a3
|
||||
ld c, 3 | LEADING_ZEROES | MONEY_SIGN
|
||||
call PrintBCDNumber
|
||||
hlcoord 9, 10
|
||||
.printQuantity
|
||||
|
|
@ -417,7 +417,7 @@ PrintListMenuEntries::
|
|||
pop hl
|
||||
ld bc, SCREEN_WIDTH + 5 ; 1 row down and 5 columns right
|
||||
add hl, bc
|
||||
ld c, $a3 ; no leading zeroes, right-aligned, print currency symbol, 3 bytes
|
||||
ld c, 3 | LEADING_ZEROES | MONEY_SIGN
|
||||
call PrintBCDNumber
|
||||
.skipPrintingItemPrice
|
||||
ld a, [wListMenuID]
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ MACRO list_start
|
|||
ENDM
|
||||
|
||||
MACRO li
|
||||
ASSERT !STRIN(\1, "@"), STRCAT("String terminator \"@\" in list entry: ", \1)
|
||||
ASSERT STRFIND(\1, "@") == -1, STRCAT("String terminator \"@\" in list entry: ", \1)
|
||||
db \1, "@"
|
||||
DEF list_index += 1
|
||||
ENDM
|
||||
|
|
|
|||
|
|
@ -11,9 +11,17 @@ MACRO validate_coords
|
|||
ENDC
|
||||
ENDM
|
||||
|
||||
DEF hlcoord EQUS "coord hl,"
|
||||
DEF bccoord EQUS "coord bc,"
|
||||
DEF decoord EQUS "coord de,"
|
||||
MACRO hlcoord
|
||||
coord hl, \#
|
||||
ENDM
|
||||
|
||||
MACRO bccoord
|
||||
coord bc, \#
|
||||
ENDM
|
||||
|
||||
MACRO decoord
|
||||
coord de, \#
|
||||
ENDM
|
||||
|
||||
MACRO coord
|
||||
; register, x, y[, origin]
|
||||
|
|
@ -25,9 +33,17 @@ MACRO coord
|
|||
ENDC
|
||||
ENDM
|
||||
|
||||
DEF hlbgcoord EQUS "bgcoord hl,"
|
||||
DEF bcbgcoord EQUS "bgcoord bc,"
|
||||
DEF debgcoord EQUS "bgcoord de,"
|
||||
MACRO hlbgcoord
|
||||
bgcoord hl, \#
|
||||
ENDM
|
||||
|
||||
MACRO bcbgcoord
|
||||
bgcoord bc, \#
|
||||
ENDM
|
||||
|
||||
MACRO debgcoord
|
||||
bgcoord de, \#
|
||||
ENDM
|
||||
|
||||
MACRO bgcoord
|
||||
; register, x, y[, origin]
|
||||
|
|
@ -39,9 +55,17 @@ MACRO bgcoord
|
|||
ENDC
|
||||
ENDM
|
||||
|
||||
DEF hlowcoord EQUS "owcoord hl,"
|
||||
DEF bcowcoord EQUS "owcoord bc,"
|
||||
DEF deowcoord EQUS "owcoord de,"
|
||||
MACRO hlowcoord
|
||||
owcoord hl, \#
|
||||
ENDM
|
||||
|
||||
MACRO bcowcoord
|
||||
owcoord bc, \#
|
||||
ENDM
|
||||
|
||||
MACRO deowcoord
|
||||
owcoord de, \#
|
||||
ENDM
|
||||
|
||||
MACRO owcoord
|
||||
; register, x, y, map width
|
||||
|
|
|
|||
|
|
@ -225,8 +225,14 @@ MACRO connection
|
|||
dw wOverworldMap + _win
|
||||
ENDM
|
||||
|
||||
DEF def_script_pointers EQUS "const_def"
|
||||
MACRO def_script_pointers
|
||||
const_def
|
||||
ENDM
|
||||
|
||||
DEF def_text_pointers EQUS "const_def 1"
|
||||
MACRO def_text_pointers
|
||||
const_def 1
|
||||
ENDM
|
||||
|
||||
DEF object_const_def EQUS "const_def 1"
|
||||
MACRO object_const_def
|
||||
const_def 1
|
||||
ENDM
|
||||
|
|
|
|||
|
|
@ -1,13 +1,38 @@
|
|||
DEF text EQUS "db TX_START," ; Start writing text.
|
||||
DEF next EQUS "db \"<NEXT>\"," ; Move a line down.
|
||||
DEF line EQUS "db \"<LINE>\"," ; Start writing at the bottom line.
|
||||
DEF para EQUS "db \"<PARA>\"," ; Start a new paragraph.
|
||||
DEF cont EQUS "db \"<CONT>\"," ; Scroll to the next line.
|
||||
DEF done EQUS "db \"<DONE>\"" ; End a text box.
|
||||
DEF prompt EQUS "db \"<PROMPT>\"" ; Prompt the player to end a text box (initiating some other event).
|
||||
MACRO text
|
||||
db TX_START, \# ; Start writing text
|
||||
ENDM
|
||||
|
||||
DEF page EQUS "db \"<PAGE>\"," ; Start a new Pokédex page.
|
||||
DEF dex EQUS "db \"<DEXEND>\", \"@\"" ; End a Pokédex entry.
|
||||
MACRO next
|
||||
db "<NEXT>", \# ; Move a line down
|
||||
ENDM
|
||||
|
||||
MACRO line
|
||||
db "<LINE>", \# ; Start writing at the bottom line
|
||||
ENDM
|
||||
|
||||
MACRO para
|
||||
db "<PARA>", \# ; Start a new paragraph
|
||||
ENDM
|
||||
|
||||
MACRO cont
|
||||
db "<CONT>", \# ; Scroll to the next line
|
||||
ENDM
|
||||
|
||||
MACRO done
|
||||
db "<DONE>" ; End a text box
|
||||
ENDM
|
||||
|
||||
MACRO prompt
|
||||
db "<PROMPT>" ; Prompt the player to end a text box (initiating some other event)
|
||||
ENDM
|
||||
|
||||
MACRO page
|
||||
db "<PAGE>", \# ; Start a new Pokédex page
|
||||
ENDM
|
||||
|
||||
MACRO dex
|
||||
db "<DEXEND>@" ; End a Pokédex entry
|
||||
ENDM
|
||||
|
||||
|
||||
; TextCommandJumpTable indexes (see home/text.asm)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
IF !DEF(__RGBDS_MAJOR__) || !DEF(__RGBDS_MINOR__) || !DEF(__RGBDS_PATCH__)
|
||||
fail "pokeyellow requires rgbds v0.9.0 or newer."
|
||||
fail "pokeyellow requires rgbds v0.9.2 or newer."
|
||||
ENDC
|
||||
IF __RGBDS_MAJOR__ == 0 && __RGBDS_MINOR__ < 9
|
||||
fail "pokeyellow requires rgbds v0.9.0 or newer."
|
||||
IF __RGBDS_MAJOR__ == 0 && (__RGBDS_MINOR__ < 9 || (__RGBDS_MINOR__ == 9 && __RGBDS_PATCH__ < 2))
|
||||
fail "pokeyellow requires rgbds v0.9.2 or newer."
|
||||
ENDC
|
||||
|
|
|
|||
|
|
@ -513,7 +513,7 @@ GameCornerDrawCoinBox:
|
|||
call PlaceString
|
||||
hlcoord 15, 5
|
||||
ld de, wPlayerCoins
|
||||
ld c, $82
|
||||
ld c, 2 | LEADING_ZEROES
|
||||
call PrintBCDNumber
|
||||
ld hl, wStatusFlags5
|
||||
res BIT_NO_TEXT_DELAY, [hl]
|
||||
|
|
|
|||
|
|
@ -183,6 +183,16 @@ int parse_arg_value(const char *arg, bool absolute, const struct Symbol *symbols
|
|||
return parse_number(arg, 0);
|
||||
}
|
||||
|
||||
// Symbols may take the low or high part
|
||||
enum { SYM_WHOLE, SYM_LOW, SYM_HIGH } part = SYM_WHOLE;
|
||||
if (arg[0] == '<') {
|
||||
part = SYM_LOW;
|
||||
arg++;
|
||||
} else if (arg[0] == '>') {
|
||||
part = SYM_HIGH;
|
||||
arg++;
|
||||
}
|
||||
|
||||
// Symbols evaluate to their offset or address, plus an optional offset mod
|
||||
int offset_mod = 0;
|
||||
char *plus = strchr(arg, '+');
|
||||
|
|
@ -190,9 +200,13 @@ int parse_arg_value(const char *arg, bool absolute, const struct Symbol *symbols
|
|||
offset_mod = parse_number(plus, 0);
|
||||
*plus = '\0';
|
||||
}
|
||||
|
||||
// Symbols evaluate to their offset or address
|
||||
const char *sym_name = !strcmp(arg, "@") ? patch_name : arg; // "@" is the current patch label
|
||||
const struct Symbol *symbol = symbol_find(symbols, sym_name);
|
||||
return (absolute ? symbol->offset : symbol->address) + offset_mod;
|
||||
|
||||
int value = (absolute ? symbol->offset : symbol->address) + offset_mod;
|
||||
return part == SYM_LOW ? value & 0xff : part == SYM_HIGH ? value >> 8 : value;
|
||||
}
|
||||
|
||||
void interpret_command(char *command, const struct Symbol *current_hook, const struct Symbol *symbols, struct Buffer *patches, FILE *restrict new_rom, FILE *restrict orig_rom, FILE *restrict output) {
|
||||
|
|
@ -413,7 +427,7 @@ struct Buffer *process_template(const char *template_filename, const char *patch
|
|||
int compare_patch(const void *patch1, const void *patch2) {
|
||||
unsigned int offset1 = ((const struct Patch *)patch1)->offset;
|
||||
unsigned int offset2 = ((const struct Patch *)patch2)->offset;
|
||||
return offset1 > offset2 ? 1 : offset1 < offset2 ? -1 : 0;
|
||||
return (offset1 > offset2) - (offset1 < offset2);
|
||||
}
|
||||
|
||||
bool verify_completeness(FILE *restrict orig_rom, FILE *restrict new_rom, struct Buffer *patches) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user