Language…
18 users online:  Ahrion, Beed28, CircleFriendo, crocodileman94, DanMario24YT, gizmo_321, Golden Yoshi, Heitor Porfirio, Maw, Mohamad20ZX, OEO6, OrangeBronzeDaisy, Papangu, signature_steve, SMW Magic, steelsburg, TrashCity, yoshisisland - Guests: 296 - Bots: 502
Users: 64,795 (2,370 active)
Latest user: mathew

Need help with hacking *insert game here* ? Ask away!

Originally posted by YoshiNextGen
Is 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).
Thanks.
When Yoshi dies too much, he'll come back to haunt you...

If you want to play any of my hacks, just PM me.

My Stuff:
[1][2][3][4][5][6][7]
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?
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
News:
1: FOUR YEARS WITH SMWC! THANK YOU SO MUCH GUYS!
2: Jubeat Saucer is coming! It's a great game in the series
SMW:
- Super Mega Mario World. Current level in progress: World 3 LVL 5
- STILL Doing a Let's Play on Facebook
SMK: Getting started. No data available
DDR: Files and installer are Here. Link to blog is HERE. Pack 8: The SMASHING PACK. PM me if you want to put recommended Super Smash Brothers Brawl songs so I could put into my list (NOTE: 1 character per song (I only have Mario, Marth and Yoshi done) so I have like over 30 more songs to go). Next song: A song from Snake
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
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.
Originally posted by Jagfillit
I need some help working with Mega Man 4.


Mega Man 4 (GB) or Mega Man 4 (NES)?

Originally posted by Jagfillit
I'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 Jagfillit
Being 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.

Hacking Super Mario World since 28 February 2009
SMWDISC
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:

Code
dc.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.
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".

Hacking Super Mario World since 28 February 2009
SMWDISC
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?
Originally posted by Jagfillit
Is 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.

Hacking Super Mario World since 28 February 2009
SMWDISC
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?
Originally posted by Buster Beetle
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?


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.
Alright, that should be enough information. I think I'll go with CA65. Thank you very much, as I really needed this.
Originally posted by Hamtaro126
And 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


Hacking Super Mario World since 28 February 2009
SMWDISC
Is there an editor for Duck Hunt?
When Yoshi dies too much, he'll come back to haunt you...

If you want to play any of my hacks, just PM me.

My Stuff:
[1][2][3][4][5][6][7]
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?
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?

My first attempt at porting!

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.
I'm using a tutorial to hack nes games,and it says I need to make a table file to edit text.But it says that I need to use nesticle or hexposure to find the hex values of the letters and such,but nesticle and hesposure are for DOS,and I use windows.Is their another way to find the hex values for the text?