summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormid-kid <esteve.varela@gmail.com>2020-04-17 18:25:59 +0000
committerGitHub <noreply@github.com>2020-04-17 18:25:59 +0000
commit19aee926af86c1351ca85ca45da26f5d6f3cd8d6 (patch)
tree82d2d640096a0cb3fc2dddec35fb9ac5a2addfef
parent93ed0ed19ce615f99a36062cd2133e8ee2e75cc1 (diff)
parent164e1b89afc1773a14598c377c8c8d0bfa01a1a1 (diff)
Merge pull request #712 from Rangi42/master
Miscellaneous fixes
-rw-r--r--FAQ.md2
-rw-r--r--Makefile25
-rw-r--r--constants.asm4
-rw-r--r--docs/design_flaws.md6
-rw-r--r--engine/events/diploma.asm2
-rw-r--r--engine/events/print_unown.asm6
-rw-r--r--engine/events/print_unown_2.asm2
-rw-r--r--engine/menus/init_gender.asm4
-rw-r--r--engine/menus/intro_menu.asm2
-rw-r--r--engine/menus/options_menu.asm64
-rw-r--r--engine/movie/credits.asm2
-rw-r--r--engine/overworld/map_setup.asm4
-rw-r--r--gfx/pics.asm2
-rw-r--r--layout.link (renamed from pokecrystal.link)0
-rw-r--r--mobile/mobile_45_sprite_engine.asm4
-rw-r--r--rgbdscheck.asm12
-rw-r--r--wram.asm3
17 files changed, 85 insertions, 59 deletions
diff --git a/FAQ.md b/FAQ.md
index c21960340..7ed5e006f 100644
--- a/FAQ.md
+++ b/FAQ.md
@@ -58,7 +58,7 @@ If you are using 64-bit Windows, download [**64-bit Cygwin**][cygwin] and [**64-
If you have not changed any of the asm, make sure you have the latest version of pokecrystal and the correct version of rgbds (see [INSTALL.md](INSTALL.md)).
-If you added or changed any code, it has to fit in the **memory banks**. The 2MB ROM is divided into 128 banks of 4KB ($4000 bytes) each, numbered $00 to $7F. The linkerscript [pokecrystal.link](pokecrystal.link) lists which `SECTION`s go in which banks. Try moving some code into a new section.
+If you added or changed any code, it has to fit in the **memory banks**. The 2MB ROM is divided into 128 banks of 4KB ($4000 bytes) each, numbered $00 to $7F. The linkerscript [layout.link](layout.link) lists which `SECTION`s go in which banks. Try moving some code into a new section.
### "Invalid file or object file version"
diff --git a/Makefile b/Makefile
index 4746d399e..f2a49073b 100644
--- a/Makefile
+++ b/Makefile
@@ -50,7 +50,7 @@ crystal11: pokecrystal11.gbc
crystal-au: pokecrystal-au.gbc
clean:
- rm -f $(roms) $(crystal_obj) $(crystal11_obj) $(crystal_au_obj) $(roms:.gbc=.map) $(roms:.gbc=.sym)
+ rm -f $(roms) $(crystal_obj) $(crystal11_obj) $(crystal_au_obj) $(roms:.gbc=.map) $(roms:.gbc=.sym) rgbdscheck.o
find gfx \( -name "*.[12]bpp" -o -name "*.lz" -o -name "*.gbcpal" -o -name "*.sgb.tilemap" \) -delete
find gfx/pokemon -mindepth 1 ! -path "gfx/pokemon/unown/*" \( -name "bitmask.asm" -o -name "frames.asm" -o -name "front.animated.tilemap" -o -name "front.dimensions" \) -delete
$(MAKE) clean -C tools/
@@ -71,11 +71,14 @@ $(crystal_obj): RGBASMFLAGS +=
$(crystal11_obj): RGBASMFLAGS += -D _CRYSTAL11
$(crystal_au_obj): RGBASMFLAGS += -D _CRYSTAL11 -D _CRYSTAL_AU
+rgbdscheck.o: rgbdscheck.asm
+ $(RGMASM) -o $@ $<
+
# The dep rules have to be explicit or else missing files won't be reported.
# As a side effect, they're evaluated immediately instead of when the rule is invoked.
# It doesn't look like $(shell) can be deferred so there might not be a better way.
define DEP
-$1: $2 $$(shell tools/scan_includes $2)
+$1: $2 $$(shell tools/scan_includes $2) | rgbdscheck.o
$$(RGBASM) $$(RGBASMFLAGS) -o $$@ $$<
endef
@@ -92,17 +95,17 @@ $(foreach obj, $(crystal_obj), $(eval $(call DEP,$(obj),$(obj:.o=.asm))))
endif
-pokecrystal.gbc: $(crystal_obj) pokecrystal.link
- $(RGBLINK) -n pokecrystal.sym -m pokecrystal.map -l pokecrystal.link -o $@ $(crystal_obj)
- $(RGBFIX) -Cjv -i BYTE -k 01 -l 0x33 -m 0x10 -p 0 -r 3 -t PM_CRYSTAL $@
+pokecrystal.gbc: $(crystal_obj) layout.link
+ $(RGBLINK) -n pokecrystal.sym -m pokecrystal.map -l layout.link -p 0 -o $@ $(crystal_obj)
+ $(RGBFIX) -Cjv -t PM_CRYSTAL -i BYTE -k 01 -l 0x33 -m 0x10 -r 3 -p 0 $@
-pokecrystal11.gbc: $(crystal11_obj) pokecrystal.link
- $(RGBLINK) -n pokecrystal11.sym -m pokecrystal11.map -l pokecrystal.link -o $@ $(crystal11_obj)
- $(RGBFIX) -Cjv -i BYTE -k 01 -l 0x33 -m 0x10 -n 1 -p 0 -r 3 -t PM_CRYSTAL $@
+pokecrystal11.gbc: $(crystal11_obj) layout.link
+ $(RGBLINK) -n pokecrystal11.sym -m pokecrystal11.map -l layout.link -p 0 -o $@ $(crystal11_obj)
+ $(RGBFIX) -Cjv -t PM_CRYSTAL -i BYTE -n 1 -k 01 -l 0x33 -m 0x10 -r 3 -p 0 $@
-pokecrystal-au.gbc: $(crystal_au_obj) pokecrystal.link
- $(RGBLINK) -n pokecrystal-au.sym -m pokecrystal-au.map -l pokecrystal.link -o $@ $(crystal_au_obj)
- $(RGBFIX) -Cjv -i BYTU -k 01 -l 0x33 -m 0x10 -p 0 -r 3 -t PM_CRYSTAL $@
+pokecrystal-au.gbc: $(crystal_au_obj) layout.link
+ $(RGBLINK) -n pokecrystal-au.sym -m pokecrystal-au.map -l layout.link -p 0 -o $@ $(crystal_au_obj)
+ $(RGBFIX) -Cjv -t PM_CRYSTAL -i BYTU -k 01 -l 0x33 -m 0x10 -r 3 -p 0 $@
# For files that the compressor can't match, there will be a .lz file suffixed with the md5 hash of the correct uncompressed file.
diff --git a/constants.asm b/constants.asm
index 758b3abcc..7864ec9d0 100644
--- a/constants.asm
+++ b/constants.asm
@@ -1,7 +1,3 @@
-if __RGBDS_MAJOR__ <= 0 && __RGBDS_MINOR__ < 4
- fail "pokecrystal requires rgbds 0.4.0 or newer."
-endc
-
INCLUDE "charmap.asm"
INCLUDE "macros.asm"
diff --git a/docs/design_flaws.md b/docs/design_flaws.md
index f1a672346..26560b58f 100644
--- a/docs/design_flaws.md
+++ b/docs/design_flaws.md
@@ -85,7 +85,7 @@ In [gfx/pics.asm](https://github.com/pret/pokecrystal/blob/master/gfx/pics.asm):
```asm
; PokemonPicPointers and UnownPicPointers are assumed to start at the same
-; address, but in different banks. This is enforced in pokecrystal.link.
+; address, but in different banks. This is enforced in layout.link.
SECTION "Pic Pointers", ROMX
@@ -98,7 +98,7 @@ SECTION "Unown Pic Pointers", ROMX
INCLUDE "data/pokemon/unown_pic_pointers.asm"
```
-In [pokecrystal.link](https://github.com/pret/pokecrystal/blob/master/pokecrystal.link):
+In [layout.link](https://github.com/pret/pokecrystal/blob/master/layout.link):
```
ROMX $48
@@ -113,7 +113,7 @@ ROMX $49
**Fix:**
-Don't enforce `org $4000` in [pokecrystal.link](https://github.com/pret/pokecrystal/blob/master/pokecrystal.link).
+Don't enforce `org $4000` in [layout.link](https://github.com/pret/pokecrystal/blob/master/layout.link).
Edit `GetFrontpicPointer`:
diff --git a/engine/events/diploma.asm b/engine/events/diploma.asm
index 7cb982de5..f0008b7fd 100644
--- a/engine/events/diploma.asm
+++ b/engine/events/diploma.asm
@@ -52,7 +52,7 @@ PlaceDiplomaOnScreen:
PrintDiplomaPage2:
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
- ld a, $7f
+ ld a, " "
call ByteFill
ld hl, DiplomaPage2Tilemap
decoord 0, 0
diff --git a/engine/events/print_unown.asm b/engine/events/print_unown.asm
index f90d225fb..484ea3792 100644
--- a/engine/events/print_unown.asm
+++ b/engine/events/print_unown.asm
@@ -112,7 +112,7 @@ _UnownPrinter:
ld a, [hl]
and a
jr nz, .wrap_around_left
- ld [hl], 26 + 1
+ ld [hl], NUM_UNOWN + 1
.wrap_around_left
dec [hl]
jr .return
@@ -120,7 +120,7 @@ _UnownPrinter:
.press_right
ld hl, wJumptableIndex
ld a, [hl]
- cp 26
+ cp NUM_UNOWN
jr c, .wrap_around_right
ld [hl], -1
.wrap_around_right
@@ -132,7 +132,7 @@ _UnownPrinter:
.UpdateUnownFrontpic:
ld a, [wJumptableIndex]
- cp 26
+ cp NUM_UNOWN
jr z, .vacant
inc a
ld [wUnownLetter], a
diff --git a/engine/events/print_unown_2.asm b/engine/events/print_unown_2.asm
index 5dc7b1b94..8751c2434 100644
--- a/engine/events/print_unown_2.asm
+++ b/engine/events/print_unown_2.asm
@@ -1,7 +1,7 @@
RotateUnownFrontpic:
; something to do with Unown printer
push de
- xor a ; sScratch
+ xor a ; BANK(sScratch)
call GetSRAMBank
ld hl, sScratch
ld bc, 0
diff --git a/engine/menus/init_gender.asm b/engine/menus/init_gender.asm
index e0e857fb4..4bf8cc2f0 100644
--- a/engine/menus/init_gender.asm
+++ b/engine/menus/init_gender.asm
@@ -59,9 +59,9 @@ AreYouABoyOrAreYouAGirlText:
InitGenderScreen:
ld a, $10
ld [wMusicFade], a
- ld a, MUSIC_NONE
+ ld a, LOW(MUSIC_NONE)
ld [wMusicFadeID], a
- ld a, $0
+ ld a, HIGH(MUSIC_NONE)
ld [wMusicFadeID + 1], a
ld c, 8
call DelayFrames
diff --git a/engine/menus/intro_menu.asm b/engine/menus/intro_menu.asm
index f3f74d4c5..c2b9f9f09 100644
--- a/engine/menus/intro_menu.asm
+++ b/engine/menus/intro_menu.asm
@@ -1206,7 +1206,7 @@ TitleScreenMain:
inc [hl]
; Fade out the title screen music
- xor a
+ xor a ; MUSIC_NONE
ld [wMusicFadeID], a
ld [wMusicFadeID + 1], a
ld hl, wMusicFade
diff --git a/engine/menus/options_menu.asm b/engine/menus/options_menu.asm
index 9a6b0fdc7..07f71be26 100644
--- a/engine/menus/options_menu.asm
+++ b/engine/menus/options_menu.asm
@@ -1,21 +1,34 @@
+; GetOptionPointer.Pointers indexes
+ const_def
+ const OPT_TEXT_SPEED ; 0
+ const OPT_BATTLE_SCENE ; 1
+ const OPT_BATTLE_STYLE ; 2
+ const OPT_SOUND ; 3
+ const OPT_PRINT ; 4
+ const OPT_MENU_ACCOUNT ; 5
+ const OPT_FRAME ; 6
+ const OPT_CANCEL ; 7
+NUM_OPTIONS EQU const_value ; 8
+
_OptionsMenu:
ld hl, hInMenu
ld a, [hl]
push af
- ld [hl], $1
+ ld [hl], TRUE
call ClearBGPalettes
hlcoord 0, 0
- ld b, 16
- ld c, 18
+ ld b, SCREEN_HEIGHT - 2
+ ld c, SCREEN_WIDTH - 2
call Textbox
hlcoord 2, 2
ld de, StringOptions
call PlaceString
xor a
ld [wJumptableIndex], a
- ld c, $6 ; number of items on the menu minus 1 (for cancel)
-.print_text_loop ; this next will display the settings of each option when the menu is opened
+; display the settings of each option when the menu is opened
+ ld c, NUM_OPTIONS - 2 ; omit frame type, the last option
+.print_text_loop
push bc
xor a
ldh [hJoyLast], a
@@ -25,8 +38,8 @@ _OptionsMenu:
inc [hl]
dec c
jr nz, .print_text_loop
+ call UpdateFrame ; display the frame type
- call UpdateFrame
xor a
ld [wJumptableIndex], a
inc a
@@ -78,8 +91,8 @@ StringOptions:
db "CANCEL@"
GetOptionPointer:
- ld a, [wJumptableIndex] ; load the cursor position to a
- ld e, a ; copy it to de
+ ld a, [wJumptableIndex]
+ ld e, a
ld d, 0
ld hl, .Pointers
add hl, de
@@ -87,9 +100,10 @@ GetOptionPointer:
ld a, [hli]
ld h, [hl]
ld l, a
- jp hl ; jump to the code of the current highlighted item
+ jp hl
.Pointers:
+; entries correspond to OPT_* constants
dw Options_TextSpeed
dw Options_BattleScene
dw Options_BattleStyle
@@ -346,7 +360,7 @@ Options_Print:
ld [wGBPrinterBrightness], a
.NonePressed:
- ld b, $0
+ ld b, 0
ld hl, .Strings
add hl, bc
add hl, bc
@@ -500,17 +514,17 @@ OptionsControl:
ret
.DownPressed:
- ld a, [hl] ; load the cursor position to a
- cp $7 ; maximum number of items in option menu
- jr nz, .CheckFive
- ld [hl], $0
+ ld a, [hl]
+ cp OPT_CANCEL ; maximum option index
+ jr nz, .CheckMenuAccount
+ ld [hl], OPT_TEXT_SPEED ; first option
scf
ret
-.CheckFive: ; I have no idea why this exists...
- cp $5
+.CheckMenuAccount: ; I have no idea why this exists...
+ cp OPT_MENU_ACCOUNT
jr nz, .Increase
- ld [hl], $5
+ ld [hl], OPT_MENU_ACCOUNT
.Increase:
inc [hl]
@@ -519,16 +533,18 @@ OptionsControl:
.UpPressed:
ld a, [hl]
- cp $6
- jr nz, .NotSix
- ld [hl], $5 ; Another thing where I'm not sure why it exists
+
+; Another thing where I'm not sure why it exists
+ cp OPT_FRAME
+ jr nz, .NotFrame
+ ld [hl], OPT_MENU_ACCOUNT
scf
ret
-.NotSix:
- and a
+.NotFrame:
+ and a ; OPT_TEXT_SPEED, minimum option index
jr nz, .Decrease
- ld [hl], $8 ; number of option items +1
+ ld [hl], NUM_OPTIONS ; decrements to OPT_CANCEL, maximum option index
.Decrease:
dec [hl]
@@ -538,7 +554,7 @@ OptionsControl:
Options_UpdateCursorPosition:
hlcoord 1, 1
ld de, SCREEN_WIDTH
- ld c, $10
+ ld c, SCREEN_HEIGHT - 2
.loop
ld [hl], " "
add hl, de
diff --git a/engine/movie/credits.asm b/engine/movie/credits.asm
index 78985c146..a494d3681 100644
--- a/engine/movie/credits.asm
+++ b/engine/movie/credits.asm
@@ -85,7 +85,7 @@ Credits::
xor a
ldh [hBGMapMode], a
ld [wCreditsPos], a
- ld [wCreditsUnusedCD21], a
+ ld [wCreditsPos + 1], a
ld [wCreditsTimer], a
.execution_loop
diff --git a/engine/overworld/map_setup.asm b/engine/overworld/map_setup.asm
index 1c84f049a..300f911b1 100644
--- a/engine/overworld/map_setup.asm
+++ b/engine/overworld/map_setup.asm
@@ -226,9 +226,9 @@ ApplyMapPalettes:
ret
FadeMapMusicAndPalettes:
- ld e, 0
+ ld e, LOW(MUSIC_NONE)
ld a, [wMusicFadeID]
- ld d, 0
+ ld d, HIGH(MUSIC_NONE)
ld a, [wMusicFadeID + 1]
ld a, $4
ld [wMusicFade], a
diff --git a/gfx/pics.asm b/gfx/pics.asm
index d771b63d2..a268b6db4 100644
--- a/gfx/pics.asm
+++ b/gfx/pics.asm
@@ -2,7 +2,7 @@ INCLUDE "constants.asm"
; PokemonPicPointers and UnownPicPointers are assumed to start at the same
-; address, but in different banks. This is enforced in pokecrystal.link.
+; address, but in different banks. This is enforced in layout.link.
SECTION "Pic Pointers", ROMX
diff --git a/pokecrystal.link b/layout.link
index 49d2555e9..49d2555e9 100644
--- a/pokecrystal.link
+++ b/layout.link
diff --git a/mobile/mobile_45_sprite_engine.asm b/mobile/mobile_45_sprite_engine.asm
index b666683e2..d8f2d8b39 100644
--- a/mobile/mobile_45_sprite_engine.asm
+++ b/mobile/mobile_45_sprite_engine.asm
@@ -704,9 +704,9 @@ Function1163c0:
.asm_11642a
ld a, $8
ld [wMusicFade], a
- ld a, $0
+ ld a, LOW(MUSIC_NONE)
ld [wMusicFadeID], a
- ld a, $0
+ ld a, HIGH(MUSIC_NONE)
ld [wMusicFadeID + 1], a
.asm_116439
diff --git a/rgbdscheck.asm b/rgbdscheck.asm
new file mode 100644
index 000000000..d5e2e5011
--- /dev/null
+++ b/rgbdscheck.asm
@@ -0,0 +1,12 @@
+; pokecrystal requires rgbds 0.4.0 or newer.
+MAJOR EQU 0
+MINOR EQU 4
+PATCH EQU 0
+
+if !DEF(__RGBDS_MAJOR__) || !DEF(__RGBDS_MINOR__) || !DEF(__RGBDS_PATCH__)
+ fail "pokecrystal requires rgbds {MAJOR}.{MINOR}.{PATCH} or newer."
+elif (__RGBDS_MAJOR__ < MAJOR) || \
+ (__RGBDS_MAJOR__ == MAJOR && __RGBDS_MINOR__ < MINOR) || \
+ (__RGBDS_MAJOR__ == MAJOR && __RGBDS_MINOR__ == MINOR && __RGBDS_PATCH__ < PATCH)
+ fail "pokecrystal requires rgbds {MAJOR}.{MINOR}.{PATCH} or newer."
+endc
diff --git a/wram.asm b/wram.asm
index ce41613db..6274cb02d 100644
--- a/wram.asm
+++ b/wram.asm
@@ -1176,8 +1176,7 @@ wBGMapBufferEnd::
NEXTU ; cd20
; credits
-wCreditsPos:: db
-wCreditsUnusedCD21:: db
+wCreditsPos:: dw
wCreditsTimer:: db
NEXTU ; cd20