Add Knuckles

This commit is contained in:
Lucas S. Vieira 2025-04-08 01:46:50 -03:00
parent 455ab66af9
commit b75c58a4d8
11 changed files with 50 additions and 4 deletions

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

View file

@ -21,9 +21,10 @@
typedef enum {
CHARA_SONIC = 0,
CHARA_MILES = 1,
CHARA_KNUCKLES = 2,
} PlayerCharacter;
#define CHARA_MAX CHARA_MILES
#define CHARA_MAX CHARA_KNUCKLES
typedef enum {
ACTION_NONE,

View file

@ -29,6 +29,12 @@
<file name="MILES.CHARA"
type="data"
source="${PROJECT_SOURCE_DIR}/assets/sprites/CHARA/MILES.CHARA" />
<file name="KNUX.TIM"
type="data"
source="${PROJECT_SOURCE_DIR}/assets/sprites/CHARA/KNUX.TIM" />
<file name="KNUX.CHARA"
type="data"
source="${PROJECT_SOURCE_DIR}/assets/sprites/CHARA/KNUX.CHARA" />
<file name="BASEFONT.TIM"
type="data"
source="${PROJECT_SOURCE_DIR}/assets/sprites/BASEFONT.TIM" />

View file

@ -49,6 +49,18 @@ extern PlayerConstants CNST_SPEEDSHOES;
#define ANIM_TAILMOVE 0x0ab30262 // MILES ONLY
#define ANIM_TAILFLY 0x08390216 // MILES ONLY
#define ANIM_CLIMBSTOP 0x0d1102ae // KNUCKLKES ONLY
#define ANIM_CLIMBUP 0x0805020d // KNUCKLKES ONLY
#define ANIM_CLIMBDOWN 0x0cd402a0 // KNUCKLKES ONLY
#define ANIM_CLIMBRISE 0x0ce9029b // KNUCKLKES ONLY
#define ANIM_CLIMBEND 0x0a22023f // KNUCKLKES ONLY
#define ANIM_GLIDE 0x04400166 // KNUCKLKES ONLY
#define ANIM_GLIDETURNA 0x100902f0 // KNUCKLKES ONLY
#define ANIM_GLIDETURNB 0x100a02f1 // KNUCKLKES ONLY
#define ANIM_GLIDECANCEL 0x1252030c // KNUCKLKES ONLY
#define ANIM_GLIDELAND 0x0cab0285 // KNUCKLKES ONLY
#define ANIM_GLIDERISE 0x0ce60299 // KNUCKLKES ONLY
extern int debug_mode;
SoundEffect sfx_jump = { 0 };
@ -1430,7 +1442,6 @@ player_draw(Player *player, VECTOR *pos)
facing_left,
tail_angle);
}
}
void _player_set_hurt(Player *player, int32_t hazard_x);

View file

@ -719,6 +719,10 @@ level_load_player(PlayerCharacter character)
chara_file = "\\SPRITES\\MILES.CHARA;1";
tim_file = "\\SPRITES\\MILES.TIM;1";
break;
case CHARA_KNUCKLES:
chara_file = "\\SPRITES\\KNUX.CHARA;1";
tim_file = "\\SPRITES\\KNUX.TIM;1";
break;
case CHARA_SONIC:
default: break;
}

View file

@ -322,6 +322,7 @@ screen_levelselect_draw(void *d)
switch(data->character_selection) {
case CHARA_SONIC: charaname = "SONIC"; break;
case CHARA_MILES: charaname = "MILES"; break;
case CHARA_KNUCKLES: charaname = "KNUCKLES"; break;
default: charaname = "UNKNOWN"; break;
}
snprintf(buffer, 80, "CHARA %8s",

View file

@ -134,6 +134,17 @@ names = [
"TAILIDLE",
"TAILMOVE",
"TAILFLY",
"CLIMBSTOP",
"CLIMBUP",
"CLIMBDOWN",
"CLIMBRISE",
"CLIMBEND",
"GLIDE",
"GLIDETURNA",
"GLIDETURNB",
"GLIDECANCEL",
"GLIDELAND",
"GLIDERISE",
]
def get_hash(name):
@ -178,6 +189,17 @@ print_hashes(names)
#define ANIM_TAILIDLE 0x0a6e0249
#define ANIM_TAILMOVE 0x0ab30262
#define ANIM_TAILFLY 0x08390216
#define ANIM_CLIMBSTOP 0x0d1102ae
#define ANIM_CLIMBUP 0x0805020d
#define ANIM_CLIMBDOWN 0x0cd402a0
#define ANIM_CLIMBRISE 0x0ce9029b
#define ANIM_CLIMBEND 0x0a22023f
#define ANIM_GLIDE 0x04400166
#define ANIM_GLIDETURNA 0x100902f0
#define ANIM_GLIDETURNB 0x100a02f1
#define ANIM_GLIDECANCEL 0x1252030c
#define ANIM_GLIDELAND 0x0cab0285
#define ANIM_GLIDERISE 0x0ce60299
#+end_example
* Generating 8x8 tiles and their 16x16 mappings