Register | Login
Views: 19364387
Main | Memberlist | Active users | ACS | Commons | Calendar | Online users
Ranks | FAQ | Color Chart | Photo album | IRC Chat
11-02-05 12:59 PM
1 user currently in Super Mario World hacking: labmaster | 3 guests
Acmlm's Board - I2 Archive - Super Mario World hacking - Question about a program for ASM | |
Pages: 1 2Add to favorites | "RSS" Feed | Next newer thread | Next older thread
User Post
BrooklynMario

Koopa
Level: 17

Posts: 50/110
EXP: 23769
For next: 974

Since: 09-04-04
From: Brooklyn, NY

Since last post: 19 hours
Last activity: 45 days
Posted on 01-28-05 12:09 AM Link | Quote
Can I use Hexecute to hack ASM? Like does it give the right numbers, etc...?

Or do I need something else?
Alastor the Stylish
Hey! I made a cool game! It's called "I poisoned half the food, so if you eat you might die!" Have a taco.


Level: 114

Posts: 4778/7620
EXP: 16258468
For next: 51099

Since: 03-15-04
From: Oregon, US

Since last post: 2 hours
Last activity: 2 hours
Posted on 01-28-05 01:21 AM Link | Quote
Hexecute is a hex editor, not an ASM compiler.
labmaster

Blue Octorok
Level: 12

Posts: 21/43
EXP: 6135
For next: 1786

Since: 07-17-04
From: New Zealand!

Since last post: 10 days
Last activity: 2 min.
Posted on 01-28-05 01:23 AM Link | Quote
To edit ASM instructions in a ROM? Sure, it'll give the 'right numbers', but unless you have a clue as to what the numbers mean, it's useless. That's where a disassembler handy - once you've found what you want to change, and know what you want to change it to, it can be done via a hexeditor. Just make sure that its endianess doesn't catch you out.
BrooklynMario

Koopa
Level: 17

Posts: 51/110
EXP: 23769
For next: 974

Since: 09-04-04
From: Brooklyn, NY

Since last post: 19 hours
Last activity: 45 days
Posted on 01-28-05 02:47 AM Link | Quote
ASM compiler? Dissasembler? Can I get these 2 from someone please?
HyperLamer
<||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people

Sesshomaru
Tamaranian

Level: 118

Posts: 3064/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 01-28-05 02:59 AM Link | Quote
An 'ASM compiler' is generally called an assembler. Zophar's should have them.
BrooklynMario

Koopa
Level: 17

Posts: 52/110
EXP: 23769
For next: 974

Since: 09-04-04
From: Brooklyn, NY

Since last post: 19 hours
Last activity: 45 days
Posted on 01-28-05 03:05 AM Link | Quote
How about the program called Tracer? Is that recommended? Or one thats not run on DOS?
dan

Snap Dragon
Level: 43

Posts: 369/782
EXP: 534516
For next: 30530

Since: 03-15-04

Since last post: 20 hours
Last activity: 14 hours
Posted on 01-28-05 03:11 AM Link | Quote
Without sounding like a dick, you really should learn the particular ASM that the SNES uses before you even download those programs. You won't get anywhere without that knowledge.
Gavin

Fuzzy
Rhinoceruses don't play games. They fucking charge your ass.
Level: 43

Posts: 433/799
EXP: 551711
For next: 13335

Since: 03-15-04
From: IL, USA

Since last post: 13 hours
Last activity: 13 hours
Posted on 01-28-05 03:36 AM Link | Quote
Originally posted by HyperHacker
An 'ASM compiler' is generally called an assembler. Zophar's should have them.


well the two are completely different things. Assembler is not a compiled language, as it operates on a 1 to 1 ratio with processor instructions. but that's just nitpicking, i know what you meant

Originally posted by Kyouji Craw
Hexecute is a hex editor, not an ASM compiler.


correct, it is not. But the answer to his question is still undoubtedly "Yes". You can edit assembler directly in hex, provided you have a list of the processors instructions and their hex equivilants.

Generally it is much easier to edit the rom directly (i'm fairly certain for almost everyone) than to go through the whole process of assembling and yadda yadda yadda. Hell when you work with it enough you end up memorizing the hex equivilants anyway (although i always have my cheet-sheet up in Metapad. i'm not DD )

Originally posted by BrooklynMario
ASM compiler? Dissasembler? Can I get these 2 from someone please?


diassemblers are great, but i would advise against one if you are only looking to edit the assembler code in the rom. As far as i know with SNES (which isn't far) there isn't a specially designed tool to produce accurate re-assembling code like the NES has with _Hyde_'s tools. Basically meaning you can take the thing apart and edit the file all you'd like, but you won't be able to put the game back together again and run it.

Originally posted by BrooklynMario
How about the program called Tracer? Is that recommended? Or one thats not run on DOS?


again it depends on exactly what you plan to do. For finding routines a tracer is very nice, better than disassembling the rom entirely it only takes apart what you ran in the emulator, making it *much* easier to find the desire section of code.

Originally posted by dan
Without sounding like a dick, you really should learn the particular ASM that the SNES uses before you even download those programs. You won't get anywhere without that knowledge.


and of course, Dan is completely correct. All these things mean very little when you don't know assembler

(edit: ack, typos)


(edited by Gavin on 01-27-05 06:39 PM)
Parasyte

Bullet Bill
Level: 35

Posts: 241/514
EXP: 267348
For next: 12588

Since: 05-25-04

Since last post: 104 days
Last activity: 32 days
Posted on 01-28-05 03:44 AM Link | Quote
Gavin, Tracer is a program written by y0shi for disassembling 6502 and 65c816. And actually, it's my disassembler of choice for hacking SNES games.

But if you have to ask what kind program you use to hack assembly, you are getting in WAY over your head. Start small; learn the language, first (65c816 assembly). THEN go jump in and hack some assembly.
Gavin

Fuzzy
Rhinoceruses don't play games. They fucking charge your ass.
Level: 43

Posts: 435/799
EXP: 551711
For next: 13335

Since: 03-15-04
From: IL, USA

Since last post: 13 hours
Last activity: 13 hours
Posted on 01-28-05 03:48 AM Link | Quote
Originally posted by Parasyte
Gavin, Tracer is a program written by y0shi for disassembling 6502 and 65c816. And actually, it's my disassembler of choice for hacking SNES games.

But if you have to ask what kind program you use to hack assembly, you are getting in WAY over your head. Start small; learn the language, first (65c816 assembly). THEN go jump in and hack some assembly.


ahh, i read it fast and assume "a tracer". my mistake.
BrooklynMario

Koopa
Level: 17

Posts: 53/110
EXP: 23769
For next: 974

Since: 09-04-04
From: Brooklyn, NY

Since last post: 19 hours
Last activity: 45 days
Posted on 01-28-05 07:46 PM Link | Quote
So, out of this page at zophars http://www.zophar.net/tech/transdocs.html

what files should i look at? I know one of them being 65816 Primer. What else?
HabsoluteFate

Red Paratroopa
Level: 23

Posts: 96/179
EXP: 58525
For next: 9198

Since: 03-15-04
From: Ottawa, Ontario, Canada

Since last post: 10 days
Last activity: 2 days
Posted on 01-28-05 08:24 PM Link | Quote
Originally posted by BrooklynMario
So, out of this page at zophars http://www.zophar.net/tech/transdocs.html

what files should i look at? I know one of them being 65816 Primer. What else?


I would read the primer and try and find examples or tutorials somewhere on the net....looking at decompiled blocks (From the Block Tool) is also helpfull especially because the code for each block isnt that long and should be more easily understood....perhaps even creating your own block with it's own properties would be a good way to at least get something that works...
Atma X

Bandit
Level: 43

Posts: 702/801
EXP: 553639
For next: 11407

Since: 03-16-04
From: Derrière vous!!!

Since last post: 43 days
Last activity: 14 days
Posted on 01-29-05 01:00 AM Link | Quote
And if you want to write a Routine (later on) that requires you to work with Data formats, just be aware that a lot of the Formats that the Snes uses can be mind boggling at times (I find the Genesis' Data Formats to be much eaiser to work with). You could also write your own Data Formats, but I wouldn't try that for a while (you can think up some Formats in your head, but you won't be able to program it yet).

Note: A Routine is just a bunch of Instructions used to perform a Task.

Programming just requires that you understand a concept, and think about the operations that you want the game/computer to perform in a logical manner.
For example, well partially: You can't just make a Sprite walk left or right with simply one Instruction. In other words, there is no move left or right Instruction, you instead have to use a few or several Instructions to increase or decrease the value on the Bytes(s) that holds the Sprites X location (few Instructions in this case). Thinking Logically about writing your Instructions just means that your thinking about a logical way (a way that that you are 99% sure that makes sense) that you can accomplish your task; some of which requires that you know some things about how the Instructions shoud be used, and also other things, for example: What is an Instruction; think about that stuff like that as well, it'll help you to understand more things along the way (what does an Instruction really mean; Answer: Steps to perform a Task. Use of Instructions: To inform someone/something of the steps required to perform a task,... AKA, to use Instructions to describe how something is to be done).

There's something else you should understand as well, which is the difference between RAM, and ROM.

ROM (Read Only Memory)---Read only, as in you can only Read memory, not Process, Alter, Manipulate the memory/data/information.

RAM (Random Access Memory) It can Randomly/Freely access, process, alter Memory/Data/Information with the proper Instructions (with an Instruction that would Instruct it do something like that; Processing certain data etc.)

While a program is being run (the game in this case) you can only Read memory from ROM (The ROM file itself, same story with computer's Hard Drive, AKA, a place where Data can be permanently stored), you cannot Alter, Process, or Manipulate data in ROM (as far as Writing/Overwriting Data goes, there is an exception; for example, your save files can be created while the Game is being run). Processing, Altering, and Manipulating can only be done in RAM (your RAM chip(s) in your computer is where this is done,... and the Snes Console itself has it's own RAM chip,... but think of it as RAM Addresses when loading Istructions or Data into to RAM).

Here's an Example that may help as well:
As far as Processing, Manipulating, Altering Data/Information and Reading Data goes, It's like a Book and your Mind: A Book stores information, (or information in the form of instructions AKA, a Cook Book gives you instructions on how to make a certain type of food,... though those instructions would be too breif for a computer, but that's beside the point), and that info gets loaded into your Mind when you read the Book, and then from there, you can use your Mind to Alter, Manipulate, or Process that information, and then you can Write something back to the pages of the Book to keep a Record of what you just read (maybe with some ateration(s), if you desire), or anything that you thought of at that time,... but the Book itself cannot Manipulate, Alter, or Process the information contained in itself, because it is just a Record of Data/Information, not a Processor and Manipulator of Data/Information like your Mind.

Final notes:
RAM is temporary memory (it gets reset everytime you reboot your computer, or for the Snes Consol,... everytime you turn the Systen Off, and back On).

Also, to understand programming (any language), you just need to understand "Programming Logic", and then learn the different Instructions for each language (included Instruciotns in a language generally are they same types, just some minor differences, and with some more Instructions added to some languages compared to another,... and also the Hex/compiled or Script/uncompiled representations of the Instructions)

Well, hope this helps you in your journey to become a Programmer.

(If I made a mistake anywhere, someone please correct me,... mistakes can happen,... I also read over this, but not enough times for all of the sections, because I'm pretty tired now)

Edit: Btw, Tracers, Assemlers, Disassemblers, Compilers, etc. are just tools to use while Programming, they do not help you write a program (Hex Editor, or Notepad etc. let you write the Program). Compilers, Disassemblers etc. only convert the Script representations of an Instruction to and from their Hex Values (not a Tracer though, don't confuse that one with the others).

Here's an Example below:
2 Notes before reading the Example:

1. JMP means: (An Instrusction to Jump to the Address you specify in the 4 Bytes after the JMP Instruction is writen,... AKA, JMP is used to continue reading code from the specified Address),... (writen by you of course,... so that means it's done in ROM).

2. Example refers to the Genesis' Hex representation of the JMP Instruction, not the Snes' Hex representation of the JMP Instruction.

Ok, here's the Example: In a Script, the Jump instruction is JMP (it consume 3 Characters/Bytes in Script form), in Hex, Jump is 4EF9 (2 Characters/Bytes).

All a Compiler does is convert JMP, to 4EF9.

The only things I use are Tracers (to find Routines of Code/Instructions), and Hex Editors (that's all you need).


(edited by Atma X on 01-28-05 04:01 PM)
(edited by Atma X on 01-28-05 04:01 PM)
(edited by Atma X on 01-28-05 04:03 PM)
(edited by Atma X on 01-28-05 04:28 PM)
(edited by Atma X on 01-28-05 04:32 PM)
(edited by Atma X on 01-29-05 05:04 PM)
Parasyte

Bullet Bill
Level: 35

Posts: 244/514
EXP: 267348
For next: 12588

Since: 05-25-04

Since last post: 104 days
Last activity: 32 days
Posted on 01-29-05 01:50 AM Link | Quote
To be technical, "script" is not the proper term for assembly. It is, in fact, "assembly". The assembled instructions are called "machine code" because they are just numbers. So machine code = numbers that a CPU uses as instructions. Assembly = the human-readable form of that machine code.

There are a few non-minor errors that I noticed in your explanation:


" ... you cannot Alter, Process, or Manipulate data in ROM (as far as Writing/Overwriting Data goes, there is an exception; for example, your save files can be created while the Game is being run)."

Saves are NOT ROM. It is SRAM (Save RAM). It is definitely RAM in that you are able to read or write to it at will. The difference from SNES main system RAM is that it actually saves (it is backed up by a battery - the battery keeps the data in RAM without resetting).


"RAM is where EVERYTHING is Run (Manipulated etc., you get the idea)."

This statement is confusing. I'm not certain if you meant to say that RAM is where instructions are executed (run), but that is how it seems. And in that case, it is incorrect. Almost all instructions are executed from ROM. To get any instructions executed from RAM, the program must first copy those instructions to RAM (either a simple data transfer, or decrypt/decompress code, but that is beyond the scope of this explanation). Once the instructions are all in RAM, the program may then branch or jump into that routine. This method of running code is very rare on SNES.
Atma X

Bandit
Level: 43

Posts: 703/801
EXP: 553639
For next: 11407

Since: 03-16-04
From: Derrière vous!!!

Since last post: 43 days
Last activity: 14 days
Posted on 01-29-05 02:25 AM Link | Quote
I know that saves are not ROM, but the Save files that get produced is a seperate file,... (AKA a File stored into your Hard Drive).

The Data inside of SRAM is recorded to a seperate file, so it can be accessed at a later time (so you don't lose your place in the game when you turn the Power Off, etc.)

That's what I was talking about by that.

About the statement "RAM is where EVERYTHING is Run (Manipulated etc., you get the idea)."

Yea, I worded that wrong. I was meaning to say that Data and Instructions is loaded from ROM, and is Processed in RAM.

And Btw, doesn't Execute mean to Perform (to Perform the Instructions loaded from ROM). Maybe one of us has some terms wrong (I don't know,... if I'm wrong, then I'm just using the wrong word to describe what I'm thinking).

So, I don't see how an instruction can be Performed from ROM (Executed from ROM as you stated). The way I see it is that Instructions can be Loaded from ROM into RAM, and then Performed in RAM (the task of the Instruction is carried out within RAM)


(edited by Atma X on 01-28-05 05:28 PM)
(edited by Atma X on 01-29-05 11:03 PM)
Parasyte

Bullet Bill
Level: 35

Posts: 245/514
EXP: 267348
For next: 12588

Since: 05-25-04

Since last post: 104 days
Last activity: 32 days
Posted on 01-29-05 10:20 AM Link | Quote
"Perform" is not a very fitting term. Neither are "handle" or "interpret", but if that gets the idea across...

And NO! Save files are not ROM at all. They should not be considered ROM in any way or form. It is RAM, and that is all there is to it.
Alastor the Stylish
Hey! I made a cool game! It's called "I poisoned half the food, so if you eat you might die!" Have a taco.


Level: 114

Posts: 4823/7620
EXP: 16258468
For next: 51099

Since: 03-15-04
From: Oregon, US

Since last post: 2 hours
Last activity: 2 hours
Posted on 01-29-05 12:02 PM Link | Quote
Eh. I wouldn't really call saves RAM, as RAM is erased when there's no power to it, which is obviously not true of battery saves. He's still wrong about it being ROM though, because ROM can't be rewritten, that being why it's called read only memory.
Atma X

Bandit
Level: 43

Posts: 705/801
EXP: 553639
For next: 11407

Since: 03-16-04
From: Derrière vous!!!

Since last post: 43 days
Last activity: 14 days
Posted on 01-29-05 08:53 PM Link | Quote
Yea, Kyouji's right. Yea, it's not ROM, and is definately not RAM. Yes, the memory is in RAM while playing the game, but as soon as you turn it off, RAM is erased (so if the save data never got copied to a different file, then,... bye bye save data, you're at the begining of the game again).

Well ok, now that Kyouji pointed that out, I'm not sure which term is correct for save data, but it is definately not RAM.

And about running being an improper term, look how it's used below (in the Smaller, Green Text):
(they use the word up as the word meaning to load something, and running as the word for the tasks being in session.

Webstie this info came from: http://www.systemsmedic.com/HardwareEdu3.htm

Only a small part of the operating system is stored in ROM. Just enough to get the hardware up and running and to tell the CPU how to locate and load the rest of the operating system from disk.


And also, for more info on RAM and ROM, read this (from the same webpage) :

With the development of random access memory, the CPU can go directly to whichever mailbox it is interested in. The difference between random access memory and this older type of sequential access memory is like comparing CDs to cassette tapes. If you want to listen to the fifth song on a cassette tape (sequential access), you have to start at the beginning of the tape and move past the first four songs, even if you fast-forward the tape. With a CD (random access), you can go directly to song five.

Disks are random access devices, too. Rather than starting from the outside of the disk and reading inward, or from the inside and reading outward, the read/write head can jump directly to the spot where the desired data is stored. There is actually a second type of memory used in personal computers, in addition to RAM. This second type of memory is named read-only memory, or ROM. Unlike RAM chips, ROM chips have software permanently etched into their circuitry. For this reason, ROM is often referred to as firmware-because it's kind of halfway between hardware and software.

Both RAM and ROM allow random access. To distinguish RAM from ROM, RAM is called read/write memory, meaning that you can both retrieve (read) information from RAM, and record (write) information to it. Read-only memory (ROM), instructions are frozen into the circuitry. The feature that sets RAM apart from ROM is its changeability: the fact that you can alter the contents of RAM at will. The other difference between RAM and ROM is how long their memories last. RAM is short-term memory; it forgets everything it knows as soon as you turn off your computer. ROM is long-term memory; it remembers everything it has ever known as long as it lives.

In personal computers, ROM is generally used to store some part of the operating system. Only a small part of the operating system is stored in ROM. Just enough to get the hardware up and running and to tell the CPU how to locate and load the rest of the operating system from disk.


Now, I don't know how the Game itself got the Term ROM, but that is an incorrect term for even that, since it is permanent Memory (if ROM were a correct term for the Game, I wouldn't be able to edit the Game in a Hex Editor now would I)
Maybe the person who came up with that, was refering to the actuall Game Cart, and forgot to distinguish a difference between the two (the Game on a Hard Drive, and the Game on the Cart,... the Game Cart can only be written to once, right?,... that's what I remember seeing somewhere)


(edited by Atma X on 01-29-05 04:58 PM)
(edited by Atma X on 01-29-05 04:59 PM)
(edited by Atma X on 01-29-05 05:01 PM)
(edited by Atma X on 01-29-05 05:02 PM)
(edited by Atma X on 01-29-05 05:05 PM)
(edited by Atma X on 01-29-05 05:07 PM)
(edited by Atma X on 01-29-05 05:08 PM)
(edited by Atma X on 01-29-05 05:18 PM)
(edited by Atma X on 01-29-05 05:19 PM)
(edited by Atma X on 01-29-05 05:20 PM)
FuSoYa
Defender of Relm
Level: 26

Posts: 141/255
EXP: 99529
For next: 2746

Since: 03-15-04
From: Moon

Since last post: 7 days
Last activity: 7 hours
Posted on 01-29-05 11:08 PM Link | Quote
Yea, it's not ROM, and is definately not RAM.

Well, of course it isn't. Topics such as virtual RAM and flash ROM drives aside, a hard drive is traditionally not considered memory, just disk storage.

Mabey the person who came up with that, was refering to the actuall Game Cart, and forgot to distinguish a difference between the two (the Game on a Hard Drive, and the Game on the Cart,... the Game Cart can only be written to once, right?,... that's what I remember seeing somewhere)

He didn't forget anything. They're more accurately referred to as SNES ROM image files because it's an exact image of what was on the original ROM cart. But it's easier to just shorten the name to ROMs. Just as it's easier to refer to SRAM files by name, as that's what they're used for in an emulator.

No one is under the impression that you're literally making parts of your hard drive unwritable, or throwing memory chips in it. ^^ Just as when you take a picture with your camera and put it on your hard drive, you still call it a picture because of what the data represents or is used for.

Yea, I worded that wrong. I was meaning to say that Data and Instructions is loaded from ROM, and is Processed in RAM.

Technically, it's still wrong. Data and instructions are processed in the CPU. That's why it's called the Central Processing Unit, after all. RAM and ROM don't do processing of any sort. They only hold data.

RAM is where EVERYTHING is Run

The address that your CPU is grabbing the next instruction from is considered to be where you are "running" or executing at. The SNES CPU's PC register can be set to a RAM or ROM address, meaning you can run/execute instructions directly from RAM or ROM. Depending on the instruction, the CPU may modify or store something in RAM. Or the instruction could be for modifying an internal CPU register, in which case the SNES RAM isn't touched.

While technically the SNES emulator on your PC is running and accessing everything in RAM, for the purposes of emulation it must not allow operations that wouldn't be permitted on a real SNES system. Thus, as far as your SNES game is concerned, the ROM is still ROM and the RAM is still RAM.

And as Parasyte said, the SNES doesn't usually run anything from RAM.


And about running being an improper term, look how it's used below (in the Smaller, Green Text): (they use the word up as the word meaning to load something

Hardly. They're using "up and running" to mean getting something started.
Parasyte

Bullet Bill
Level: 35

Posts: 247/514
EXP: 267348
For next: 12588

Since: 05-25-04

Since last post: 104 days
Last activity: 32 days
Posted on 01-29-05 11:19 PM Link | Quote
What are you talking about? SRAM is RAM. It is RAM because you have direct write access to it. If it were flash ROM, then it would technically be ROM, but with the ability to erase and rewrite sectors. Same goes for EPROM and EEPROM - technically ROM but with the ability to erase and rewrite sectors.
Flash and (E)EPROM require special registers to be accessed before sectors can be erased or written. With SRAM you simply write to it in order to make any changes to any byte. That is how RAM works. The fact that it is never refreshed (until it loses power, of course) has nothing to do with it being RAM or not.

In order to prove this point, here is an excerpt from the quote you posted:
The feature that sets RAM apart from ROM is its changeability: the fact that you can alter the contents of RAM at will.


It is definitely RAM! Do not confuse the issue.


Further, I never said that 'running' is an improper term. I said that 'perform' is an improper term. I also said that 'interpret' and 'handle' are improper terms. The correct terms are execute, run, etc.


Originally posted by Atma X
Now, I don't know how the Game itself got the Term ROM, but that is an incorrect term for even that, since it is permanent Memory (if ROM were a correct term for the Game, I wouldn't be able to edit the Game in a Hex Editor now would I)


No, what you have is a copy of the data present on a physical ROM chip. It is not a ROM in and of itself; it is a ROM image (or ROM dump; similar to a CD image). If you only had the actual chip from which the game was copied, you would not be able to change it, now would you? That is ROM.


Originally posted by Atma X
Maybe the person who came up with that, was refering to the actuall Game Cart, and forgot to distinguish a difference between the two (the Game on a Hard Drive, and the Game on the Cart,... the Game Cart can only be written to once, right?,... that's what I remember seeing somewhere)


As I said, the difference is that one is a copy. The common misconception is that everyone just calls ROM images, 'ROMs'. I can see how that would confuse you.


(edited by Parasyte on 01-29-05 07:20 PM)
(edited by Parasyte on 01-29-05 07:24 PM)
Pages: 1 2Add to favorites | "RSS" Feed | Next newer thread | Next older thread
Acmlm's Board - I2 Archive - Super Mario World hacking - Question about a program for ASM | |


ABII


AcmlmBoard vl.ol (11-01-05)
© 2000-2005 Acmlm, Emuz, et al



Page rendered in 0.020 seconds.