ref: 19aee926af86c1351ca85ca45da26f5d6f3cd8d6
parent: 93ed0ed19ce615f99a36062cd2133e8ee2e75cc1
parent: 164e1b89afc1773a14598c377c8c8d0bfa01a1a1
author: mid-kid <esteve.varela@gmail.com>
date: Fri Apr 17 14:25:59 EDT 2020
Merge pull request #712 from Rangi42/master Miscellaneous fixes
--- a/FAQ.md
+++ b/FAQ.md
@@ -58,7 +58,7 @@
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"
--- a/Makefile
+++ b/Makefile
@@ -50,7 +50,7 @@
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 @@
$(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 @@
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.
--- 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"
--- a/docs/design_flaws.md
+++ b/docs/design_flaws.md
@@ -85,7 +85,7 @@
```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 @@
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 @@
**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`:
--- a/engine/events/diploma.asm
+++ b/engine/events/diploma.asm
@@ -52,7 +52,7 @@
PrintDiplomaPage2:
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
- ld a, $7f
+ ld a, " "
call ByteFill
ld hl, DiplomaPage2Tilemap
decoord 0, 0
--- a/engine/events/print_unown.asm
+++ b/engine/events/print_unown.asm
@@ -112,7 +112,7 @@
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 @@
.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 @@
.UpdateUnownFrontpic:
ld a, [wJumptableIndex]
- cp 26
+ cp NUM_UNOWN
jr z, .vacant
inc a
ld [wUnownLetter], a
--- 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
--- a/engine/menus/init_gender.asm
+++ b/engine/menus/init_gender.asm
@@ -59,9 +59,9 @@
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
--- a/engine/menus/intro_menu.asm
+++ b/engine/menus/intro_menu.asm
@@ -1206,7 +1206,7 @@
inc [hl]
; Fade out the title screen music
- xor a
+ xor a ; MUSIC_NONE
ld [wMusicFadeID], a
ld [wMusicFadeID + 1], a
ld hl, wMusicFade
--- a/engine/menus/options_menu.asm
+++ b/engine/menus/options_menu.asm
@@ -1,12 +1,24 @@
+; 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
@@ -13,9 +25,10 @@
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 @@
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 @@
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 @@
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 @@
ld [wGBPrinterBrightness], a
.NonePressed:
- ld b, $0
+ ld b, 0
ld hl, .Strings
add hl, bc
add hl, bc
@@ -500,17 +514,17 @@
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 @@
.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 @@
Options_UpdateCursorPosition:
hlcoord 1, 1
ld de, SCREEN_WIDTH
- ld c, $10
+ ld c, SCREEN_HEIGHT - 2
.loop
ld [hl], " "
add hl, de
--- a/engine/movie/credits.asm
+++ b/engine/movie/credits.asm
@@ -85,7 +85,7 @@
xor a
ldh [hBGMapMode], a
ld [wCreditsPos], a
- ld [wCreditsUnusedCD21], a
+ ld [wCreditsPos + 1], a
ld [wCreditsTimer], a
.execution_loop
--- a/engine/overworld/map_setup.asm
+++ b/engine/overworld/map_setup.asm
@@ -226,9 +226,9 @@
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
--- a/gfx/pics.asm
+++ b/gfx/pics.asm
@@ -2,7 +2,7 @@
; 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
--- /dev/null
+++ b/layout.link
@@ -1,0 +1,367 @@
+ROM0
+ org $0000
+ "NULL"
+ org $0000
+ "rst0"
+ org $0008
+ "rst8"
+ org $0010
+ "rst10"
+ org $0018
+ "rst18"
+ org $0020
+ "rst20"
+ org $0028
+ "rst28"
+ org $0038
+ "rst38"
+ org $0040
+ "vblank"
+ org $0048
+ "lcd"
+ org $0050
+ "timer"
+ org $0058
+ "serial"
+ org $0060
+ "joypad"
+ org $0100
+ "Header"
+ org $0150
+ "Home"
+ROMX $01
+ "bank1"
+ROMX $02
+ "bank2"
+ROMX $03
+ "bank3"
+ROMX $04
+ "bank4"
+ROMX $05
+ "bank5"
+ROMX $06
+ "Tileset Data 1"
+ROMX $07
+ "Roofs"
+ "Tileset Data 2"
+ "Extra Songs 1"
+ROMX $08
+ "Clock Reset"
+ "Tileset Data 3"
+ "Egg Moves"
+ROMX $09
+ "bank9"
+ROMX $0a
+ "bankA"
+ROMX $0b
+ "bankB"
+ROMX $0c
+ "Tileset Data 4"
+ROMX $0d
+ "Effect Commands"
+ROMX $0e
+ "Enemy Trainers"
+ROMX $0f
+ "Battle Core"
+ROMX $10
+ "bank10"
+ "Evolutions and Attacks"
+ROMX $11
+ "bank11"
+ROMX $12
+ "Crystal Features 1"
+ROMX $13
+ "bank13"
+ROMX $14
+ "bank14"
+ROMX $15
+ "Map Scripts 1"
+ROMX $16
+ "Map Scripts 2"
+ROMX $17
+ "Map Scripts 3"
+ROMX $18
+ "Map Scripts 4"
+ROMX $19
+ "Crystal Phone Text"
+ROMX $1a
+ "Map Scripts 5"
+ROMX $1b
+ "Map Scripts 6"
+ROMX $1c
+ "Map Scripts 7"
+ROMX $1d
+ "Map Scripts 8"
+ROMX $1e
+ "Map Scripts 9"
+ROMX $1f
+ "Map Scripts 10"
+ROMX $20
+ "bank20"
+ROMX $21
+ "bank21"
+ROMX $22
+ "Crystal Features 2"
+ROMX $23
+ "bank23"
+ROMX $24
+ "bank24"
+ROMX $25
+ "Maps"
+ "Events"
+ROMX $26
+ "Map Scripts 11"
+ROMX $27
+ "Map Scripts 12"
+ROMX $28
+ "Phone Scripts 1"
+ROMX $29
+ "Phone Text"
+ROMX $2a
+ "Map Blocks 1"
+ROMX $2b
+ "Map Blocks 2"
+ROMX $2c
+ "Map Blocks 3"
+ROMX $2d
+ "Tileset Data 5"
+ROMX $2e
+ "bank2E"
+ROMX $2f
+ "Phone Scripts 2"
+ROMX $30
+ "Sprites 1"
+ROMX $31
+ "Sprites 2"
+ROMX $32
+ "bank32"
+ROMX $33
+ "Move Animations"
+ "Extra Songs 2"
+ROMX $34
+ "Pic Animations 1"
+ROMX $35
+ "Pic Animations 2"
+ROMX $36
+ "Font Inversed"
+ "Pic Animations 3"
+ROMX $37
+ "Tileset Data 6"
+ROMX $38
+ "bank38"
+ROMX $39
+ "bank39"
+ROMX $3a
+ "Audio"
+ "Songs 1"
+ROMX $3b
+ "Songs 2"
+ROMX $3c
+ "Songs 3"
+ "Sound Effects"
+ "Cries"
+ROMX $3d
+ "Songs 4"
+ROMX $3e
+ "bank3E"
+ROMX $3f
+ "bank3F"
+ROMX $40
+ "mobile40"
+ROMX $41
+ "bank41"
+ROMX $42
+ "mobile42"
+ "Intro Logo"
+ "Credits"
+ROMX $43
+ "Title"
+ROMX $44
+ "Mobile Adapter SDK"
+ROMX $45
+ "mobile45"
+ROMX $46
+ "mobile46"
+ROMX $47
+ "Battle Tower"
+ROMX $48
+ org $4000
+ "Pic Pointers"
+ "Pics 1"
+ROMX $49
+ org $4000
+ "Unown Pic Pointers"
+ "Pics 2"
+ROMX $4a
+ "Trainer Pic Pointers"
+ "Pics 3"
+ROMX $4b
+ "Pics 4"
+ROMX $4c
+ "Pics 5"
+ROMX $4d
+ "Pics 6"
+ROMX $4e
+ "Pics 7"
+ROMX $4f
+ "Pics 8"
+ROMX $50
+ "Pics 9"
+ROMX $51
+ "Pics 10"
+ROMX $52
+ "Pics 11"
+ROMX $53
+ "Pics 12"
+ROMX $54
+ "Pics 13"
+ROMX $55
+ "Pics 14"
+ROMX $56
+ "Pics 15"
+ROMX $57
+ "Pics 16"
+ROMX $58
+ "Pics 17"
+ROMX $59
+ "Pics 18"
+ROMX $5a
+ "Pics 19"
+ROMX $5b
+ "bank5B"
+ "Pics 20"
+ROMX $5c
+ "mobile5C"
+ "Pics 21"
+ROMX $5d
+ "Crystal Phone Text 2"
+ "Pics 22"
+ROMX $5e
+ "UpdateBattleHUDs"
+ "Songs 5"
+ "Crystal Sound Effects"
+ "mobile5E"
+ "Pics 23"
+ROMX $5f
+ "mobile5F"
+ "Pics 24"
+ROMX $60
+ "Map Scripts 13"
+ "Pokedex Entries 001-064"
+ROMX $61
+ "Map Scripts 14"
+ROMX $62
+ "Map Scripts 15"
+ROMX $63
+ "Map Scripts 16"
+ROMX $64
+ "Map Scripts 17"
+ROMX $65
+ "Map Scripts 18"
+ROMX $66
+ "Map Scripts 19"
+ROMX $67
+ "Map Scripts 20"
+ROMX $68
+ "Map Scripts 21"
+ROMX $69
+ "Map Scripts 22"
+ROMX $6a
+ "Map Scripts 23"
+ROMX $6b
+ "Map Scripts 24"
+ROMX $6c
+ "Phone Text 2"
+ "Map Scripts 25"
+ROMX $6d
+ "Special Phone Text"
+ROMX $6e
+ "Pokedex Entries 065-128"
+ROMX $6f
+ "Text 1"
+ROMX $70
+ "Text 2"
+ROMX $71
+ "Text 3"
+ROMX $72
+ "Miscellaneous Text"
+ROMX $73
+ "Pokedex Entries 129-192"
+ROMX $74
+ "Pokedex Entries 193-251"
+ROMX $77
+ "bank77"
+ "Tileset Data 7"
+ "bank77_2"
+ROMX $78
+ "Tileset Data 8"
+ROMX $7b
+ "Battle Tower Text"
+ROMX $7c
+ "Battle Tower Trainer Data"
+ROMX $7d
+ "Mobile News Data"
+ROMX $7e
+ "Crystal Events"
+ROMX $7f
+ org $7de0
+ "Mobile Stadium 2"
+WRAM0
+ "Stack"
+ "Audio RAM"
+ "WRAM"
+ "wSpriteAnims"
+ align 8
+ "Sprites"
+ "Tilemap"
+ "Miscellaneous"
+ "Overworld Map"
+ "Video"
+WRAMX 1
+ "WRAM 1"
+ "Enemy Party"
+ "Party"
+WRAMX 2
+ "Pic Animations"
+WRAMX 3
+ "Battle Tower RAM"
+WRAMX 5
+ align 8
+ "GBC Video"
+ org $d300
+ "Battle Animations"
+ org $d800
+ "Mobile RAM"
+WRAMX 6
+ "Scratch RAM"
+WRAMX 7
+ "Stack RAM"
+VRAM $00
+ "VRAM0"
+VRAM $01
+ "VRAM1"
+SRAM $00
+ "Scratch"
+ org $a600
+ "SRAM Bank 0"
+ org $b200
+ "Backup Save"
+SRAM $01
+ "Save"
+ "Active Box"
+ "Link Battle Data"
+ "SRAM Hall of Fame"
+ "SRAM Crystal Data"
+ "SRAM Battle Tower"
+SRAM $02
+ "Boxes 1-7"
+SRAM $03
+ "Boxes 8-14"
+SRAM $04
+ "SRAM Mobile 1"
+SRAM $05
+ "SRAM Mobile 2"
+SRAM $06
+ "SRAM Mobile 3"
+HRAM
+ "HRAM"
--- a/mobile/mobile_45_sprite_engine.asm
+++ b/mobile/mobile_45_sprite_engine.asm
@@ -704,9 +704,9 @@
.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
--- a/pokecrystal.link
+++ /dev/null
@@ -1,367 +1,0 @@
-ROM0
- org $0000
- "NULL"
- org $0000
- "rst0"
- org $0008
- "rst8"
- org $0010
- "rst10"
- org $0018
- "rst18"
- org $0020
- "rst20"
- org $0028
- "rst28"
- org $0038
- "rst38"
- org $0040
- "vblank"
- org $0048
- "lcd"
- org $0050
- "timer"
- org $0058
- "serial"
- org $0060
- "joypad"
- org $0100
- "Header"
- org $0150
- "Home"
-ROMX $01
- "bank1"
-ROMX $02
- "bank2"
-ROMX $03
- "bank3"
-ROMX $04
- "bank4"
-ROMX $05
- "bank5"
-ROMX $06
- "Tileset Data 1"
-ROMX $07
- "Roofs"
- "Tileset Data 2"
- "Extra Songs 1"
-ROMX $08
- "Clock Reset"
- "Tileset Data 3"
- "Egg Moves"
-ROMX $09
- "bank9"
-ROMX $0a
- "bankA"
-ROMX $0b
- "bankB"
-ROMX $0c
- "Tileset Data 4"
-ROMX $0d
- "Effect Commands"
-ROMX $0e
- "Enemy Trainers"
-ROMX $0f
- "Battle Core"
-ROMX $10
- "bank10"
- "Evolutions and Attacks"
-ROMX $11
- "bank11"
-ROMX $12
- "Crystal Features 1"
-ROMX $13
- "bank13"
-ROMX $14
- "bank14"
-ROMX $15
- "Map Scripts 1"
-ROMX $16
- "Map Scripts 2"
-ROMX $17
- "Map Scripts 3"
-ROMX $18
- "Map Scripts 4"
-ROMX $19
- "Crystal Phone Text"
-ROMX $1a
- "Map Scripts 5"
-ROMX $1b
- "Map Scripts 6"
-ROMX $1c
- "Map Scripts 7"
-ROMX $1d
- "Map Scripts 8"
-ROMX $1e
- "Map Scripts 9"
-ROMX $1f
- "Map Scripts 10"
-ROMX $20
- "bank20"
-ROMX $21
- "bank21"
-ROMX $22
- "Crystal Features 2"
-ROMX $23
- "bank23"
-ROMX $24
- "bank24"
-ROMX $25
- "Maps"
- "Events"
-ROMX $26
- "Map Scripts 11"
-ROMX $27
- "Map Scripts 12"
-ROMX $28
- "Phone Scripts 1"
-ROMX $29
- "Phone Text"
-ROMX $2a
- "Map Blocks 1"
-ROMX $2b
- "Map Blocks 2"
-ROMX $2c
- "Map Blocks 3"
-ROMX $2d
- "Tileset Data 5"
-ROMX $2e
- "bank2E"
-ROMX $2f
- "Phone Scripts 2"
-ROMX $30
- "Sprites 1"
-ROMX $31
- "Sprites 2"
-ROMX $32
- "bank32"
-ROMX $33
- "Move Animations"
- "Extra Songs 2"
-ROMX $34
- "Pic Animations 1"
-ROMX $35
- "Pic Animations 2"
-ROMX $36
- "Font Inversed"
- "Pic Animations 3"
-ROMX $37
- "Tileset Data 6"
-ROMX $38
- "bank38"
-ROMX $39
- "bank39"
-ROMX $3a
- "Audio"
- "Songs 1"
-ROMX $3b
- "Songs 2"
-ROMX $3c
- "Songs 3"
- "Sound Effects"
- "Cries"
-ROMX $3d
- "Songs 4"
-ROMX $3e
- "bank3E"
-ROMX $3f
- "bank3F"
-ROMX $40
- "mobile40"
-ROMX $41
- "bank41"
-ROMX $42
- "mobile42"
- "Intro Logo"
- "Credits"
-ROMX $43
- "Title"
-ROMX $44
- "Mobile Adapter SDK"
-ROMX $45
- "mobile45"
-ROMX $46
- "mobile46"
-ROMX $47
- "Battle Tower"
-ROMX $48
- org $4000
- "Pic Pointers"
- "Pics 1"
-ROMX $49
- org $4000
- "Unown Pic Pointers"
- "Pics 2"
-ROMX $4a
- "Trainer Pic Pointers"
- "Pics 3"
-ROMX $4b
- "Pics 4"
-ROMX $4c
- "Pics 5"
-ROMX $4d
- "Pics 6"
-ROMX $4e
- "Pics 7"
-ROMX $4f
- "Pics 8"
-ROMX $50
- "Pics 9"
-ROMX $51
- "Pics 10"
-ROMX $52
- "Pics 11"
-ROMX $53
- "Pics 12"
-ROMX $54
- "Pics 13"
-ROMX $55
- "Pics 14"
-ROMX $56
- "Pics 15"
-ROMX $57
- "Pics 16"
-ROMX $58
- "Pics 17"
-ROMX $59
- "Pics 18"
-ROMX $5a
- "Pics 19"
-ROMX $5b
- "bank5B"
- "Pics 20"
-ROMX $5c
- "mobile5C"
- "Pics 21"
-ROMX $5d
- "Crystal Phone Text 2"
- "Pics 22"
-ROMX $5e
- "UpdateBattleHUDs"
- "Songs 5"
- "Crystal Sound Effects"
- "mobile5E"
- "Pics 23"
-ROMX $5f
- "mobile5F"
- "Pics 24"
-ROMX $60
- "Map Scripts 13"
- "Pokedex Entries 001-064"
-ROMX $61
- "Map Scripts 14"
-ROMX $62
- "Map Scripts 15"
-ROMX $63
- "Map Scripts 16"
-ROMX $64
- "Map Scripts 17"
-ROMX $65
- "Map Scripts 18"
-ROMX $66
- "Map Scripts 19"
-ROMX $67
- "Map Scripts 20"
-ROMX $68
- "Map Scripts 21"
-ROMX $69
- "Map Scripts 22"
-ROMX $6a
- "Map Scripts 23"
-ROMX $6b
- "Map Scripts 24"
-ROMX $6c
- "Phone Text 2"
- "Map Scripts 25"
-ROMX $6d
- "Special Phone Text"
-ROMX $6e
- "Pokedex Entries 065-128"
-ROMX $6f
- "Text 1"
-ROMX $70
- "Text 2"
-ROMX $71
- "Text 3"
-ROMX $72
- "Miscellaneous Text"
-ROMX $73
- "Pokedex Entries 129-192"
-ROMX $74
- "Pokedex Entries 193-251"
-ROMX $77
- "bank77"
- "Tileset Data 7"
- "bank77_2"
-ROMX $78
- "Tileset Data 8"
-ROMX $7b
- "Battle Tower Text"
-ROMX $7c
- "Battle Tower Trainer Data"
-ROMX $7d
- "Mobile News Data"
-ROMX $7e
- "Crystal Events"
-ROMX $7f
- org $7de0
- "Mobile Stadium 2"
-WRAM0
- "Stack"
- "Audio RAM"
- "WRAM"
- "wSpriteAnims"
- align 8
- "Sprites"
- "Tilemap"
- "Miscellaneous"
- "Overworld Map"
- "Video"
-WRAMX 1
- "WRAM 1"
- "Enemy Party"
- "Party"
-WRAMX 2
- "Pic Animations"
-WRAMX 3
- "Battle Tower RAM"
-WRAMX 5
- align 8
- "GBC Video"
- org $d300
- "Battle Animations"
- org $d800
- "Mobile RAM"
-WRAMX 6
- "Scratch RAM"
-WRAMX 7
- "Stack RAM"
-VRAM $00
- "VRAM0"
-VRAM $01
- "VRAM1"
-SRAM $00
- "Scratch"
- org $a600
- "SRAM Bank 0"
- org $b200
- "Backup Save"
-SRAM $01
- "Save"
- "Active Box"
- "Link Battle Data"
- "SRAM Hall of Fame"
- "SRAM Crystal Data"
- "SRAM Battle Tower"
-SRAM $02
- "Boxes 1-7"
-SRAM $03
- "Boxes 8-14"
-SRAM $04
- "SRAM Mobile 1"
-SRAM $05
- "SRAM Mobile 2"
-SRAM $06
- "SRAM Mobile 3"
-HRAM
- "HRAM"
--- /dev/null
+++ b/rgbdscheck.asm
@@ -1,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
--- a/wram.asm
+++ b/wram.asm
@@ -1176,8 +1176,7 @@
NEXTU ; cd20
; credits
-wCreditsPos:: db
-wCreditsUnusedCD21:: db
+wCreditsPos:: dw
wCreditsTimer:: db
NEXTU ; cd20