diff --git a/resources/cm_gfx.bin b/resources/cm_gfx.bin
index 1d865310..1a7a007b 100644
Binary files a/resources/cm_gfx.bin and b/resources/cm_gfx.bin differ
diff --git a/resources/cm_gfx2.bin b/resources/cm_gfx2.bin
index a2718030..37b3698d 100644
Binary files a/resources/cm_gfx2.bin and b/resources/cm_gfx2.bin differ
diff --git a/resources/spritegfx.pal b/resources/spritegfx.pal
new file mode 100644
index 00000000..810acf45
Binary files /dev/null and b/resources/spritegfx.pal differ
diff --git a/src/customizemenu.asm b/src/customizemenu.asm
index 930942f0..602b76b3 100644
--- a/src/customizemenu.asm
+++ b/src/customizemenu.asm
@@ -321,7 +321,7 @@ mc_dynamic_custompalettes_menu:
dw #mc_choosecustomtext
mc_custompalettes_menu:
- %cm_submenu("Customize Menu Palette", #CustomPalettesMenu)
+ %cm_jsl("Customize Menu Palette", mc_prepare_custom_palettes_menu, #CustomPalettesMenu)
mc_choosecustomtext:
%cm_jsl("Choose CUSTOM to customize", #.routine, #$0000)
@@ -609,6 +609,13 @@ mc_customheader:
.done
RTL
+mc_prepare_custom_palettes_menu:
+ TDC : STA !ram_cm_dummy_off
+ INC : STA !ram_cm_dummy_on
+ LDA #$00FF : STA !ram_cm_dummy_num
+ %setmenubank()
+ JML action_submenu
+
CustomPalettesMenu:
dw #custompalettes_text
dw #custompalettes_seltext
@@ -624,44 +631,44 @@ CustomPalettesMenu:
dw #$FFFF
dw #$FFFF
dw #$FFFF
- dw #$FFFF
%examplemenu() ; inserts dummy menu items for display purposes
+ dw #$FFFF
dw #mc_custompalettes_test_menu
dw #$0000
%cm_header("CUSTOMIZE MENU PALETTE")
custompalettes_text:
- %palettemenu("Text", PalettesMenu_text, !sram_palette_text)
+ %palettemenu("Text", PalettesMenu_text, !sram_palette_text, #$2894)
custompalettes_seltext:
- %palettemenu("Selected Text", PalettesMenu_seltext, !sram_palette_seltext)
+ %palettemenu("Selected Text", PalettesMenu_seltext, !sram_palette_seltext, #$3894)
custompalettes_seltextbg:
- %palettemenu("Selected Text Background", PalettesMenu_seltextbg, !sram_palette_seltextbg)
+ %palettemenu("Selected Text Background", PalettesMenu_seltextbg, !sram_palette_seltextbg, #$381F)
custompalettes_headerline:
- %palettemenu("Header Outline", PalettesMenu_headerline, !sram_palette_headeroutline)
+ %palettemenu("Header Outline", PalettesMenu_headerline, !sram_palette_headeroutline, #$2891)
custompalettes_numfill:
- %palettemenu("Number Field Text", PalettesMenu_numfill, !sram_palette_numfill)
+ %palettemenu("Number Field Text", PalettesMenu_numfill, !sram_palette_numfill, #$2C94)
custompalettes_numline:
- %palettemenu("Number Field Outline", PalettesMenu_numline, !sram_palette_numoutline)
+ %palettemenu("Number Field Outline", PalettesMenu_numline, !sram_palette_numoutline, #$2C91)
custompalettes_numsel:
- %palettemenu("Selected Num-Field Text", PalettesMenu_numsel, !sram_palette_numsel)
+ %palettemenu("Selected Num-Field Text", PalettesMenu_numsel, !sram_palette_numsel, #$3C94)
custompalettes_numselline:
- %palettemenu("Selected Num-Field Outline", PalettesMenu_numselline, !sram_palette_numseloutline)
+ %palettemenu("Selected Num-Field Outline", PalettesMenu_numselline, !sram_palette_numseloutline, #$3C91)
custompalettes_toggleon:
- %palettemenu("Toggle ON", PalettesMenu_toggleon, !sram_palette_toggleon)
+ %palettemenu("Toggle ON", PalettesMenu_toggleon, !sram_palette_toggleon, #$3891)
custompalettes_border:
- %palettemenu("Toggle OFF + Border", PalettesMenu_border, !sram_palette_border)
+ %palettemenu("Toggle OFF + Border", PalettesMenu_border, !sram_palette_border, #$2491)
custompalettes_background:
- %palettemenu("Background", PalettesMenu_background, !sram_palette_background)
+ %palettemenu("Background", PalettesMenu_background, !sram_palette_background, #$241F)
custompalettes_hex_red:
%cm_numfield_color("Hexadecimal Red", !ram_cm_custompalette_red, #MixRGB)
diff --git a/src/defines.asm b/src/defines.asm
index 2d360864..b3c0fb4c 100644
--- a/src/defines.asm
+++ b/src/defines.asm
@@ -352,6 +352,13 @@
!ram_cm_sprites_spacetime = !WRAM_MENU_START+$90
!ram_cm_sprites_xray = !WRAM_MENU_START+$92
+!ram_cm_sprites_samus_hitbox = !WRAM_MENU_START+$94
+!ram_cm_sprites_samus_proj = !WRAM_MENU_START+$96
+!ram_cm_sprites_enemy_hitbox = !WRAM_MENU_START+$98
+!ram_cm_sprites_enemy_proj = !WRAM_MENU_START+$9A
+!ram_cm_sprites_palette_blue = !WRAM_MENU_START+$9C
+!ram_cm_sprites_palette_green = !WRAM_MENU_START+$9E
+!ram_cm_sprites_palette_red = !WRAM_MENU_START+$A0
!ram_cm_ctrl_add_shortcut_slot = !WRAM_MENU_START+$90
!ram_cm_ctrl_last_pri = !WRAM_MENU_START+$92
@@ -410,7 +417,7 @@
; and is reset to zero when loading a savestate
; Reserve 48 bytes for CGRAM cache
-; Currently first 28 bytes plus last 2 bytes are used
+; Currently first 32 bytes plus last 2 bytes are used
!ram_cgram_cache = !WRAM_MENU_START+$D0 ; $30 bytes
@@ -469,7 +476,7 @@
; SRAM
; -----
-!SRAM_VERSION = #$001F
+!SRAM_VERSION = #$0020
!SRAM_START = $702000
!SRAM_SIZE = #$1000
@@ -556,6 +563,8 @@
!sram_fast_teleport = !SRAM_START+$AA
!sram_update_timers_ctrl_input = !SRAM_START+$AC
!sram_update_timers_options = !SRAM_START+$AE
+!sram_sprite_features_blue_color = !SRAM_START+$B0
+!sram_sprite_features_grapple_color = !SRAM_START+$B2
; ^ FREE SPACE ^ up to +$CE
@@ -711,6 +720,9 @@
!CTRL_L = #$0020
!CTRL_R = #$0010
+!VANILLA_SPRITE_PALETTE_5_BLUE_COLOR = #$7D08
+!VANILLA_SPRITE_PALETTE_5_GRAPPLE_COLOR = #$7F91
+
!PLM_DELETE = $AAE3
!MUSIC_ROUTINE = $808FC1
@@ -992,6 +1004,7 @@
!SAMUS_POWER_BOMB_X = $0CE2
!SAMUS_POWER_BOMB_Y = $0CE4
!OFFSCREEN_HDMA_INDEX = $0D1E
+!GRAPPLE_BEAM_FUNCTION = $0D32
!CURRENT_BLOCK_INDEX = $0DC4
!SAMUS_VERTICAL_COLLISION_RESULT = $0DC6
!SAMUS_X_SPEED_KILLED = $0DCE
@@ -1329,6 +1342,7 @@ endif
!ACTION_MANAGE_PRESETS = #$002A
!ACTION_CATEGORY_PRESET = #$002C
!ACTION_ADJUST_ITEM = #$002E
+!ACTION_COLOR_BAR = #$0030
!SAFEWORD = #$5AFE
@@ -1384,6 +1398,14 @@ endif
!SPRITE_HUD_XRAY = #$0200
!SPRITE_HUD_XRAY_INVERTED = #$FDFF
!SPRITE_OOB_X_WRAP = #$0400
+!SPRITE_SAMUS_HITBOX_WHITE = #$1000
+!SPRITE_SAMUS_HITBOX_INVERTED = #$EFFF
+!SPRITE_SAMUS_PROJ_WHITE = #$2000
+!SPRITE_SAMUS_PROJ_INVERTED = #$DFFF
+!SPRITE_ENEMY_HITBOX_WHITE = #$4000
+!SPRITE_ENEMY_HITBOX_INVERTED = #$BFFF
+!SPRITE_ENEMY_PROJ_WHITE = #$8000
+!SPRITE_ENEMY_PROJ_INVERTED = #$7FFF
!UPDATE_TIMERS_CTRL_SHORTCUT_TYPE = $05
diff --git a/src/init.asm b/src/init.asm
index a9ef2676..23a40c32 100644
--- a/src/init.asm
+++ b/src/init.asm
@@ -166,6 +166,7 @@ init_sram_routine_table:
dw init_sram_upgrade_1Cto1D
dw init_sram_upgrade_1Dto1E
dw init_sram_upgrade_1Eto1F
+ dw init_sram_upgrade_1Fto20
dw init_sram_fail
init_sram:
@@ -315,6 +316,10 @@ endif
JSR init_reset_rng_control
INC : STA !sram_hard_reset_clears_rng
+ .upgrade_1Fto20
+ LDA !VANILLA_SPRITE_PALETTE_5_BLUE_COLOR : STA !sram_sprite_features_blue_color
+ LDA !VANILLA_SPRITE_PALETTE_5_GRAPPLE_COLOR : STA !sram_sprite_features_grapple_color
+
LDA !SRAM_VERSION : STA !sram_initialized
RTS
diff --git a/src/macros.asm b/src/macros.asm
index 27af89f2..1eac33da 100644
--- a/src/macros.asm
+++ b/src/macros.asm
@@ -428,7 +428,7 @@ macro examplemenu()
dw #mc_dummy_num
endmacro
-macro palettemenu(title, label, addr)
+macro palettemenu(title, label, addr, color_tile)
; menu tables for customizing menu color palettes
%cm_jsl("
", #palettemenu_setup,