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 Rom Hacking: hukka | 2 guests
Acmlm's Board - I2 Archive - Rom Hacking - Geiger's Snes9x Debugger Mark 9 | |
Pages: 1 2 3 4 5 6 7 8 9 10Add 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
Posted on 03-18-05 08:06 PM Link | Quote
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
Posted on 03-18-05 08:07 PM Link | Quote
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
Posted on 03-20-05 12:25 AM Link | Quote
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
Posted on 03-20-05 03:54 AM Link | Quote
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.
Posted on 03-20-05 04:58 AM Link | Quote
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
Posted on 03-21-05 08:16 AM Link | Quote
Originally posted by Geiger
this thing sure likes to crash when closing the cheat menu

Yes, that is a long-time bug that I know of well. Not sure if its their code or mine causing the problem (I would guess it is their code, since I have not really mucked around with that particular window). The real issue is that I can not reproduce the crash consistantly, and never when I am in debug mode.

If someone can give me a step-by-step that reproduces the problem every time, I would be very grateful.

---T.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
Posted on 03-22-05 08:43 PM Link | Quote
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
Posted on 03-22-05 11:39 PM Link | Quote
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
Posted on 03-23-05 08:44 PM Link | Quote
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
Posted on 03-23-05 10:24 PM Link | Quote
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
Posted on 03-24-05 01:41 AM Link | Quote
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
Posted on 03-29-05 09:01 AM Link | Quote
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.
Posted on 03-29-05 09:21 AM Link | Quote
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
Posted on 03-29-05 02:34 PM Link | Quote
Originally posted by HyperHacker
And why am I getting breakpoints here?
...


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
Posted on 04-01-05 06:11 AM Link | Quote
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
Posted on 04-01-05 07:07 AM Link | Quote
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
Posted on 04-12-05 02:20 AM Link | Quote
Mark 9 Release 7

Update:
http://geigercount.net/crypt/snes9x1.43.ep9r7.update.7z


Fixed
- Breakpoints no longer reset when resetting emulation
- Proper read / write breaking and usage map marking for MV and other dual mode commands
- Trace flag now resets when resetting emulation. Keeps certain visual problems from occurring when tracing is not enabled (Zelda: LttP). Visual issues will still be present when tracing is enabled though, due to the way the Snes9x code handles the trace flag.



(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
Posted on 04-12-05 06:55 AM Link | Quote
: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
Posted on 04-12-05 07:23 PM Link | Quote
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.
Posted on 04-20-05 02:56 AM Link | Quote
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 10Add to favorites | "RSS" Feed | Next newer thread | Next older thread
Acmlm's Board - I2 Archive - Rom Hacking - Geiger's Snes9x Debugger Mark 9 | |


ABII


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



Page rendered in 0.018 seconds.