Register - Login
Views: 99863609
Main - Memberlist - Active users - Calendar - Wiki - IRC Chat - Online users
Ranks - Rules/FAQ - Stats - Latest Posts - Color Chart - Smilies
05-04-22 04:38:55 PM
Jul - The Cutting Room Floor - Donkey Kong Country - DK's Problem Page? New poll - New thread - New reply
Next newer thread | Next older thread
rabidabid
Member
Level: 27


Posts: 1/135
EXP: 102494
For next: 13665

Since: 08-25-10


Since last post: 34 days
Last activity: 1 day

Posted on 08-25-10 10:45:24 PM Link | Quote
Hi, you may have seen me doing a lot of nothing around the wiki. I was going to add this to the page but I didn't want to stink up a featured article with my barebones find and a todo.

Anyway, If you open the game up in a hex editor, there's a string that reads "DK'S PROBLEM PAGE". It's at different spots of the ROM for different versions.

(E) 1.0 - 389B60
(E) 1.1 - 389C90

(J) 1.0 and 1.1 - 389E82

(U) 1.0 - 389C51
(U) 1.1 - 389C54
(U) 1.2 - 389D84
(U) Competition Cartridge - 389D9B

"DATE CODE" appears right before it. Some sort of bug report? I don't really know anything about hacking so I'm not capable of digging further.
Mattrizzle
150
Level: 29


Posts: 55/151
EXP: 136288
For next: 11597

Since: 07-27-07

From: United States

Since last post: 29 days
Last activity: 28 days

Posted on 08-26-10 01:24:50 PM Link | Quote
A routine that loads this text starts at 389B3F in the (U) 1.0 ROM, but I haven't figured out much more than that. All I know is that there aren't any jumps to this code in the ROM.

Also, prior to "DATE CODE" is another text string with three slashes, each separated by five spaces:

389C34:	2F 20 20 20 20 20 2F 20 20 20 20 20 2F FF	/     /     /



____________________
SMWJul/DKC AtlasBoard 2YouTube
Mattrizzle
150
Level: 29


Posts: 72/151
EXP: 136288
For next: 11597

Since: 07-27-07

From: United States

Since last post: 29 days
Last activity: 28 days

Posted on 09-13-11 02:14:33 AM (last edited by Mattrizzle at 03-11-17 11:58:58 PM) Link | Quote
This bump is oozing with good information.

While working on DKC Boss Blitz, I found the portion of code responsible for displaying several of the game's counters (SNES $80:A1AB). Adding a jump to the subroutine mentioned in the previous post gave me this the instant I entered a level:


So it happens that "DK's PROBLEM PAGE" is the heading of a debug display!

Here's the meaning of the hex data:
Lines 1 and 2: The first 8 16-bit words of Save RAM (the last two words on line 2 spell out "RARE" in ASCII)
Line 3: Value of current level (RAM address $3E)
Line 4: Value of last exit used when inside a level, otherwise it is 0000. (RAM address $40)
Line 5: Various level-related flags (RAM address $1E15)
Line 6: If the Continue Barrel is touched, this will contain the level value to return to after losing a life; otherwise, it is 0000 (RAM address $2E)
DATE CODE: Probably displayed a build date at one point, in MMDD format. However, the code now just loads the constant #$0000 into the accumulator, not a memory address.


If a jump to the subroutine at 389D6B (SNES $B8:9D6B) is added to this area instead, and $1E3B is set to a nonzero value, a different debug display will appear...


...the one seen in the DKC: Exposed video!

Line 1 always displays 0000 (In the video, it displayed 0811, which is possibly a build date)
Line 2: The current level's value, just like line 3 of DK's Problem Page
Line 3: The first 2 digits display the number of bonus areas found; the last two show the total number of bonus areas in the level (note that completing a level counts as finding a bonus area)

Notice that in the video, the display disappears after a certain amount of frames. RAM address $1E3B is the counter for this, which is why its value must be greater than zero for the display to show. Judging from the video, it should be initialized with #$0078.


It doesn't end there! Here's two others to try:
38830E (SNES $B8:830E) (JSL) Sets the pause flag; displays the palette addresses of each object loaded into RAM, as well as which palette lines they occupy
3CB13A (SNES $BC:B13A) (JSL) Shows Donkey Kong's collision box, his coordinates, and a slew of other values...

A quick way to see these for yourselves is to replace [29 B5 B8] at PC address A1B2 (the JSL to the Animal Token Counter display code) with the SNES address of the desired display.



____________________
SMWJul/DKC AtlasBoard 2YouTube
GlitterBerri

Translator
Level: 39


Posts: 206/339
EXP: 404198
For next: 573

Since: 11-10-10


Since last post: 6.6 years
Last activity: 1.2 years

Posted on 09-13-11 05:37:36 AM Link | Quote
Originally posted by Mattrizzle
It doesn't end there! Here's two others to try:
38830E (SNES $B8:830E) (JSL) Sets the pause flag; displays the palette addresses of each object loaded into RAM, as well as which palette lines they occupy
3CB13A (SNES $BC:B13A) (JSL) Shows Donkey Kong's collision box, his coordinates, and a slew of other values...



Very cool, can I request pictures of these?
Celice
Member
Level: 31


Posts: 12/196
EXP: 178054
For next: 7309

Since: 10-24-10


Since last post: 5.7 years
Last activity: 3.9 years

Posted on 09-13-11 06:35:19 AM Link | Quote
I second that! I always find it amazing that these old secrets are uncovered and sometimes even work exactly as they did in the older versions. It's like a miniature time machine
Mattrizzle
150
Level: 29


Posts: 73/151
EXP: 136288
For next: 11597

Since: 07-27-07

From: United States

Since last post: 29 days
Last activity: 28 days

Posted on 09-13-11 12:03:10 PM (last edited by Mattrizzle at 03-11-17 11:59:42 PM) Link | Quote
Sure.

$B8:830E:

Here's some additional info:
  • $1E3D must be set to a nonzero value for this to work. It was probably originally accessed with a certain button combination.
  • The second column doesn't display the palette line a palette occupies, but the number of currently loaded objects using that palette.

For the curious, here's what the palette values represent in the screenshot (all object palettes are in the range $BC:81CC-$BC:9037)
86F2: The global yellow palette used for the numbers on the counters, KONG letters, bananas, etc.
849A: Donkey's active player 1 palette
8440: Diddy's inactive player 1 palette
8BFC: The green hanging lamp
8512: The green Kritter
0000: Shown for the palette lines that aren't currently being used by an object

I'm not sure what the 0000 to the right of the second column is for.

$BC:B13A

It's a little difficult to see the collision box boundaries in this screenshot, as they're thin black lines.

Here's what most of the "slew of values" represent:
084A: Camera X-Coordinate (The reason this is so high near the start of the level is because all levels of the same type are stored together. This level (Millstone Mayhem) starts at X=#$0800.)
0118: Camera Y-Coordinate
0030: DK's current sprite ($0D13 divided by 4)
0042: Current level value (yet again)
C000, 3274, 3288, ADFC, D225: Unknown
FFF1, FFDD: X- and Y- coordinates of DK's collision box, relative to the coordinates of his object
0018, 0022: Width and height of DK's collision box
0016: Unknown


____________________
SMWJul/DKC AtlasBoard 2YouTube
GoldS
Member
Level: 41


Posts: 206/372
EXP: 477715
For next: 2430

Since: 03-15-10


Since last post: 2.2 years
Last activity: 23 days

Posted on 09-13-11 12:23:34 PM Link | Quote
That is some sweet shit.

____________________
Xkeeper

Level: 263


Posts: 19329/25353
EXP: 297179415
For next: 1781038

Since: 07-03-07

Pronouns: they/them/????????

Since last post: 4 days
Last activity: 4 hours

Posted on 09-13-11 03:52:42 PM Link | Quote
Originally posted by everybody
a post of concentrated win

I'm not sure we can have this, guys. Too much awesome stuff in one thread might cause terrible things to happen


Honestly, though, awesome find. Pretty cool that we located the stuff shown in that video... Guess we don't have to wonder what it was for any more

____________________
You might think that this layout is specifically EarthBound themed, but it might just be a reference to one of my favorite games.
Next newer thread | Next older thread
Jul - The Cutting Room Floor - Donkey Kong Country - DK's Problem Page? New poll - New thread - New reply


Rusted Logic

Acmlmboard - commit 47be4dc [2021-08-23]
©2000-2022 Acmlm, Xkeeper, Kaito Sinclaire, et al.

31 database queries.
Query execution time: 0.100087 seconds
Script execution time: 0.015245 seconds
Total render time: 0.115332 seconds