diff options
-rw-r--r-- | Makefile | 34 | ||||
-rw-r--r-- | data/trainers/parties.asm | 115 | ||||
-rw-r--r-- | engine/menu/main_menu.asm | 69 | ||||
-rwxr-xr-x | tools/sort_symfile.sh | 10 |
4 files changed, 191 insertions, 37 deletions
@@ -15,7 +15,8 @@ RGBFIX := rgbfix RGBASMFLAGS := -h -E -i $(BUILD)/ tools/gfx := tools/make_shim := -sort_sym := $(PYTHON3) tools/sort_sym.py +sort_sym := tools/sort_symfile.sh +#sort_sym := $(PYTHON3) tools/sort_sym.py ROM := poke$(BUILD_NAME)-spaceworld.gb ROMS := $(foreach r, gold gold_debug silver silver_debug, poke$(r)-spaceworld.gb) @@ -40,11 +41,20 @@ GFX := $(patsubst %.png, $(BUILD)/%.2bpp, \ .SECONDEXPANSION: .PHONY: all -all: $(ROM) $(CORRECTEDROM) +all: $(ROM) $(CORRECTEDROM) compare + +.PHONY: compare +compare: $(ROMS) + $(MD5) roms.md5 + .PHONY: tools tools tools/pkmncompress tools/gfx: $(MAKE) -C tools/ +.PHONY: coverage +coverage: tools/disasm_coverage.py $(ROM) + $(PYTHON3) $< -m $(ROM:.gb=.map) -b 0x40 + # Remove files generated by the build process. .PHONY: clean clean: @@ -57,10 +67,14 @@ mostlyclean: rm -rf $(ROMS) $(OBJS) $(ROMS:.gb=.sym) $(ROMS:.gb=.map) $(CORRECTEDROMS) find . \( -iname '*.d' \) -exec rm {} + -$(ROM): $(OBJS) +$(ROM): $(OBJS) | $(BASEROM) $(RGBLINK) -d -n $(@:.gb=.sym) -m $(@:.gb=.map) -O $(BASEROM) -o $@ $^ $(RGBFIX) -f lh -k 01 -l 0x33 -m 0x03 -p 0 -r 3 -t "POKEMON2$(GAME_VERSION)" $@ - -$(sort_sym) $(@:.gb=.sym) + $(sort_sym) $(@:.gb=.sym) + +$(BASEROM): + @echo "Please obtain a copy of Gold_debug.sgb and put it in this directory as $@" + @exit 1 $(BUILD)/shim.asm: tools/make_shim $(SHIM) tools/make_shim | $$(dir $$@) tools/make_shim -w $(filter-out $<, $^) > $@ @@ -68,10 +82,6 @@ $(CORRECTEDROM): %-correctheader.gb: %.gb cp $< $@ $(RGBFIX) -f hg -m 0x10 $@ -.PHONY: coverage -coverage: $(ROM) - $(PYTHON3) tools/disasm_coverage.py -m $(ROM:.gb=.map) -b 0x40 - $(BUILD)/gfx.o: | $(GFX) $(BUILD)/%.o: $(BUILD)/%.asm | $$(dir $$@) $(RGBASM) $(RGBASMFLAGS) -M $(@:.o=.d) $(OUTPUT_OPTION) $< @@ -114,12 +124,12 @@ $(BUILD)/%.tilemap: %.png | $$(dir $$@) -include $(call rwildcard, $(BUILD)/, *.d) #gold: ; @$(MAKE) GAME_VERSION=GOLD -gold_debug: ; @$(MAKE) GAME_VERSION=GOLD DEBUG=1 +#gold_debug: ; @$(MAKE) GAME_VERSION=GOLD DEBUG=1 #silver: ; @$(MAKE) GAME_VERSION=SILVER #silver_debug: ; @$(MAKE) GAME_VERSION=SILVER DEBUG=1 -compare: ; +#compare: ; # @$(MAKE) GAME_VERSION=GOLD COMPARE=1 - @$(MAKE) GAME_VERSION=GOLD DEBUG=1 COMPARE=1 +# @$(MAKE) GAME_VERSION=GOLD DEBUG=1 COMPARE=1 # @$(MAKE) GAME_VERSION=SILVER COMPARE=1 # @$(MAKE) GAME_VERSION=SILVER DEBUG=1 COMPARE=1 - @$(MD5) roms.md5 +# @$(MD5) roms.md5 diff --git a/data/trainers/parties.asm b/data/trainers/parties.asm index f91aba7..4514b38 100644 --- a/data/trainers/parties.asm +++ b/data/trainers/parties.asm @@ -17,8 +17,21 @@ INCLUDE "data/trainers/party_pointers.inc" if def(GOLD) HayatoGroup:: +; Leftover Youngster data from Red/Blue + db 11, MON_KORATTA, MON_ARBO, 0 + db 14, MON_ONISUZUME, 0 + db 10, MON_KORATTA, MON_KORATTA, MON_ZUBAT, 0 + db 14, MON_KORATTA, MON_ARBO, MON_ZUBAT, 0 + db 15, MON_KORATTA, MON_ONISUZUME, 0 + db 17, MON_YADON, 0 + db 14, MON_ARBO, MON_SAND, 0 + db 21, MON_NIDORAN_M, 0 + db 21, MON_ARBO, 0 + db 19, MON_SAND, MON_ZUBAT, 0 + db 17, MON_KORATTA, MON_KORATTA, MON_RATTA, 0 + db 18, MON_NIDORAN_M, MON_NIDORINO, 0 + db 17, MON_ONISUZUME, MON_KORATTA, MON_KORATTA, MON_ONISUZUME, 0 -SECTION "Trainer Parties 1 TEMPORARY", ROMX[$51BF],BANK[$E] AkaneGroup:: BugCatcherBoyGroup:: ; BUG_CATCHER_BOY_JUNICHI @@ -98,31 +111,114 @@ OkeraGroup:: db 19, MON_KORATTA, MON_DIGDA, MON_ARBO, MON_SAND, 0 db 29, MON_NIDORAN_M, MON_NIDORINO, 0 -SECTION "Trainer Parties 4 TEMPORARY", ROMX[$52B4],BANK[$E] MikanGroup:: +; Leftover Jr.Trainer♀ data from Red/Blue + db 19, MON_TOSAKINTO, 0 + db 16, MON_KORATTA, MON_PIKACHU, 0 + db 16, MON_POPPO, MON_POPPO, MON_POPPO, 0 + db 22, MON_FUSHIGIDANE, 0 + db 18, MON_NAZONOKUSA, MON_MADATSUBOMI, MON_NAZONOKUSA, MON_MADATSUBOMI, 0 + db 23, MON_NYARTH, 0 + db 20, MON_PIKACHU, MON_PIPPI, 0 + db 21, MON_POPPO, MON_PIGEON, 0 + db 21, MON_PURIN, MON_POPPO, MON_NYARTH, 0 + db 22, MON_NAZONOKUSA, MON_FUSHIGIDANE, 0 + db 24, MON_FUSHIGIDANE, MON_FUSHIGISOU, 0 + db 24, MON_POPPO, MON_NYARTH, MON_KORATTA, MON_PIKACHU, MON_NYARTH, 0 + db 30, MON_NYOROMO, MON_NYOROMO, 0 + db 27, MON_POPPO, MON_NYARTH, MON_POPPO, MON_PIGEON, 0 + db 28, MON_TOSAKINTO, MON_NYOROMO, MON_TATTU, 0 + db 31, MON_TOSAKINTO, MON_AZUMAO, 0 + db 22, MON_MADATSUBOMI, MON_PIPPI, 0 + db 20, MON_NYARTH, MON_NAZONOKUSA, MON_POPPO, 0 + db 19, MON_POPPO, MON_KORATTA, MON_KORATTA, MON_MADATSUBOMI, 0 + db 28, MON_KUSAIHANA, MON_NAZONOKUSA, MON_NAZONOKUSA, 0 + db 29, MON_PIKACHU, MON_RAICHU, 0 + db 33, MON_PIPPI, 0 + db 29, MON_MADATSUBOMI, MON_NAZONOKUSA, MON_MONJARA, 0 + db 30, MON_MENOKURAGE, MON_TATTU, MON_PAWOU, 0 -SECTION "Trainer Parties 5 TEMPORARY", ROMX[$5320],BANK[$E] BlueGroup:: +; Leftover Pokémaniac data from Red/Blue + db 30, MON_SIHORN, MON_BERORINGA, 0 + db 20, MON_KARAKARA, MON_YADON, 0 + db 20, MON_YADON, MON_YADON, MON_YADON, 0 + db 22, MON_HITOKAGE, MON_KARAKARA, 0 + db 25, MON_YADON, 0 + db 40, MON_LIZARDO, MON_LAPLACE, MON_BERORINGA, 0 + db 23, MON_KARAKARA, MON_YADON, 0 -SECTION "Trainer Parties 6 TEMPORARY", ROMX[$533D],BANK[$E] GamaGroup:: +; Leftover Super Nerd data from Red/Blue + db 11, MON_COIL, MON_BIRIRIDAMA, 0 + db 12, MON_BETBETER, MON_BIRIRIDAMA, MON_DOGARS, 0 + db 20, MON_BIRIRIDAMA, MON_DOGARS, MON_BIRIRIDAMA, MON_COIL, 0 + db 22, MON_BETBETER, MON_BETBETON, MON_BETBETER, 0 + db 26, MON_DOGARS, 0 + db 22, MON_DOGARS, MON_COIL, MON_MATADOGAS, 0 + db 20, MON_COIL, MON_COIL, MON_DOGARS, MON_COIL, 0 + db 24, MON_COIL, MON_BIRIRIDAMA, 0 + db 36, MON_ROKON, MON_ROKON, MON_KYUKON, 0 + db 34, MON_PONYTA, MON_HITOKAGE, MON_ROKON, MON_GARDIE, 0 + db 41, MON_GALLOP, 0 + db 37, MON_GARDIE, MON_ROKON, 0 -SECTION "Trainer Parties 7 TEMPORARY", ROMX[$5375],BANK[$E] RivalGroup:: db 5, DEX_KURUSU, 0 db 5, DEX_HAPPA, 0 db 5, DEX_HONOGUMA, 0 +; Leftover Hiker data from Red/Blue + db 10, MON_ISITSUBUTE, MON_ISITSUBUTE, MON_IWARK, 0 + db 15, MON_WANRIKY, MON_ISITSUBUTE, 0 + db 13, MON_ISITSUBUTE, MON_ISITSUBUTE, MON_WANRIKY, MON_ISITSUBUTE, 0 + db 17, MON_IWARK, 0 + db 21, MON_ISITSUBUTE, MON_IWARK, 0 + db 20, MON_ISITSUBUTE, MON_WANRIKY, MON_ISITSUBUTE, 0 + db 21, MON_ISITSUBUTE, MON_IWARK, 0 + db 19, MON_IWARK, MON_GOLONE, 0 + db 21, MON_ISITSUBUTE, MON_ISITSUBUTE, MON_GOLONE, 0 + db 25, MON_ISITSUBUTE, 0 + db 20, MON_WANRIKY, MON_IWARK, 0 + db 19, MON_ISITSUBUTE, MON_WANRIKY, MON_ISITSUBUTE, MON_ISITSUBUTE, 0 + db 20, MON_IWARK, MON_IWARK, MON_ISITSUBUTE, 0 + db 21, MON_ISITSUBUTE, MON_GOLONE, 0 -SECTION "Trainer Parties 8 TEMPORARY", ROMX[$53BC],BANK[$E] OkidoGroup:: +; Leftover Biker data from Red/Blue + db 28, MON_DOGARS, MON_DOGARS, MON_DOGARS, 0 + db 29, MON_DOGARS, MON_BETBETER, 0 + db 25, MON_DOGARS, MON_DOGARS, MON_MATADOGAS, MON_DOGARS, MON_BETBETER, 0 + db 28, MON_DOGARS, MON_BETBETER, MON_MATADOGAS, 0 + db 29, MON_BETBETER, MON_DOGARS, 0 + db 33, MON_MATADOGAS, 0 + db 26, MON_BETBETER, MON_BETBETER, MON_BETBETER, MON_BETBETER, 0 + db 28, MON_MATADOGAS, MON_DOGARS, MON_MATADOGAS, 0 + db 33, MON_BETBETON, 0 + db 29, MON_BIRIRIDAMA, MON_BIRIRIDAMA, 0 + db 29, MON_MATADOGAS, MON_BETBETON, 0 + db 25, MON_DOGARS, MON_MATADOGAS, MON_DOGARS, MON_DOGARS, MON_MATADOGAS, 0 + db 26, MON_DOGARS, MON_DOGARS, MON_BETBETER, MON_DOGARS, 0 + db 28, MON_BETBETER, MON_BETBETER, MON_DOGARS, 0 + db 29, MON_DOGARS, MON_BETBETON, 0 -SECTION "Trainer Parties 9 TEMPORARY", ROMX[$5404],BANK[$E] SakakiGroup:: +; Leftover Burglar data from Red/Blue + db 29, MON_GARDIE, MON_ROKON, 0 + db 33, MON_GARDIE, 0 + db 28, MON_ROKON, MON_HITOKAGE, MON_PONYTA, 0 + db 36, MON_GARDIE, MON_ROKON, MON_KYUKON, 0 + db 41, MON_PONYTA, 0 + db 37, MON_ROKON, MON_GARDIE, 0 + db 34, MON_HITOKAGE, MON_LIZARDO, 0 + db 38, MON_KYUKON, 0 + db 34, MON_GARDIE, MON_PONYTA, 0 -SECTION "Trainer Parties 10 TEMPORARY", ROMX[$5427],BANK[$E] ProtagonistGroup:: +; Leftover Engineer data from Red/Blue + db 21, MON_BIRIRIDAMA, MON_COIL, 0 + db 21, MON_COIL, 0 + db 18, MON_COIL, MON_COIL, MON_RARECOIL, 0 -SECTION "Trainer Parties 11 TEMPORARY", ROMX[$5433],BANK[$E] SibaGroup:: KasumiGroup:: FisherGroup:: @@ -249,7 +345,6 @@ BikerGroup:: db 38, MON_GHOST, 0 db 33, MON_GHOS, MON_GHOS, MON_GHOST, 0 -SECTION "Trainer Parties 31 TEMPORARY", ROMX[$5956],BANK[$E] RockClimberGroup:: ; Leftover Agatha data from Red/Blue db -1, 56, MON_GANGAR, 56, MON_GOLBAT, 55, MON_GHOST, 58, MON_ARBOK, 60, MON_GANGAR, 0 diff --git a/engine/menu/main_menu.asm b/engine/menu/main_menu.asm index 536123f..8a37093 100644 --- a/engine/menu/main_menu.asm +++ b/engine/menu/main_menu.asm @@ -4,22 +4,61 @@ SECTION "Main Menu Definition", ROMX[$5418], BANK[$01] MainMenuHeader: db $40 - db $00, $00, $07, $0d - dw .data + menu_coords 0, 0, 13, 7 + dw .MenuData db 1 ; default option -.data +.MenuData: ; 01:5420 db $80 - db 0 ; number of options - - dw $5461 + db 0 ; items + dw MainMenuItems db $8a, $1f - dw MainMenuStrings - -MainMenuStrings: ; 01:5428 - db "つづきから はじめる@" - db "さいしょから はじめる@" - db "せっていを かえる@" - db "#を あそぶ@" - db "じかんセット@" -; 01:5457 + dw .Strings + +.Strings: ; 01:5428 + db "つづきから はじめる@" + db "さいしょから はじめる@" + db "せっていを かえる@" + db "#を あそぶ@" + db "じかんセット@" + +MainMenuJumptable: ; 01:5457 + dw $547c + dw $555c + dw $5cf3 + dw $555c + dw $5473 + +CONTINUE EQU 0 +NEW_GAME EQU 1 +OPTION EQU 2 +PLAY_POKEMON EQU 3 +SET_TIME EQU 4 + +MainMenuItems: + +NewGameMenu: + db 2 + db NEW_GAME + db OPTION + db -1 + +ContinueMenu: + db 3 + db CONTINUE + db NEW_GAME + db OPTION + db -1 + +PlayPokemonMenu: + db 2 + db PLAY_POKEMON + db OPTION + db -1 + +PlayPokemonSetTimeMenu: + db 3 + db PLAY_POKEMON + db OPTION + db SET_TIME + db -1 diff --git a/tools/sort_symfile.sh b/tools/sort_symfile.sh new file mode 100755 index 0000000..d53150f --- /dev/null +++ b/tools/sort_symfile.sh @@ -0,0 +1,10 @@ +#!/bin/sh +sed $1 \ + -e "s/^..:[0-3]/0_ROM0@&/g" \ + -e "s/^..:[4-7]/1_ROMX@&/g" \ + -e "s/^..:[8-9]/2_VRAM@&/g" \ + -e "s/^..:[A-B]/3_SRAM@&/g" \ + -e "s/^00:[C-D]/4_WRAM0@&/g" \ + -e "s/^..:[D-D]/5_WRAMX@&/g" \ +| sort -o $1 +sed -i $1 -e "s/^\w*@//g" |