 |
|
 |
|
| Need help with hacking *insert game here* ? Ask away! |
|
Forum Index - Non-SMW Hacking - Misc. ROM Hacking - Need help with hacking *insert game here* ? Ask away! |
|
|
|
|
| Posted on 2009-08-17 09:54:34 AM |
Link | Quote |
|
|
Is there anything for Kid Icarus?
|
|
| Posted on 2009-08-17 11:41:01 AM |
Link | Quote |
|
Originally posted by YoshiNextGenIs there anything for Kid Icarus?
There is a full-fledged level editor for it here, created by DahrkDaiz (also known as the creator of those wonderful SMB3 hacks).
|
|
| Posted on 2009-08-18 08:24:32 AM |
Link | Quote |
|
|
Thanks.
|
|
| Posted on 2009-08-19 02:06:18 PM |
Link | Quote |
|
I need help with hacking Super mario akrt. I use track designer and Im wondering would the CPU (the other racers ) like follow the new road or would they stick to the orignal route?
And aslo does anyone know a program where I can edit the racers sprites and stuff?
|
|
| Posted on 2009-08-19 09:50:15 PM |
Link | Quote |
|
Here
The problem is that the English one is now lost. But we still have the Japanese one. I have the English one though, but I don't know if you know the Japanese one... Just try the editor.
This will help you.
For editing sprites on SMK. Try Molster. You need Java though
|
|
| Posted on 2009-08-20 09:20:40 AM |
Link | Quote |
|
|
I checked a youtube video of how to edit sprites and i looks extremely hard. Anyway can any on else answer my othe question. Thanks
|
|
| Posted on 2009-08-21 10:29:48 AM |
Link | Quote |
|
I need some help working with Mega Man 4. I'm trying to disassemble it via various programs, but nothing seems to work.
Being inexperienced with automatic disassembling clearly isn't helping me here.
|
|
| Posted on 2009-08-21 02:33:32 PM |
Link | Quote |
|
Originally posted by JagfillitI need some help working with Mega Man 4.
Mega Man 4 (GB) or Mega Man 4 (NES)?
Originally posted by JagfillitI'm trying to disassemble it via various programs, but nothing seems to work.
Read the documentation for those programs, and check that you correctly start the programs. You might need to start the programs from the command line, with the correct command-line options.
Originally posted by JagfillitBeing inexperienced with automatic disassembling clearly isn't helping me here.
I have experience with disassembly. To disassemble Mario Paint (SNES), I created a new disassembler called Foret, the Free Ordinary Rom Exploration Tool. (The current version of Foret has too many bugs and too few features.) You might want to create a new disassembler for Mega Man 4.
I cannot help with Mega Man 4 because I never play that game in emulator.
|
|
| Posted on 2009-08-21 08:26:25 PM |
Link | Quote |
|
That's the NES game. And I have read the documents for the programs I've tried, but none seem to recognize the opcodes correctly. With some I get stuff like this:
Codedc.b $2 ;?
adc $%,y
dc.b $7e ;?
rol $0,y
dc.b $9e ;?
dc.b $a7 ;?
dc.b $a7 ;?
dc.b $ff ;?
dc.b $42 ;?
rol $0,y
Others return with question marks for opcodes they can't read.
It seems to be this way with other Mega Man ROMs as well.
|
|
| Posted on 2009-08-22 12:54:14 PM |
Link | Quote |
|
Originally posted by Jagfillit... none seem to recognize the opcodes correctly.
That is because $02, $42, $9e, $a7 and $ff are not valid opcodes of the 6502 processor. The NES does not understand such opcodes.
Two possible causes:
1. The bytes in that part of the ROM are not machine code. These bytes might be a read-only table, or something else.
2. The bytes are machine code, but a read-only table (or something else) before the machine code confused the disassembler.
For example, this code exists in Mario Paint (SNES):
Code/*01e0ef 2b*/ pld
/*01e0f0 ab*/ plb
/*01e0f1 28*/ plp
/*01e0f2 6b*/ rtl
/*01e0f3*/ .db $ff, $ff, $fc, $ff, $f0
/*01e0f8*/ .db $ff, $c0, $ff, $00, $ff, $00, $fc, $00
/*01e100*/ .db $f0, $00, $c0
/*01e103 ad 04 01*/ lda.w $0104
/*01e106 8d 00 21*/ sta.w $2100
/*01e109 ad 05 01*/ lda.w $0105
/*01e10c 8d 01 21*/ sta.w $2101
If the disassembler would interpret the .db part as machine code, then the confused disassembler would not output "lda.w $0104".
|
|
| Posted on 2009-08-22 01:20:19 PM |
Link | Quote |
|
|
Is there a known disassembler that can read tables, or will I have to do this manually?...And furthermore, how can I tell when a table starts or ends?
|
|
| Posted on 2009-08-22 11:06:28 PM |
Link | Quote |
|
Originally posted by JagfillitIs there a known disassembler that can read tables, or will I have to do this manually?
I am not NES hacker so I know nothing about NES disassemblers.
There are two ways to automatically separate tables from machine code. The first way is to trace jumps; a jsr $89ab suggests to disassemble from address $89ab to the next rts. I guess that NES disassemblers never trace jumps, because the NES mapper allows multiple addresses $89ab, and each disassembler knows not how to pick which address $89ab to use.
The second way is to use an emulator with a debugger that can dump a disassembly. While you play the game, the debugger identifies the running code. The dump shows the running code but assumes that everything else is tables. I know not if any NES emulator has this feature.
Otherwise, you must work manually.
Originally posted by Jagfillit...And furthermore, how can I tell when a table starts or ends?
Look for the rts or jmp that ends a part of the machine code. The next thing after the rts or jmp might be more machine code, or might be a table.
Here is example from Mario Paint (SNES):
Code/*008227 7a*/ ply
/*008228 28*/ plp
/*008229 60*/ rts
/*00822a dc ec fc*/ jml [$fcec]
/*00822d dd ed fd*/ cmp.w $fded,x
/*008230 da*/ phx
/*008231 ea*/ nop
/*008232 fa*/ plx
/*008233 db*/ stp
/*008234 eb*/ xba
/*008235 fb*/ xce
/*008236 d8*/ cld
/*008237 e8*/ inx
/*008238 f8*/ sed
/*008239 d9 e9 f9*/ cmp.w $f9e9,y
/*00823c ad 89 05*/ lda.w $0589
/*00823f d0 06*/ bne +6 /*$8247*/
/*008241 a5 aa*/ lda $aa
Lines $008227..$008229 look like machine code ending with rts. Lines $00822a..$008239 are nonsense, if they are machine code. The cmp has no branch, the phx and plx guard a nop for no reason, and so on. These lines must be a table.
Code.db $dc, $ec, $fc, $dd, $ed, $fd, $da, $ea, $fa
.db $db, eb, fb, $d8, $e8, $f8, $d9, $e9, $f9
The end of the pattern might be the end of the table. If so, then line $00823c might be the start of machine code.
The illegal opcodes make that NES tables are more obvious. SNES 65816 has almost no illegal opcodes, but NES 6502 has many.
Sometimes, there is more difficulty to find the end of table and start of machine code. Here is another example from Mario Paint (SNES):
Code/*0087a8 ad d6 09*/ lda.w $09d6
/*0087ab 0a*/ asl a
/*0087ac aa*/ tax
/*0087ad 7c b0 87*/ jmp.w ($87b0,x)
/*0087b0 eb*/ xba
/*0087b1 8b*/ phb
/*0087b2 00 c9*/ brk $c9
/*0087b4 10 cc*/ bpl -52 /*$8782*/
/*0087b6 60*/ rts
/*0087b7 c4 d6*/ cpy $d6
/*0087b9 c4 d8*/ cpy $d8
/*0087bb bb*/ tyx
/*0087bc 9b*/ txy
Lines $0087a8..$0087ad look like machine code ending with jmp. Lines from $0087b0 are nonsense. The table is very long, but seems to end near $008956.
Code/*008940 42*/ .db $42
/*008941 a9 06 8d*/ lda #$8d06
/*008944 0b*/ phd
/*008945 21 8d*/ and ($8d,x)
/*008947 0e 01 a9*/ asl.w $a901
/*00894a 66 8d*/ ror $8d
/*00894c 0c 21 8d*/ tsb.w $8d21
/*00894f 0f 01 a9 f0*/ ora.l $f0a901
/*008953 8d 16 21*/ sta.w $2116
/*008956 a9 3f 8d*/ lda #$8d3f
/*008959 17 21*/ ora [$21],y
/*00895b a9 80 8d*/ lda #$8d80
/*00895e 15 21*/ ora $21,x
/*008960 a2 10 a9*/ ldx #$a910
/*008963 ff 8d 18 21*/ sbc.l $21188d,x
/*008967 8d 19 21*/ sta.w $2119
/*00896a ca*/ dex
/*00896b d0 f7*/ bne -9 /*$8964*/
/*00896d c2 30*/ rep #PM | PX
/*00896f a9 fe 3d*/ lda #$3dfe
/*008972 22 24 e0 01*/ jsl $01e024
/*008976 a9 ff 3f*/ lda #$3fff
/*008979 22 33 e0 01*/ jsl $01e033
Lines $008940..$00894f look like nonsense. Line $008953 might be machine code, because SNES has hardware register $2116. Lines $00896a..$00896b look like normal decrement-and-branch. My first guess is that the machine code starts at $008951 and uses 8-bit A, so "0f 01" ends the table, and "a9 f0" disassembles to "lda #$f0". My first guess might be wrong; the machine code might start earlier because the "8d" in the table might be "sta" opcodes. I must work backward to find the start of the machine code.
|
|
| Posted on 2009-09-02 10:07:49 PM |
Link | Quote |
|
|
I have a general question here. Do there exist specific assemblers for the NES, and if so, which is the best one you would recommend, and where would I find it?
|
|
| Posted on 2009-09-03 09:38:51 PM |
Link | Quote |
|
Originally posted by Buster BeetleI have a general question here. Do there exist specific assemblers for the NES, and if so, which is the best one you would recommend, and where would I find it?
Either X816 (VERY OLD assembler), ASM6 (by Loopy of LoopyNES fame), DASM or CA65(part of the CC65 package), WLA-DX is not recommended (my buddy Memblers from NESDEV.com agreed) because if you have a disassembly in anything but WLA-DX it will give you trouble when recreating it, Also note that the linker and stuff is funky,
And WLA also won't accept these values:
Label1 = <Value
Label2 = >Value
... and so on
In other words, Pick your Assembler wisely, I'd recommend X816 or CA65.
|
|
| Posted on 2009-09-04 12:25:42 AM |
Link | Quote |
|
|
Alright, that should be enough information. I think I'll go with CA65. Thank you very much, as I really needed this.
|
|
| Posted on 2009-09-04 10:13:56 PM |
Link | Quote |
|
Originally posted by Hamtaro126And WLA also won't accept these values:
Label1 = <Value
Label2 = >Value
WLA can do so, if you use the .def directive.
Code;;; example.s
.memorymap
defaultslot 0
slot 0 start $00 size $10
.endme
.rombanksize $10
.rombanks 1
.bank 0
.orga $00
.def Label1 = <$5678
.def Label2 = >$5678
.rept $8
.db Label1
.endr
.rept $8
.db Label2
.endr
Code$ cat example.link
[objects]
example.o
$ wla-6502 -o example.s
$ wlalink -r example.link example.out
$ hexdump -C example.out
00000000 78 78 78 78 78 78 78 78 56 56 56 56 56 56 56 56 |xxxxxxxxVVVVVVVV|
00000010
|
|
| Posted on 2009-09-20 06:51:15 AM |
Link | Quote |
|
|
Is there an editor for Duck Hunt?
|
|
| Posted on 2009-09-22 09:38:09 PM |
Link | Quote |
|
|
its alaways ben my biggest dream to make a chrono trigger game so does anyone know where i can get a program for hacking chrono trigger?
|
|
| Posted on 2009-10-01 10:34:34 PM |
Link | Quote |
|
I got Visine, for the editing of Megaman 2. When I open the program I get the message "Press KEY_1 for MM1
Press KEY_2 for MM2"
I press the "2" key on my keyboard and it closes. So... What do I do?
|
|
| Posted on 2009-11-09 10:08:08 AM |
Link | Quote |
|
I found this video of someone hacking Pokemon Stadium:
http://www.youtube.com/watch?v=uiaIhuLBAjo
Yes, that's what Missingno actually looks like in Stadium, complete with the Weegee Eyes (http://pooparchive.com/wiki/index.php/Weegee). Unfortunately, the only Gameshark Codes I can find for Stadium, are from people who have never played Pokemon before (they refer to the Moves as spells). I need help hacking the Stadium ROM so I can play as the Weegee/Missingno/Substitute thing, so I can pwn that awful game with WEEGEE.
|
| Last edited on 2009-11-09 10:09:12 AM by Kuribo. |
|
|
|
|
|
|
Forum Index - Non-SMW Hacking - Misc. ROM Hacking - Need help with hacking *insert game here* ? Ask away! |
|
|
 |
|
 |
The purpose of this site is not to distribute copyrighted material, but to honor one of our favourite games.
Copyright © 2005 - 2013 - SMW Central Legal Information - Link To UsTotal queries: 29
|
|
|
|