Jump to content
Sign in to follow this  
bruddog

NESTOPIA SAVE STATE LOCATIONS AND INFO

Recommended Posts

BUMP 3-24

ADDED

-static DOWN NUMBER

-static TOTAL TEAM FIRST DOWN LOCATIONS

these required the game to be at a certain state before. These new locations you can save any time and find.

-play information codes (A8-AB)

Trying to compile all thee nestopia save state info in one document. Most of the stuff had been found before but there are a few new things. At least I didn't see them anywhere before.

Jstout feel free to add additional info you have. MGK or Rod feel free to make better looking and add to hacking directory links

Nestopia save state locations:

I think all of the value below are offset 38 hex from their location in RAM.

QUARTER TIME

Seconds: A2

Minutes: A3

Stored in decimal format. Thus 04 represents 4 and 35 represents 35 seconds.

TEAMS

Home Team: A4

Away Team: A5

(00= BUF…. 1B=ATL. Teams stored in hex format. Top to bottom. Left to right. AFC to NFC)

.

PLAYER ICONS

Player 1 Icon: C0

Player 2 Icon: C1

(00=QB, 01=RB1, 02=RB2, 03=WR1, 04=WR2, 05=TE…0A=RT)

(0B=LE…15=SS, 16=Kicker, 17=Punter)

As soon as a pass is released the Icon will switch to the player targeted.

LOCATION OF BALL

Current Ball or Ball Shadow Location Y: C7,C8

During a pass this will give you the location of the shadow. The middle of of the field is 00 80. The out of bounds is roughly 00 28 on the top and 00 C8 on the bottom. The field is roughly 20 yards wide.

Current Play Hike Location X: (B7,B8)

Previous Play Hike/Current Ball Location X: (CB,CC)

(Before the ball is hiked this holds the previous hike location, after the ball is snapped it holds the current ball location)

First Down Yard Marker X: (BA, BB)

The first byte is the low byte the second byte is the high byte.

D4 08.

00 08 represents midfield. Every x08 in the low byte represents 1 yard. This yardage convention was discovered by konforce long ago when he found the yardage markers.

Examples (from home perspective)

0 yardline= 90 06

18 yardline= 00 07

50 yardline = 00 08

82 yardline = 00 09

Endzone line= 90 09

I don’t think the “fixed” location of the other marker is stored anywhere. Just add 10 yards to get its position. Perhaps there is a byte somewhere that stores the distance between markers (Either 10 if stored in decimal or 0A if stored in hex). Haven’t found that anywhere but not that useful anyways.

RANDOM “MESSAGES” (ASCII STRING)

Things like “Fumble” will show up at the following bytes:

Messages: EB5-EBF

BALL ARC TRACKER AND PASS TIMER

Ball Arc Tracker: D9 (low byte) DA (high byte)

This doesn’t seem to follow the other yardage conventions for Y distance so I think its purely an arc tracker. Once the pass is released, it counts up until the ball gets to the top of its arc then counts back down until the ball is caught or hits the ground and bounces. For the latter cases it will count back up again briefly)

Pass Timer: E3(low byte), E4 (high byte)

This appears to track the time remaining until the ball hits the ground.

Combining this with the player location and current ball location you can determine overthrows, throws OOB.

QUARTER AND TOTAL SCORE

Home Away

1Q: 3CD 1Q: 3D2

2Q: 3CE 2Q: 3D3

3Q: 3CF 3Q: 3D4

4Q: 3D0 4Q: 3D5

Total: 3D1 Total: 3D6

Numbers stored in decimal format.

PLAYER DATA:(3D9-6A0)

Various Player Data is stored in these bytes:

Player X,Y coordinates:

The x, y coordinates follow the same yardage convention as mentioned above

Home

Format (x low, x, high, y low, y high)

O D

QB RE 3EB,3EC,3ED,3EE (add x20 to get to the next player location)

RB1 NT

RB2 LE

WR1 ROLB

WR2 RILB

TE LILB

C LOLB

LG RCC

RG LCB

LT FS

RT SS

Repeat for AWAY.

Player Grapple Info:

During grapples the number of presses at the given point in time is stored at the following:

Same order as above. Add x20 to get to the next player

QB1: 3F4

Tackler

At location xED

At the end of play

Player1

40 = RE

4A = SS

Player 2

C0 = RE

CA = SS

WR INFO

6BB-6C0 (This lists the order of the receivers in the current pass play)

6BB= current WR target

6BC-6C0: Order of potential targets (01=RB1 05-TE)

TEAM MASCOT AND TIME: TEXT

(this is another way to find the team and time. Data stored as ASCII strings)

(At Play Screen Only)

Home: AAE-AB8

Away: AC2-ACC

Time:

ABA-Digit 1 (min)

ABB-Digit 2 (min)

ABD-Digit 3 (sec)

ABE –Digit 4 (sec)

DOWN AND YARDS TO GO (Data stored as ASCII strings)

(At Play Call Screen)

Anytime:

xAF 0= 1st down, 1= 2nd down, 2= 3rd down, 3 = 4th down

Down: DAF

To GO: DB4, DB5

(During Play)

Down: ED7

To GO: EE0, EE1

TEAM FIRST DOWNS

x191D Home

x191E Away

PLAYBOOKS, STARTERS, INJURIES, CONDITIONS

Detailed information about how the information is stored can be found at this thread:

Share this post


Link to post
Share on other sites

Ok so since I was analyzing a file today here's a dummies guide

Team 1

position location

QB/DL1 = 3F4

RB1/DL2 = 414

RB2/DL3 = 434

WR1/LB1 = 454

WR2/LB2 = 474

TE/LB3 = 494

OL1/LB4 = 4B4

OL2/DB1 = 4D4

OL3/DB2 = 4F4

OL4/DB3 = 514

OL5/DB4 = 534

Team 2

QB/DL1 = 554

RB1/DL2 = 574

RB2/DL3 = 594

WR1/LB1 = 5B4

WR2/LB2 = 5D4

TE/LB3 = 5F4

OL1/LB4 = 614

OL2/DB1 = 634

OL3/DB2 = 654

OL4/DB3 = 674

OL4/DB4 = 694

Was looking at a file where I lost the grapple. I slowed down the vid to lowest setting and saved 6 states for the grapple with the location shown (opponent was wr1, i was db4)

454 694

02 02

04 04

06 06

09 09

0D 0C

0D 01

If I load up state 6 it's at the point where it looks like I'm already tossed.

Share this post


Link to post
Share on other sites

any idea where one might find the current week in the blue screen save state?

I've been using different weekly save states to try to find memory locations that hold the known week value but i haven't found any solid places.

edit: found a way around not being able to find the game week in the save state. Any info would still be appreciated - but not as urgent :)

Edited by taddeimania

Share this post


Link to post
Share on other sites

any idea where one might find the current week in the blue screen save state?

I've been using different weekly save states to try to find memory locations that hold the known week value but i haven't found any solid places.

edit: found a way around not being able to find the game week in the save state. Any info would still be appreciated - but not as urgent :)

Why are you interested in this info?

Share this post


Link to post
Share on other sites

for my stat extractor i'm working on (http://www.github.com/taddeimania/statparse)

My workaround was that my app (tecmo fantasy bowl) is aware of what week it is and if i try to load game X outside of the week it's supposed to be it will throw a fit. I'd like for my extractor to work independently of this information so other folks can use it for whatever they need.

Share this post


Link to post
Share on other sites

Hmm it might not be in simple decimal format and might not exist at all. The games might just keep track of what game is up next...

Best bet is to save a state right before the end of the week and then right at the beginning and look for changed locations.

It's a painful time consuming process

Share this post


Link to post
Share on other sites

Hmm it might not be in simple decimal format and might not exist at all. The games might just keep track of what game is up next...

Best bet is to save a state right before the end of the week and then right at the beginning and look for changed locations.

It's a painful time consuming process

heh that's how i spent most of last night. I saved a few games from week 1, week 2, week 3, week 15, and 17... copied all of their locations of the "week" as an unsigned byte and text (both unicode and ascii) to a spreadsheet and deleted any locations that weren't spread across all save states.

I don't think it's not in there because jstout's extractor gives you the week after the position id. Like I said - i'll leave it as a todo and let someone open a pull request if they want to fix it. Right now it's integrated into TFB and it's working like a dream :)

Share this post


Link to post
Share on other sites

I thought jstouts extractor was pulling the week Id from the rom file name.

So leagues included the week number with weekly rom releases. I could be wrong though

hrm you may be on to something, i never took a real close look to the first slot after the posid but with a save state named okoyenuts.nst it put a 0 there. guess you're right. Oh well - guess i'll have to give up on the week bit for this extractor.

btw thanks for all the help bru, if it weren't for your java app i wouldn't be anywhere close to where I ended up.

and by help i mean reverse engineering i did :P

Edited by taddeimania

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×