Skip to content

Commit ad2f673

Browse files
committed
z4: added ng+ route
1 parent 0a8c30d commit ad2f673

File tree

3 files changed

+218
-10
lines changed

3 files changed

+218
-10
lines changed

Z4/cfg/z4-stageselectcfg.asm

Lines changed: 152 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,24 @@
1212
1313
CHIP_NONE equ 0xFF
1414
15-
UNLFOOT_DBLJUMP equ 0x00002200
16-
15+
; Unlocked chips
16+
17+
UNLHEAD_JUNK equ 0x00220000 ; Part 1
18+
19+
UNLBODY_JUNK equ 0x00000088 ; Part 2
20+
21+
UNLFOOT_DBLJUMP equ 0x00002200 ; Part 2
22+
UNLFOOT_JUNK equ 0x00440000 ; Part 2
23+
24+
; Equipped chips
25+
26+
HEAD_JUNK equ 0x9
27+
28+
BODY_JUNK equ 0x13
29+
1730
FOOT_DBLJUMP equ 0x15
18-
31+
FOOT_JUNK equ 0x1A
32+
1933
EX_TIMESTOPPER equ 0x1
2034
EX_TRACTORSHOT equ 0x2
2135
EX_BURNINGSHOT equ 0x4
@@ -53,6 +67,10 @@
5367
EQUEX_J_PEGASOLTA equ EX_TIMESTOPPER + EX_FLAMEFANG + EX_ICEBLADE + EX_SKYCHASER
5468
EQUEX_J_MINO equ EX_FLAMEFANG + EX_ICEBLADE + EX_SKYCHASER + EX_ICEJAVELIN
5569
70+
UNLEX_NGPLUS equ EX_TIMESTOPPER + EX_FLAMEFANG + EX_ICEBLADE + EX_SKYCHASER + EX_ICEJAVELIN + EX_TRACTORSHOT + EX_BURNINGSHOT
71+
72+
EQUEX_NGPLUS_1 equ EX_TIMESTOPPER + EX_FLAMEFANG + EX_ICEBLADE + EX_SKYCHASER
73+
EQUEX_NGPLUS_2 equ EX_ICEJAVELIN + EX_FLAMEFANG + EX_ICEBLADE + EX_SKYCHASER
5674
5775
ELF_NONE equ 0xFF
5876
ELF_CROIRE equ 0x3
@@ -491,14 +509,122 @@
491509
.db 7 ; Cyber elf capacity
492510
.db ELF_CROIRE ; Cyber elf name
493511
512+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
513+
; NG+
514+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
515+
516+
; Intro NG+
517+
INDEX_INTRO_NGPLUS equ (INDEX_FINAL+1)
518+
.db 0 ; Gangagun parts
519+
.db 0 ; C-Hopper parts
520+
.db 0 ; Gyro Cannon H parts
521+
.db 0 ; Faital parts
522+
.dw UNLHEAD_JUNK ; Unlocked chips, part 1
523+
.dw UNLBODY_JUNK + UNLFOOT_JUNK + UNLFOOT_DBLJUMP ; Unlocked chips, part 2
524+
525+
.dh 0 ; E-crystals
526+
.db 32,32,SUBT_NONE,SUBT_NONE ; Subtanks
527+
.db WEP_BUSTER ; Main weapon
528+
.db WEP_KNUCKLE ; Sub weapon
529+
.dh 0 ; Knuckle equipment things
530+
.db CHIP_NONE,CHIP_NONE,CHIP_NONE ; Equipped chips
531+
.db 0 ; Hard/ultimate mode flag
532+
.dh 0 ; Equipped EX skills
533+
.dh UNLEX_NGPLUS ; Unlocked EX skills
534+
535+
.db 0 ; Cyber elf level
536+
.db 0 ; Nurse level
537+
.db 0 ; Animal level
538+
.db 0 ; Hacker level
539+
.db 8 ; Cyber elf capacity
540+
.db ELF_CROIRE ; Cyber elf name
541+
542+
; NG+ Setup 1
543+
INDEX_NGPLUS_BUSTER1 equ (INDEX_INTRO_NGPLUS+1)
544+
.db 0 ; Gangagun parts
545+
.db 0 ; C-Hopper parts
546+
.db 0 ; Gyro Cannon H parts
547+
.db 0 ; Faital parts
548+
.dw UNLHEAD_JUNK ; Unlocked chips, part 1
549+
.dw UNLBODY_JUNK + UNLFOOT_JUNK + UNLFOOT_DBLJUMP ; Unlocked chips, part 2
550+
551+
.dh 0 ; E-crystals
552+
.db 32,32,SUBT_NONE,SUBT_NONE ; Subtanks
553+
.db WEP_BUSTER ; Main weapon
554+
.db WEP_SABER ; Sub weapon
555+
.dh 0 ; Knuckle equipment things
556+
.db HEAD_JUNK,BODY_JUNK,FOOT_JUNK ; Equipped chips
557+
.db 0 ; Hard/ultimate mode flag
558+
.dh EQUEX_NGPLUS_1 ; Equipped EX skills
559+
.dh UNLEX_NGPLUS ; Unlocked EX skills
560+
561+
.db 0 ; Cyber elf level
562+
.db 0 ; Nurse level
563+
.db 0 ; Animal level
564+
.db 0 ; Hacker level
565+
.db 8 ; Cyber elf capacity
566+
.db ELF_CROIRE ; Cyber elf name
567+
568+
; NG+ Setup 2
569+
INDEX_NGPLUS_BUSTER2 equ (INDEX_NGPLUS_BUSTER1+1)
570+
.db 0 ; Gangagun parts
571+
.db 0 ; C-Hopper parts
572+
.db 0 ; Gyro Cannon H parts
573+
.db 0 ; Faital parts
574+
.dw UNLHEAD_JUNK ; Unlocked chips, part 1
575+
.dw UNLBODY_JUNK + UNLFOOT_JUNK + UNLFOOT_DBLJUMP ; Unlocked chips, part 2
576+
577+
.dh 0 ; E-crystals
578+
.db 32,32,SUBT_NONE,SUBT_NONE ; Subtanks
579+
.db WEP_BUSTER ; Main weapon
580+
.db WEP_SABER ; Sub weapon
581+
.dh 0 ; Knuckle equipment things
582+
.db HEAD_JUNK,BODY_JUNK,FOOT_JUNK ; Equipped chips
583+
.db 0 ; Hard/ultimate mode flag
584+
.dh EQUEX_NGPLUS_2 ; Equipped EX skills
585+
.dh UNLEX_NGPLUS ; Unlocked EX skills
586+
587+
.db 0 ; Cyber elf level
588+
.db 0 ; Nurse level
589+
.db 0 ; Animal level
590+
.db 0 ; Hacker level
591+
.db 8 ; Cyber elf capacity
592+
.db ELF_CROIRE ; Cyber elf name
593+
594+
; NG+ Setup 2
595+
INDEX_NGPLUS_KNUCKLE2 equ (INDEX_NGPLUS_BUSTER2+1)
596+
.db 0 ; Gangagun parts
597+
.db 0 ; C-Hopper parts
598+
.db 0 ; Gyro Cannon H parts
599+
.db 0 ; Faital parts
600+
.dw UNLHEAD_JUNK ; Unlocked chips, part 1
601+
.dw UNLBODY_JUNK + UNLFOOT_JUNK + UNLFOOT_DBLJUMP ; Unlocked chips, part 2
602+
603+
.dh 0 ; E-crystals
604+
.db 32,32,SUBT_NONE,SUBT_NONE ; Subtanks
605+
.db WEP_KNUCKLE ; Main weapon
606+
.db WEP_SABER ; Sub weapon
607+
.dh 0 ; Knuckle equipment things
608+
.db HEAD_JUNK,BODY_JUNK,FOOT_JUNK ; Equipped chips
609+
.db 0 ; Hard/ultimate mode flag
610+
.dh EQUEX_NGPLUS_2 ; Equipped EX skills
611+
.dh UNLEX_NGPLUS ; Unlocked EX skills
612+
613+
.db 0 ; Cyber elf level
614+
.db 0 ; Nurse level
615+
.db 0 ; Animal level
616+
.db 0 ; Hacker level
617+
.db 8 ; Cyber elf capacity
618+
.db ELF_CROIRE ; Cyber elf name
619+
494620
.endarea
495621
496622
.org REG_STAGE_SETTING_POINTERS
497623
.area REG_STAGE_SETTING_POINTERS_AREA
498624
499625
; Pointers in stage index order
500626
501-
; Route 1
627+
; Route 1 (No Junk)
502628
503629
.dw REG_STAGE_SELECT_CFG+(SETTINGS_SIZE*INDEX_INTRO)
504630
.dw REG_STAGE_SELECT_CFG+(SETTINGS_SIZE*INDEX_INTRO2)
@@ -517,7 +643,7 @@
517643
.dw REG_STAGE_SELECT_CFG+(SETTINGS_SIZE*INDEX_CYBALL)
518644
.dw REG_STAGE_SELECT_CFG+(SETTINGS_SIZE*INDEX_FINAL)
519645
520-
; Route 2
646+
; Route 2 (Junk)
521647
522648
.dw REG_STAGE_SELECT_CFG+(SETTINGS_SIZE*INDEX_INTRO)
523649
.dw REG_STAGE_SELECT_CFG+(SETTINGS_SIZE*INDEX_INTRO2)
@@ -535,8 +661,27 @@
535661
.dw REG_STAGE_SELECT_CFG+(SETTINGS_SIZE*INDEX_RANDAM)
536662
.dw REG_STAGE_SELECT_CFG+(SETTINGS_SIZE*INDEX_CYBALL)
537663
.dw REG_STAGE_SELECT_CFG+(SETTINGS_SIZE*INDEX_FINAL)
538-
539-
; Route 3 (custom)
664+
665+
; Route 3 (NG+)
666+
667+
.dw REG_STAGE_SELECT_CFG+(SETTINGS_SIZE*INDEX_INTRO_NGPLUS)
668+
.dw REG_STAGE_SELECT_CFG+(SETTINGS_SIZE*INDEX_NGPLUS_BUSTER1)
669+
.dw REG_STAGE_SELECT_CFG+(SETTINGS_SIZE*INDEX_NGPLUS_BUSTER1)
670+
.dw REG_STAGE_SELECT_CFG+(SETTINGS_SIZE*INDEX_NGPLUS_BUSTER1)
671+
.dw REG_STAGE_SELECT_CFG+(SETTINGS_SIZE*INDEX_NGPLUS_BUSTER1)
672+
.dw REG_STAGE_SELECT_CFG+(SETTINGS_SIZE*INDEX_NGPLUS_KNUCKLE2)
673+
.dw REG_STAGE_SELECT_CFG+(SETTINGS_SIZE*INDEX_NGPLUS_BUSTER1)
674+
.dw REG_STAGE_SELECT_CFG+(SETTINGS_SIZE*INDEX_NGPLUS_BUSTER1)
675+
.dw REG_STAGE_SELECT_CFG+(SETTINGS_SIZE*INDEX_NGPLUS_BUSTER2)
676+
.dw REG_STAGE_SELECT_CFG+(SETTINGS_SIZE*INDEX_NGPLUS_BUSTER2)
677+
.dw REG_STAGE_SELECT_CFG+(SETTINGS_SIZE*INDEX_NGPLUS_BUSTER2)
678+
.dw REG_STAGE_SELECT_CFG+(SETTINGS_SIZE*INDEX_NGPLUS_BUSTER2)
679+
.dw REG_STAGE_SELECT_CFG+(SETTINGS_SIZE*INDEX_NGPLUS_BUSTER1)
680+
.dw REG_STAGE_SELECT_CFG+(SETTINGS_SIZE*INDEX_NGPLUS_KNUCKLE2)
681+
.dw REG_STAGE_SELECT_CFG+(SETTINGS_SIZE*INDEX_NGPLUS_KNUCKLE2)
682+
.dw REG_STAGE_SELECT_CFG+(SETTINGS_SIZE*INDEX_NGPLUS_KNUCKLE2)
683+
684+
; Route 4 (custom)
540685
541686
; .dw ADDR_STORED_CUSTOM_ROUTE_CFG+(SETTINGS_SIZE*INDEX_INTRO) ; Intro
542687
; .dw ADDR_STORED_CUSTOM_ROUTE_CFG+(SETTINGS_SIZE*INDEX_FLIZARD) ; Flizard

Z4/z4-regions.asm

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,6 @@
3636
REG_STAGE_SETTING_POINTERS equ REG_STAGE_SELECT_CFG + REG_STAGE_SELECT_CFG_AREA
3737
REG_STAGE_SETTING_POINTERS_AREA equ 0x100
3838
REG_STAGE_SETTING_WEATHER equ REG_STAGE_SETTING_POINTERS + REG_STAGE_SETTING_POINTERS_AREA
39-
REG_STAGE_SETTING_WEATHER_AREA equ 0x20
39+
REG_STAGE_SETTING_WEATHER_AREA equ 0x20
40+
REG_WEATHER_VALUES equ REG_STAGE_SETTING_WEATHER + REG_STAGE_SETTING_WEATHER_AREA
41+
REG_WEATHER_VALUES_AREA equ 0x10

Z4/z4-stageselect.asm

Lines changed: 63 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@
44
; Stage select menu x position offsets
55
MENU_OFFSET equ 8
66
CURSOR_OFFSET equ 7
7+
78
GAMESTATE_MENU equ 0x28
89
GAMESTATE_MENU_2 equ (GAMESTATE_MENU+1)
910
GAMESTATE_MENU_3 equ (GAMESTATE_MENU_2+1)
11+
GAMESTATE_MENU_4 equ (GAMESTATE_MENU_3+1)
1012
1113
WEATHER_GENBLEM_HARD equ 0x10
1214
WEATHER_GENBLEM_EASY equ 0x3
@@ -78,6 +80,7 @@
7880
.dw 0x08117E61 ; 27
7981
.dw REG_STAGE_SELECT_MENU+1 ; 28
8082
.dw REG_STAGE_SELECT_MENU+1 ; 29
83+
.dw REG_STAGE_SELECT_MENU+1 ; 2A
8184
; Stage select subroutine here
8285
.endarea
8386
@@ -291,7 +294,7 @@
291294
beq @@check_for_r
292295
ldr r0,=#ADDR_GAMESTATE
293296
ldrb r1,[r0]
294-
cmp r1,#GAMESTATE_MENU_2
297+
cmp r1,#GAMESTATE_MENU_3
295298
bne @@gamestate_nowrap
296299
mov r1,#GAMESTATE_MENU
297300
b @@store_changed_gamestate
@@ -439,10 +442,16 @@
439442
cmp r6,#0xA
440443
bgt @@no_weather
441444
sub r6,3
445+
ldr r4,=#ADDR_GAMESTATE
446+
ldrb r4,[r4]
447+
sub r4,#GAMESTATE_MENU
448+
mov r5,#0x8
449+
mul r4,r5
442450
ldr r5,=#REG_STAGE_SETTING_WEATHER
451+
add r5,r4,r5
443452
add r4,r5,r6
444453
ldrb r4,[r4]
445-
add r5,#0x8
454+
ldr r5,=#REG_WEATHER_VALUES
446455
mov r3,#0x2
447456
mul r3,r6
448457
add r5,r5,r3
@@ -570,6 +579,27 @@
570579
.db 0xE ; Cyball
571580
.db 0xF ; Final
572581
.db 0x10 ; Commander room
582+
.align 4
583+
584+
; Route 3
585+
586+
.db 0x0 ; Intro
587+
.db 0x1 ; Intro 2
588+
.db 0x3 ; Genblem
589+
.db 0x2 ; Kraken
590+
.db 0x4 ; Pegasolta
591+
.db 0x9 ; Mandrago
592+
.db 0xA ; Titanion
593+
.db 0xB ; Fenri
594+
.db 0x5 ; Mino
595+
.db 0x8 ; Popla
596+
.db 0x6 ; Craft 1
597+
.db 0x7 ; HELL THE GIANT
598+
.db 0xC ; Craft 2
599+
.db 0xD ; Randam
600+
.db 0xE ; Cyball
601+
.db 0xF ; Final
602+
.db 0x10 ; Commander room
573603
.align 2
574604
575605
show_menu:
@@ -734,6 +764,25 @@ show_menu:
734764
.db 0xF ; Cyball
735765
.db 0x10 ; Final
736766
.db 0x11 ; Commander room
767+
.align 4
768+
769+
.db 0x1 ; Intro
770+
.db 0x2 ; Intro 2
771+
.db 0x4 ; Kraken
772+
.db 0x3 ; Genblem
773+
.db 0x5 ; Pegasolta
774+
.db 0x9 ; Mino
775+
.db 0xB ; Craft 1
776+
.db 0xC ; HELL THE GIANT
777+
.db 0xA ; Popla
778+
.db 0x6 ; Mandrago
779+
.db 0x7 ; Titanion
780+
.db 0x8 ; Fenri
781+
.db 0xD ; Craft 2
782+
.db 0xE ; Randam
783+
.db 0xF ; Cyball
784+
.db 0x10 ; Final
785+
.db 0x11 ; Commander room
737786
738787
.endarea
739788
@@ -744,14 +793,26 @@ show_menu:
744793
.org REG_STAGE_SELECT_ROUTE_NAMES+0x20*1
745794
.asciiz "JUNK"
746795
.org REG_STAGE_SELECT_ROUTE_NAMES+0x20*2
796+
.asciiz "NG+"
797+
.org REG_STAGE_SELECT_ROUTE_NAMES+0x20*3
747798
.asciiz "CUSTOM"
748799
749800
.endarea
750801
751802
.org REG_STAGE_SETTING_WEATHER
752803
.area REG_STAGE_SETTING_WEATHER_AREA
753804
805+
; No Junk
754806
.db 0,0,1,0,1,0,0,0
807+
; Junk (TODO)
808+
.db 0,0,0,0,0,0,0,0
809+
; NG+
810+
.db 1,0,1,1,1,1,0,1
811+
812+
.endarea
813+
814+
.org REG_WEATHER_VALUES
815+
.area REG_WEATHER_VALUES_AREA
755816
756817
.db WEATHER_GENBLEM_HARD
757818
.db WEATHER_GENBLEM_EASY

0 commit comments

Comments
 (0)