<- 1234 ->
^^
vv
List results:
Search options:
Use \ before commas in usernames
Fear Me! (Or else...)
Well, I wasn't talking about SM exclusively there - I was just talking about most commercial programming. SM is entirely in ASM, I think, as are most Nintendo games, if not all, but most things nowadays use Java (like cellphones, and the like), and C++ is WAY not uncommon.
...
ASM is definitely an extremely important skill for hacking, though it may be a pain in the butt.  I'm still trying to learn ASM for my MF hack.  And that proves what Bioniclegenius said: SM isn't the only game to hack, although it seems the most popular.
OMG FLAN!!!!!!!
Well technically SM would be the easirst to hack, because of SMILE. ( I don't really know about Fusing or ZM, I've never tried DH). Also IMO and probably a lot of other people think so too, SM had by far the best level design and soundtrack out of all metroid games (except Phendrana drifts laugh new), Though i reckon that nintendo making metroid 3D was one of the worst things they could have done to the series.
Fear Me! (Or else...)
Really? Metroid was a classic as 2d, but they respected its memory by making it 3d, which also opens up new possibilities, and maybe makes it harder to hack as well. It makes things somewhat more realistic, and gives you more control. In some cases, 3D is a lot better. In others, some of the games just need to stay somewhat 2D, unless they're willing to redo everything about it, and break some misconceptions, or even make the characters look different.
...
The first Metroid game I played was MP1, the 3D games are just as good as the 2D games, and I am tired of that debate.  Also, concerning MF/MZM hacks, DH is an almost perfect piece of software that is still growing.  I haven't tried SMILE yet, but they probably have the same amount of easy editability.
(user is banned)
Edit history:
J-SNAKE: 2008-12-09 10:32:58 pm
thats me
In short: Learn C++. It is the best decision Wink
The concept of a programming language like C++ you can learn just in one good weekend. It is only an illusion C++ is difficult. If it appears difficult then there is only one reason: your teacher is bad.
So learning a programming language and its main concepts itself is easy. The most difficult task in software design is the good planning but not the programming such as the challenge in math is not applying "sheme A" to solve an equation like most learn at school but finding out why
"schema A" provides the right solution and why it is appropriate to solve the problem and that leads again to a discussion with grabbing the problem  at its roots.







If someone hates the debate about 2D or 3D is not the point. I like it. SM2 will even combine 2D with 3D concepts but only to support and advance
the gameplay and the SM universe in a new way.

The metroid-prime concept is personally absolutly wrong decision when it comes to enrich the gameplay. It probably sounds contradictive but giving
the 3rd dimension that FPS-way decreases the level of gameplay-possibilities for the general metroid in my terms of understanding.
For me it is just boring to play the Prime-series. Samus is so "static" instead of being versatile and creative in movement,combat,movement-puzzles and if it comes to apply something like grapple beam it feels like skripted: I mean "Ah, now I have to use grapple beam exactly this way, and now I have to apply the boost-ball here exactly this way". Personally the game feels for me like a "obvious scripted playground without much variation in it". And that is exactly
what I am trying to avoid when I am designing such a game. The art or the big challenge here is to create a whole pool of possibilities which are not always that obvious and which can be combined to create more creative variation instead being so static while still remaining a clear set of rules for the plot of the game and its possible non-linear consequences.

The third person would fit metroid3D so much better, allowing samus to be more creative and versatile in combat moving and moving-puzzles.
Of course it will be a bigger challenge to implement and in game-design but Nintendo wants the best for Metroid, doesn't it?





...
I know quite a bit about pointers and ASM and using a hex editor(I use Hex Workshop) to replace values such as enemy health, but it is tricky to find the hex for the boss or whatever that you're looking for.  Once you find it, though, you will know what to do.  Also, I'm not sure if you know what tables are in ROM memory, but you can edit them to make useful changes as well, such as removing Adam talks completely from Fusion or changing your weapon status.  I don't know too much about C++, but it sounds like it's recommended by you, so I'll try to work on it.
Embarrasing Fact: Power suit made by lowest bidder
Quote from Sadiztik Fish:
Well technically SM would be the easirst to hack, because of SMILE. ( I don't really know about Fusing or ZM, I've never tried DH).


Hahaha... this is, to a good degree, backwards.
Older games were written when coding standards weren't paid attention to and code highly reflected an individual's thoughts. Especially so because the hardware was so limited and so coding had to fit what was possible rather than what may have been the original goals of the program.
The data in Super Metroid is organized according to what works, more so than what makes sense. With no coding standards the code in one section of the game can be drastically different than the code in another section of the game (though you can kind of recognize how the compiler probably worked). Ridley's fundamental engine is *really* good - especially his tail, but it's a nightmare to understand. Ridley's implementation of that engine is only kinda basic though. The intro scenes at the start of the game are kind of a hack layered on top of a hack layered on top of the actual game engine. It is impossible to directly grab assembled sprites from the game without emulating the code. I only know a little about the NES Metroid's coding, but from what I understand it's even worse.
Newer games follow coding standards a lot better. The function of a routine is generally specific and easy to understand. Data is organized around a specific pattern. interdpth had a enemy sprite viewer working in DH months ago.

The only way older games are easier to hack is that the hardware is simpler and easier to fully understand (until you get to chips added onto cartridges...) and the hardware is also better documented. And the games have been out longer and so there might be more knowledge about the game itself.
(user is banned)
Edit history:
J-SNAKE: 2008-12-10 07:22:48 pm
thats me
Now I allow you to watch my original early interface-code for SMTac-Player (Samus-header). That is how it looked like as I tried
to avoid to develop a SMTac-engine. Just to give you an impression how many things there were already to take care of. And keep in mind the interface-functions themselves can contain a lot of code (which is not shown here). But it is not much for something what
is going to be the most expansive real-time 2D-combat-system.



#ifndef Cplayerh
#define Cplayerh


#include"Direct3D.h"
#include"sprite.h"
#include"input.h"
#include"collision.h"
#include"obstacle.h"
#include"weapons.h"
#include "mymath.h"


enum spriteindex{stand=0,hookup,standturn,sitturn,airturn,standaim,sit,sitaim,runright,runleft,rightmoonwalk,leftmoonwalk,straightjump,walljump,
                straightfall,fall,saltojump,rushleft,rushright,airsit,grapplewall,toball,ballto,tositorstand,ball,
                spacejump,shinespark};
enum aimingdirection {right=0,rightup,up,leftup,left,leftdown,down,rightdown,none};
enum actualweapon{beamw=0,rocketw};
//enum morphsprite{none=0,sitball=1,ballsit,standsit,sitstand};

class Cplayer
{
public:
Csprite sprite[30];
Ceffect lightspeedeffect[20];
Ceffect gravityballeffect;
Ceffect gravitygripeffect;

Ceffect    jetfireeffect;
int settedred;
int settedgreen;
int settedblue;
int red;
int green;
int blue;


D3DXVECTOR2 rotatecenter;
D3DXVECTOR2 pos;

D3DXVECTOR2 speed;
D3DXVECTOR2 shootstartpos;
double      slowrunspeed;
float        maxrunspeed;
double      slowairspeed;
double      slowrollspeed;
double      angle;
double      jetacceleration;
double      jumpspeed;
float        highjumpspeed;
float        doublejumpspeed;
double    walljumpspeed;
float        spacejumpspeed;
double      balljumpspeed;
double      ballcontactfriction;
double      hardcontactfriction;
double      tearingfriction;
double      jetfinalspeed;
float        lightspeed;
double      rushspeed;
double      gravitygunforce;
float        acceleration;
float        speedboosteracceleration;
int          spriteindex;
DXrect    boundingbox;
DXrect    altboundingbox;
double      lifeenergy;
float        suitenergy;
float        maxsuitenergy;
double    energycollectpower;
float      chargepower;
float      maxchargedenergy;
float      chargedenergy;

Claser*            laser;
Cbeamweapon *beamweapon;
Cmissile*          missile;

int actualweapon;
int weapon1;
int weapon2;

int  grapplingindex;


int  aimingdirection;
bool is_runningaiming;
bool is_inair;
bool is_salto;
bool is_standing;
bool is_sitting;
bool is_jetting;
bool is_jumping;
bool is_doublejump;
bool is_spacejump;
bool is_lookingright;
bool is_gravitygrip;
bool is_ballgrappling;
bool is_ball;
bool is_turningaround;
bool is_startingturn;
bool is_hookingup;
bool is_startingfallingfromground;
bool is_straightjumping;
bool is_walljumpready;
bool is_fixedlookingdirection;
bool is_shinesparkready;
bool is_hshinespark;
bool is_vshinespark;
int  walljumpreadytime;

int shinesparkreadytime;
int shinesparkreadycounter;
int lightspeedeffectcounter;
bool highjump_selected;
bool speedbooster_selected;

bool is_charging;


virtual~Cplayer();
Cplayer();
void do_moveinput(Cjoystick& joystick1,int*box1_collisionboxindex,DXrect &collisionbox1,int*box1_collisionboxside,int  box2_collisionboxindex,DXrect &collisionbox2,int* box2_collisionboxside);
void doinput_standonground(Cjoystick &joystick1);
void doinput_sitonground(Cjoystick &joystick1);
void doinput_standinair(Cjoystick &joystick1);
void doinput_walljump(Cjoystick &joystick1);


void doinput_gravitygrip(Cjoystick &joystick1);
void doinput_ballonground(Cjoystick& joystick1);
void doinput_ballinair(Cjoystick& joystick1);
void doinput_ballgrappling(Cjoystick& joystick1,int*box1_collisionboxindex,DXrect&collisionbox1,int*box1_collisionboxside,int* box2_collisionboxindex,DXrect &collisionbox2,int* box2_collisionboxside);
void do_movecollision(Cjoystick& joystick,DXrect*cbox,int amount,int *box1_actualcollisionboxindex,int *box1_actualcollisionboxside,int *box2_actualcollisionboxindex,int *box2_actualcollisionboxside);
void actualizeboundingbox();
void actualizepos();
void do_move(Cjoystick& joystick,DXrect*cbox,int amount,int *box1_actualcollisionboxindex,int *box1_actualcollisionboxside,int *box2_actualcollisionboxindex,int *box2_actualcollisionboxside);
void do_draw(D3DXVECTOR2& scalingcenter,D3DXVECTOR2& scalingvector,D3DXVECTOR2& translation);
void do_lightspeedeffect(D3DXVECTOR2& mapscalingcenter,D3DXVECTOR2& scalingvector,D3DXVECTOR2& translation);
void do_manualbombinit(Cjoystick joystick,Cstaticobstacle *obstacle,int obstacleamount,Cplayer *enemy);
void do_laser(Cjoystick joystick,Cstaticobstacle *obstacle,int obstacleamount,Cplayer *enemy);
void do_gravitygun(Cjoystick joystick,Cstaticobstacle *obstacle,Cphysobject *physobject,int physobjectamount,int obstacleamount,Cplayer& enemy);
void do_beamandchargedbeam(Cjoystick joystick,Cstaticobstacle *obstacle,int obstacleamount,Cplayer&enemy);
void do_weapon(Cjoystick joystick,Cstaticobstacle *obstacle,int obstacleamount,Cplayer&enemy);

private:
void actualizesprite(Cjoystick& joystick);
void setshootstartdata(Cjoystick& joystick);
void doinput_shinespark(Cjoystick &joystick1);
void do_gravityballeffect(D3DXVECTOR2& mapscalingcenter,D3DXVECTOR2& scalingvector,D3DXVECTOR2& translation);
void do_gravitygripeffect(D3DXVECTOR2& mapscalingcenter,D3DXVECTOR2& scalingvector,D3DXVECTOR2& translation);
void createlaser(Cjoystick& joystick);
void createbeam(Cjoystick& joystick);
void createchargedbeam(Cjoystick& joystick);
void do_beamcollision(Cbeam*b,int bamount,Cstaticobstacle *obstacle,int obstacleamount,Cplayer&enemy);
bool createzuendmine(Cjoystick& joystick);
void do_zuendmineobstaclecollision(Cstaticobstacle *obstacle,int obstacleamount);
void do_lasercollision(Cstaticobstacle *obstacle,int obstacleamount,Cplayer*enemy);
void setgravityrect(DXrect &gravityrect);
void set_singlegrapplingindex(DXrect& gravityrect,Cphysobject* physobject,int physobjectamount);
void set_grapplingindex(DXrect& gravityrect,Cphysobject* physobject,int physobjectamount);
void do_grappleenemy(Cplayer& enemy,Cjoystick& joystick);
void do_grappleobject(Cjoystick joystick,Cstaticobstacle *obstacle,Cphysobject *physobject,int physobjectamount,int obstacleamount);
void do_chargedbeam(Cjoystick joystick,Cstaticobstacle *obstacle,int obstacleamount,Cplayer&enemy);
void do_beam(Cjoystick joystick,Cstaticobstacle *obstacle,int obstacleamount,Cplayer&enemy);
};




#endif
Wait, can you hack Super with C++? pwuh
I didn't think you could, but it'd be awesome if it was possible.
Yo.
Methinks you should enclose that code in code tags, J-SNAKE. Makes it much more readable.

Example:
Code:
This is a code tag.
(user is banned)
thats me
Dark__Echoes, can you please advertise hackers if it comes to hacking. To make it clear, I am not a hacker and I am not hacking
anything. There is no sense for me to hack a game to fullfill my personal dreamgame. I better make my own engine and game from
the ground up. And if you still have doubts, just throw them away and begin learning C++, but it is only important to GOOGLE FOR WELL RATED TEACHING-C++-BOOKS. I can't give you a good recommandation because I mostly read them in german, not in english.





Of course I know, but it is not intended to be readable or understandable here, since there is not much you can understand watching only one header.

But you see the amount of interfaces or functions and the data which has to be stored. 
You can imagine somehow what has to be something like "is_lookingright", "is_ball" or "is_walljumpready" and also some functions.

But I am not going to explain how the function for the elegant SMTac-spider-ball works for example. It is not for general talk. Even if I would explain how the clean and bugfree Wall-jump procedure works will probably be a pain-injection right there for the most since
already this requieres a detailed understanding and also involves an exact understanding how the collision is embedded in the code here.

Code:
if(State.MorphBall){
   if(Action==SpiderBall){
        switch(GetDirection){
   case left:
           AttachToLeftWall();
         break;
   case right:
          AttachToRightWall();
   etc:

} 
 }

}


}



Something like that.
(user is banned)
thats me
Probably, there can be counltess ways to implement it, here you have still to say what is now the rightwall, what is direction, and
also more information has to be given when to attach to a certain wall avoiding any possible bugs which can appear otherwise.
That's what the function calls do. 8D
(user is banned)
Edit history:
J-SNAKE: 2008-12-10 11:15:07 pm
thats me
So if you are going to distinguish between 4 walls and always when you put to the left the player moves to the left (it was here an early solution in SMT) is not a good solution for SMTac and also I assume this function is embedded in a collision here and it checks which wall you have hit where only one hitted wall can be known so the others have to be "empty" then.


At least you will have problems to be able to move like in SMTac shown here at the begging (rolling around the block complex).
Just watch 0.13, it goes in one flow.
And watch the thing with changing walls in 0.15 with a micro-jump, it is something what is not possible to do in DoctorM64-demo.

NOTICE: SOME OF THE BLOCK-COMPLEX CONTAINS MORE THAN ONE BLOCK BUT IT LOOKS LIKE ONE SO YOU NEED A MORE COMPLEX AND INTELLIGENT MECHANISM TO RECOGNIZE TRANSITIONS TO MAKE SPIDER-BALL SO EASY AND ELEGANT TO USE LIKE YOU SEE HERE
http://de.youtube.com/watch?v=AQQ0kPk4vuw&feature=channel_page
(user is banned)
thats me
Sorry for double-post, but btw. since we are talking also about A.I. here is a new and the last video for the first before the A.I. engine will be introduced for the public much later. So I hope you can get an impression why the A.I.-level SM2 is aiming at is really innovative and most challenging.

http://de.youtube.com/watch?v=ffF67VUuNVo&feature=channel_page
If anybody has a hankering to work with some C++ code for building custom game engines, I just happen to have a generic game engine framework I've been working on for ages called "Halif Engine"; it is supposed to eventually power Jorge Fuentes' CV fan game, but could be applied to just about anything 2D - it even has a software polygon rasterizer for basic 3D effects.

The source is here:
http://mancubus.net/svn/index.cgi/halif/trunk/source/

With a SVN client such as TortoiseSVN, you can check out a complete copy of the repository. It depends on the SDL, SDL_mixer, SDL_image, and PhysicsFS libraries. The code is licensed under GNU GPL, which means that if you modify it and release anything based on those modifications, you have to also release the source code. Share and share alike :)
(user is banned)
Edit history:
J-SNAKE: 2008-12-11 07:19:05 pm
thats me
Good luck with your engine. 

Besides, nothing special about software polygon rasterization. I programmed it all from the ground up for studying 3D technology.
It will be applied for randomized snowflakes in SM2 ' snowy areas. So approximately every snowflake there will be different to each other.
I probably make a rasterized snowflakes snowing demo when I feel fun to.

But to have hardware acceleration I better use directx than something software emulated. So better use something directx or opengl
accelerated for low level managment.
RAHRAGARAHA!
How do you get to the .ASM files in Super metroid?
I did tons of searches and couldn't find anything.
(user is banned)
Edit history:
J-SNAKE: 2008-12-11 08:59:43 pm
thats me
Are you referring to some actual code fragments here, Sirich?
RAHRAGARAHA!
Quote from J-SNAKE:
Are you referring to some actual code fragments here, Sirich?
Like the codes for Beams and such.
Yo.
Quote from Sirich:
How do you get to the .ASM files in Super metroid?

What... the hell?

Stupidity... making me dizzy... aiwebs_023
RAHRAGARAHA!
Quote from Zhs2:
Quote from Sirich:
How do you get to the .ASM files in Super metroid?

What... the hell?

Stupidity... making me dizzy... aiwebs_023
I get the feeling this should be obvious...
Yo.
Sorry, that was my first reaction. What I'm gonna tell you is, it's not that simple. Super Metroid was compiled once and only once, and you're not going to get much source code out of the object code. There is no .asm to be had.

What you can do is debug Super Metroid with special tools, and write .asm files to compile into the game for yourself. The first thing you said was so blatantly ignorant I reacted the way I did. Apologies.