Register | Login | |||||
Main
| Memberlist
| Active users
| ACS
| Commons
| Calendar
| Online users Ranks | FAQ | Color Chart | Photo album | IRC Chat |
| |
1 user currently in Super Mario World hacking: |
Acmlm's Board - I2 Archive - Super Mario World hacking - Question about a program for ASM | | | |
Pages: 1 2 | Add 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 |
| ||
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 |
| ||
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. |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
Originally posted by HyperHacker 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 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 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 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 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 |
| ||
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 |
| ||
Originally posted by Parasyte 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 |
| ||
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 |
| ||
Originally posted by BrooklynMario 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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
"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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 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 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 2 | Add 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 | | | |