Register | Login | |||||
Main
| Memberlist
| Active users
| ACS
| Commons
| Calendar
| Online users Ranks | FAQ | Color Chart | Photo album | IRC Chat |
| |
1 user currently in Rom Hacking: |
Acmlm's Board - I2 Archive - Rom Hacking - Geiger's Snes9x Debugger Mark 9 | | | |
Pages: 1 2 3 4 5 6 7 8 9 10 | Add to favorites | "RSS" Feed | Next newer thread | Next older thread |
User | Post | ||
Parasyte Bullet Bill Level: 35 Posts: 366/514 EXP: 267348 For next: 12588 Since: 05-25-04 Since last post: 104 days Last activity: 32 days |
| ||
That makes no sense, to be honest. Provide use with a test case (name of the game, and a sample breakpoint, for starters) so that it may be looked into. The problem may be caused by a very nasty bug. As for "breaking when a register has a certain value" I have added this functionality to FCEUXD a few weeks back in the form of conditionals. You are able to use a set of C-like [if] statements to cause a break only when a certain condition is met. The only operands currently supported (in the latest, incomplete build, which I haven't sent to anyone) are A, X, Y, PC, S, P, (memory) and immediate values. I could also do some pointer indirection logic (like (*(u8*)PC == 0xA9) to watch for LDA instructions, or (*PC == 0xA940) to watch for LDA #$40 only... ) As well as a whole slew of other syntax additions. It's pretty much what I have been wanting since FCEUd's inception. As you can probably tell, it's quite the powerful tool. |
|||
Geiger Buster Beetle Level: 34 Posts: 335/460 EXP: 241080 For next: 12571 Since: 03-15-04 From: Indianapolis, IN, USA Since last post: 6 hours Last activity: 6 hours |
| ||
I combed through the thread and came up with this list: Mark 9 Release 7 - Resetting breakpoints - Proper read / write breaking for MV and other dual mode commands - Intermittant tracing issues - Indirect addressing appears to give false positives (bug I found recently) Mark 9 Release 8? - "Aero" Mark 10 - PPU Viewer - Save Cheat Search Options - Color-coded usage - Usage meter - Range breakpoints - Multiple freeze ranges - Register editing I make no guarantees that there will ever be a Mark 10, let alone that any of the stated features will actually be implemented or even given serious thought. That list just indicates "when" something will happen, should it happen at all. My current project schedule, which is highly subject to change at a whim, and may be pre-empted by real work at any time is as such: Temporal Flux Beta: Overworld Event Editor GSD: Release 7 GSD: Release 8 (provided I can figure out what is wrong with Aero) Temporal Flux v2.0 GSD: Mark 10 This will probably take me well into next year. ---T.Geiger |
|||
FloBo Koopa Level: 17 Posts: 29/101 EXP: 20723 For next: 4020 Since: 09-11-04 Since last post: 3 days Last activity: 13 hours |
| ||
I toyed around with the NTSC-version of Super Mario Kart. I used track designer to edit the first track "Mario Cuircuit 1". As the program expands the rom and then writes the track to 80000h, I set a read and exec-breakpoint to this offset. After pressing run for the first time, I got this on the text output: $00/FF70 78 SEI A:0000 X:0000 Y:0000 P:EnvMXdIzc $81/E451 A5 00 LDA $00 [$00:0000] A:0001 X:0032 Y:F637 P:envmxdIzC after pressing run another three times, this was put out: $84/DFEB 65 00 ADC $00 [$00:0000] A:0038 X:1466 Y:0006 P:envmxdIzc $84/DFEB 65 00 ADC $00 [$00:0000] A:0030 X:14B0 Y:0004 P:envmxdIzc $84/E151 65 00 ADC $00 [$00:0000] A:00A4 X:01A2 Y:0004 P:envmxdIzc when the third line appeared on the screen, I saw the Nintendo-logo on the screen... then pressed run another sixteen times, the text out was appended by: $84/E151 65 00 ADC $00 [$00:0000] A:00A4 X:01A2 Y:0004 P:envmxdIzc $84/E151 65 00 ADC $00 [$00:0000] A:001A X:02F3 Y:0004 P:envmxdIzc $84/E151 65 00 ADC $00 [$00:0000] A:01B0 X:0307 Y:0004 P:envmxdIzc $84/E151 65 00 ADC $00 [$00:0000] A:00BE X:0320 Y:0006 P:envmxdIzc $84/E151 65 00 ADC $00 [$00:0000] A:01AE X:0334 Y:0006 P:envmxdIzc $84/E151 65 00 ADC $00 [$00:0000] A:017A X:03D4 Y:0004 P:envmxdIzc $84/E151 65 00 ADC $00 [$00:0000] A:0160 X:03EA Y:0006 P:envmxdIzc $84/E151 65 00 ADC $00 [$00:0000] A:01A0 X:0416 Y:0004 P:envmxdIzc $84/E151 65 00 ADC $00 [$00:0000] A:008C X:0426 Y:0004 P:envmxdIzc $84/E151 65 00 ADC $00 [$00:0000] A:0460 X:0429 Y:0004 P:envmxdIzc $84/E151 65 00 ADC $00 [$00:0000] A:0433 X:042F Y:0005 P:envmxdIzc $84/E151 65 00 ADC $00 [$00:0000] A:045D X:0458 Y:0007 P:envmxdIzc $84/E151 65 00 ADC $00 [$00:0000] A:04C0 X:046E Y:0004 P:envmxdIzc $84/E151 65 00 ADC $00 [$00:0000] A:04A9 X:0474 Y:0005 P:envmxdIzc $84/E151 65 00 ADC $00 [$00:0000] A:0478 X:0481 Y:0004 P:envmxdIzc $84/E151 65 00 ADC $00 [$00:0000] A:0408 X:04D8 Y:0005 P:envmxdIzc $84/E151 65 00 ADC $00 [$00:0000] A:05B6 X:04DD Y:0004 P:envmxdIzc (all that seems kind of nonsense to me cause I don't see the point were my breakpoint is reached at all... ) Perhaps I screwed up the tool when having pressed again and again in a very short time, cause the first time I ran this game like that, it stopped at the correct position: namely when Mario Circuit 1 was loaded into the course-select menu. can anyone reproduce this error, or is it just me being too stupid to handle this? (I tried this on several computers and got the same result in each case...) |
|||
Parasyte Bullet Bill Level: 35 Posts: 368/514 EXP: 267348 For next: 12588 Since: 05-25-04 Since last post: 104 days Last activity: 32 days |
| ||
I see. In the SNES memory map, 08:0000 does not exist; it's virtually mapped to 00:0000. (Which in turn is mapped to SNES RAM address 7E:0000, thus you get break hits on every instruction which accesses this address. It will certainly be a LOT -- this address is often used for input args and return values to/from many, many functions.) I do not know what address you are actually attempting to watch, but "80000h" (08:0000) is definitely not correct. Perhaps it's 800000h (80:0000) that you want? (edited by Parasyte on 03-19-05 06:58 PM) |
|||
MathOnNapkins Math n' Hacks Level: 67 Posts: 1610/2189 EXP: 2495887 For next: 96985 Since: 03-18-04 From: Base Tourian Since last post: 1 hour Last activity: 32 min. |
| ||
I'm guessing that he's using a rom address that he got out of an offsets document, in which case it would need to be converted to an actual SNES address. Given that SMK is hirom, I think it would be something like $80000 -> $C8:0000 in game (just add $C0 to the bank). I'm not terribly familiar with hirom addressing, but that's the best I can come up with. This assumes no header, btw. If there was a header, subtract $200 from that address in the absolute portion. | |||
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: 3825/8210 EXP: 18171887 For next: 211027 Since: 03-15-04 From: Canada, w00t! LOL FAD Since last post: 2 hours Last activity: 2 hours |
| ||
Originally posted by Geiger I don't recall the specific code, but I know I had added a code to the cheat list (which contained 4 codes, including that one), and every time I tried to remove it, it would crash after I closed the dialog. I had to remove it in ZSnes instead. I do recall that I didn't give it a name, and I'm pretty sure it started with 00. (It was a PAR code, using Super Mario World.) Mathonnapkins: They do when they're using the 'cheat' feature to activate modified or unused features or manipulate memory for debugging purposes. Also, I think I managed to crash it once by putting in a negative range for the disassembly (or possibly memory dump). I'm not entirely sure I actually did that, since I closed the dialog before I could tell, but I think I accidentally entered an end address lower than the start address, and it crashed. I'll try it next time I use it. |
|||
KaOSoFt Goomba Level: 8 Posts: 17/20 EXP: 2065 For next: 122 Since: 05-18-04 From: Colombia Since last post: 156 days Last activity: 156 days |
| ||
I don't remember if I already asked you this, but I'd like to know if you are going to release the source code someday... just curious. | |||
Geiger Buster Beetle Level: 34 Posts: 336/460 EXP: 241080 For next: 12571 Since: 03-15-04 From: Indianapolis, IN, USA Since last post: 6 hours Last activity: 6 hours |
| ||
I'd like to know if you are going to release the source code someday I have no plans to do this. I do not care to release source code for any of my projects, for a multitude of reasons. That said, should the official development team ever care to take a look at my code, they are welcome to it. And I would be happy to describe the format of the .usage files if someone wanted to write a third-party utility for it. ---T.Geiger |
|||
Lin2tagada Newcomer Level: 5 Posts: 4/7 EXP: 281 For next: 248 Since: 03-16-05 Since last post: 182 days Last activity: 182 days |
| ||
Are the previous releases of your debugger still available for download ? Snes9x v1.43 runs extremely slowly on my machine, but v1.42 did fine, so I'd like to download the Mark 6, which was the last release based on v1.42 |
|||
Geiger Buster Beetle Level: 34 Posts: 337/460 EXP: 241080 For next: 12571 Since: 03-15-04 From: Indianapolis, IN, USA Since last post: 6 hours Last activity: 6 hours |
| ||
Are the previous releases of your debugger still available for download? Prior to Mark 9, I did not store the program on my server. ---T.Geiger (edited by Geiger on 03-23-05 01:25 PM) |
|||
Dark Ludwig Red Paratroopa Level: 21 Posts: 29/172 EXP: 45740 For next: 4203 Since: 09-17-04 From: Georgia Since last post: 9 days Last activity: 2 days |
| ||
Why can't I run Kirby's Dream Course in your debugger? It always crashes for some wierd reason..... | |||
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: 3964/8210 EXP: 18171887 For next: 211027 Since: 03-15-04 From: Canada, w00t! LOL FAD Since last post: 2 hours Last activity: 2 hours |
| ||
And why am I getting breakpoints here? $00/8610 86 9D STX $9D [$00:009D] A:9308 X:00FF Y:0002 P:envMXdizc $00/8612 10 43 BPL $43 [$8657] A:9308 X:00FF Y:0002 P:envMXdizc $00/8614 CA DEX A:9308 X:00FF Y:0002 P:envMXdizc $00/8615 10 F7 BPL $F7 [$860E] A:9308 X:00FF Y:0002 P:envMXdizc $00/8617 A0 02 LDY #$02 A:9308 X:00FF Y:0002 P:envMXdizc $00/8619 8C 0B 42 STY $420B [$00:420B] A:9308 X:00FF Y:0002 P:envMXdizc It breaks on the last line, but the only breakpoint I have is a read/write of 7E00FE. ...Eventually making it crash. (edited by HyperHacker on 03-28-05 11:02 PM) |
|||
MathOnNapkins Math n' Hacks Level: 67 Posts: 1659/2189 EXP: 2495887 For next: 96985 Since: 03-18-04 From: Base Tourian Since last post: 1 hour Last activity: 32 min. |
| ||
This initiates a DMA channel write (writing to $420B). In all likelyhood (in fact almost definitely) the dma process is accessing that address. Why it crashes, I have no idea. | |||
Parasyte Bullet Bill Level: 35 Posts: 392/514 EXP: 267348 For next: 12588 Since: 05-25-04 Since last post: 104 days Last activity: 32 days |
| ||
Originally posted by HyperHacker Looks like someone is in need of some SNES docs. |
|||
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: 3990/8210 EXP: 18171887 For next: 211027 Since: 03-15-04 From: Canada, w00t! LOL FAD Since last post: 2 hours Last activity: 2 hours |
| ||
I thought it might be that, but with other addresses I would get output that actually said it was caused by DMA; why not with this one? | |||
Parasyte Bullet Bill Level: 35 Posts: 402/514 EXP: 267348 For next: 12588 Since: 05-25-04 Since last post: 104 days Last activity: 32 days |
| ||
If ever in doubt, look it up! There are probably quite a few cases where you will get breaks for a seemingly 'unknown' resaon. The MVN/MVP instructions are a pretty good example. |
|||
Geiger Buster Beetle Level: 34 Posts: 354/460 EXP: 241080 For next: 12571 Since: 03-15-04 From: Indianapolis, IN, USA Since last post: 6 hours Last activity: 6 hours |
| ||
Mark 9 Release 7 Update: http://geigercount.net/crypt/snes9x1.43.ep9r7.update.7z Fixed (edit) Sorry folks, wrong file in the archives. I will upload the correct files by noon tomorrow (Indiana time). ---T.Geiger (edited by Geiger on 04-11-05 10:54 AM) |
|||
Parasyte Bullet Bill Level: 35 Posts: 435/514 EXP: 267348 For next: 12588 Since: 05-25-04 Since last post: 104 days Last activity: 32 days |
| ||
:OOOO This is eagerly anticipated. I'm always good for a quick bug-fix. Any plans for conditional breakpoints in ep10? I've discovered a situation in a specific game where this it is pretty much required. On a similar note, the reason I finally broke down and added conditional breakpoints to FCEUXD was due to the same situation. (You see, I had been planning this feature for quite some time, because I knew I would eventually need it. And I happened to come across such a situation just in time for the next FCEUXD release... True story!) Oh, and no need to go all fancy on it, writing an enigmatic machine code language just to check conditions (*cough* even though it only takes about 10 minutes from plan to implimentation, and reaps great advantages *cough*). I think even a simple list box to add 'PC addresses to ignore' would suffice. And if you want to expand on it, allow addresses ranges, and then do the same for the registers ... using value ranges. ;D I haven't mentioned this previously, but if you would ever like some additional help, I'm willing to write some [nasty] code for you. Just be aware that the FCE Ultra sources have corrupted me in certain ways. I think I tend to use a lot of silly "hacks" for particular purposes because of the way it's written. For instance, when moving a Window in FCEUXD, the WM_MOVE window message must be handled in order to call StopSound(); to keep the audio from annoying the hell out of you as the buffer loops. But that's not the problem; the problem is that for each module that contains a movable window, I've extern'd StopSound() locally [to each module]! Wouldn't it be better to just use a damn header?! What's wrong with me!!?! But any way, there's my proposal to you! (edited by Parasyte on 04-11-05 01:58 PM) |
|||
Geiger Buster Beetle Level: 34 Posts: 358/460 EXP: 241080 For next: 12571 Since: 03-15-04 From: Indianapolis, IN, USA Since last post: 6 hours Last activity: 6 hours |
| ||
The update is now online. ---T.Geiger |
|||
Chickenlump Level: 41 Posts: 545/722 EXP: 474192 For next: 5953 Since: 03-15-04 From: Columbia City Indiana Since last post: 3 hours Last activity: 4 min. |
| ||
I'm sure Geiger will update and post the latest version here, so I thought I'd toss in a quick question (and not even open a new thread for it.. I rule )... Could someone explain the MVN command for me? I don't need a whole lot to go on really, just a quickie explanation will do. I've played around with quite a few roms with the debugger, but Chrono Trigger seems to use it like there's no tommorow. |
Pages: 1 2 3 4 5 6 7 8 9 10 | Add to favorites | "RSS" Feed | Next newer thread | Next older thread |
Acmlm's Board - I2 Archive - Rom Hacking - Geiger's Snes9x Debugger Mark 9 | | | |