Programming extra frame coding...

Status
Not open for further replies.
You guys know how of the current basic frames only 34 out of the 94 symbols on the keyboard are used, well I was thinking, perhaps frames c through + could be gradually encoded and programmed into srb2's framework in order to enable further progression into the games' physics , angular, and cosmetic aspect ratios. Yet I have been ensnared by so much confusion upon trying to discover the answer to the question, of how I, or perhaps anyone else, could find a way to program these extra frames? So long story short, do any of you equally skilled people, understand what I am trying to do here or how to do it? Or should I just give up?
 
Adding new frames. It's very simple and funny because I was talking to Chaos Zero 64 about this about a week ago.

[11:03] <CZ64> I guess the first thing I'll do is add more frames to make sure different gametypes can start with different sprites
[11:04] <CZ64> I still remember how the second new frame crashed every time it loads
[11:04] <Flame> I know how to do so. :D
[11:05] <CZ64> How?
[11:05] <Flame> I did it in SSB:SS, lets see if I can bring up some things..
[11:05] <Flame> D_Player.h;
[11:05] <Flame> // If more player frames are added after S_PLAY_SUPERHIT, update this.
[11:05] <Flame> #ifdef SMASH
[11:05] <Flame> extern long playerstatetics[MAXPLAYERS][S_PLAY_KICK6+1];
[11:05] <Flame> #else
[11:05] <Flame> extern long playerstatetics[MAXPLAYERS][S_PLAY_SUPERHIT+1];
[11:05] <Flame> #endif
[11:06] <Flame> P_Mobj.c;
[11:06] <Flame> #ifdef SMASH
[11:06] <Flame> long playerstatetics[MAXPLAYERS][S_PLAY_KICK6+1];
[11:06] <Flame> #else
[11:06] <Flame> long playerstatetics[MAXPLAYERS][S_PLAY_SUPERHIT+1];
[11:06] <Flame> #endif
[11:06] <CZ64> No wonder
[11:06] <Flame> P_Saveg.c
[11:06] <Flame> for (i = 0; i < MAXPLAYERS; i++)
[11:06] <Flame> #ifdef SMASH
[11:06] <Flame> for (j = 0; j < S_PLAY_KICK6+1; j++)
[11:06] <Flame> #else
[11:06] <Flame> for (j = 0; j < S_PLAY_SUPERHIT+1; j++)
[11:06] <Flame> #endif
[11:06] <Flame> WRITELONG(save_p, playerstatetics[j]);
[11:06] <Flame> (Same file)
[11:06] <Flame> for (i = 0; i < MAXPLAYERS; i++)
[11:06] <Flame> #ifdef SMASH
[11:06] <Flame> for (j = 0; j < S_PLAY_KICK6+1; j++)
[11:06] <Flame> #else
[11:06] <Flame> for (j = 0; j < S_PLAY_SUPERHIT+1; j++)
[11:06] <Flame> #endif
[11:06] <Flame> playerstatetics[j] = READLONG(save_p);
[11:07] <Flame> P_Setup.c;
[11:07] <Flame> for (i = 0; i < MAXPLAYERS; i++)
[11:07] <Flame> {
[11:07] <Flame> // Initialize the player state duration table.
[11:07] <Flame> #ifdef SMASH
[11:07] <Flame> for (j = 0; j < S_PLAY_KICK6+1; j++)
[11:07] <Flame> #else
[11:07] <Flame> for (j = 0; j < S_PLAY_SUPERHIT+1; j++)
[11:07] <Flame> #endif
[11:07] <Flame> playerstatetics[j] = states[j].tics;
[11:08] <Flame> Then in info.c add sprites after S_PLAY_SUPERHIT and before S_POSS_STND
[11:08] <Flame> And the same in info.h
[11:08] <CZ64> Dammit, I thought it was only 2
[11:08] <CZ64> files
[11:09] <Flame> Nope, it's in about 6 files
[11:10] <CZ64> I could also easily search for S_PLAY_SUPERHIT+1
[11:10] <Flame> That works too.


The infromation between #ifdef SMASH and #else is infromation that I changed. Infromation between #else and #endif is the original infromation.
 
Not sure what you mean.
If you want an image of a sprite frame, you should rename sonic.plr to sonic.wad, open it in a wad editor and the frames are displayed there.

PLAYA1
PLAYA2A8
PLAYA3A7
PLAYA4A6
PLAYA5

These are sprite angles that can be displayed for the first sprite frame of the player.
 
I know, I already made ofer 50 character wads, most of which I will not be releasing till 1.1...
I was saying that I wanted to see an example of an added frame...
 
EMPEROR METALLIX said:
I know, I already made ofer 50 character wads, most of which I will not be releasing till 1.1...
I was saying that I wanted to see an example of an added frame...

If you release the wads then, won't they be obsolete?
 
Metallix, you have this nasty habit of asking if things are possible that require hardcoding. If you really care that much, go learn to code yourself.
 
BlueZero4 said:
Metallix, you have this nasty habit of asking if things are possible that require hardcoding. If you really care that much, go learn to code yourself.
Oi, its because I have the deepest curiousity in what others know, and what they can teach me, and because I have over 5 million ideas running around in my head at a time which makes it impossible for me to follow them without another source of conscious help... Plus, my dull psychiatrist says I need to try being more social...
 
Sure, I guess that could also be that, but I meant when sonic is running into a wall he looks like hes trying to push through in some of the official games...
 
Code:
	if ((cmd->forwardmove != 0 || cmd->sidemove != 0) || (player->powers[pw_super] && player->mo->z > player->mo->floorz))
	{
		// If the player is moving fast enough,
		// break into a run!
		if ((player->speed > player->runspeed) && (player->pflags & PF_WALKINGANIM) && (onground || player->powers[pw_super]))
			P_SetPlayerMobjState (player->mo, S_PLAY_SPD1);

		// Otherwise, just walk.
		else if (
#ifndef FLAME
		(player->rmomx || player->rmomy) 
#else
		(player->rmomx || player->rmomy) && player->speed > 5
#endif
		&& (player->mo->state == &states[S_PLAY_STND] || player->mo->state == &states[S_PLAY_CARRY] || player->mo->state == &states[S_PLAY_TAP1] || player->mo->state == &states[S_PLAY_TAP2] || player->mo->state == &states[S_PLAY_TEETER1] || player->mo->state == &states[S_PLAY_TEETER2] || player->mo->state == &states[S_PLAY_SUPERSTAND] || player->mo->state == &states[S_PLAY_SUPERTEETER]))
			P_SetPlayerMobjState (player->mo, S_PLAY_RUN1);
#ifdef FLAME
		else if ((player->rmomx || player->rmomy) && player->speed (Less than) 5
		// Check all of this other crap
		&& player->mo->state == &states[S_PLAY_STND] || player->mo->state == &states[S_PLAY_CARRY] || player->mo->state == &states[S_PLAY_TAP1] || player->mo->state == &states[S_PLAY_TAP2] || player->mo->state == &states[S_PLAY_TEETER1] || player->mo->state == &states[S_PLAY_TEETER2] || player->mo->state == &states[S_PLAY_SUPERSTAND] || player->mo->state == &states[S_PLAY_SUPERTEETER]))
			P_SetPlayerMobjState (player->mo, S_PLAY_PUSH1); // And set the state
#endif
	}
 
Status
Not open for further replies.

Who is viewing this thread (Total: 1, Members: 0, Guests: 1)

Back
Top