News: 11 March 2016 - Forum Rules

Author Topic: Wall Street Kid (NES) - Hacking Project & Notes  (Read 585 times)

TheRaj

  • Jr. Member
  • **
  • Posts: 2
  • Can't Stop The Raj!
    • View Profile
    • TFO Football (Fantasy Fantasy Tecmo Football League)
Wall Street Kid (NES) - Hacking Project & Notes
« on: September 13, 2021, 12:50:43 pm »
Hello all! I've not really posted here before as Im a primarily a Tecmo Super Bowl rom hacker and as such use TecmoBowl.org for my project and notes. But I have been hacking roms since the late 90s including Tecmo Super Bowl (NES), Mega Man 3 (NES), Super Mario Bros (NES), & Final Fantasy IV (SNES).

One game I have always been interested in hacking is Wall Street Kid (NES). I find though that there is very little documentation regarding this game. So I have been playing around with the ROM and discovered some cool things that I think would help future rom hackers if they also want to hack Wall Street Kid.

I have several project ideas:
-Real Wall Street Kid: Updated with real Stock Names (replacing all fake stock names with their real world counterparts).
-Wall Street Kid 1989 DX: Update stock names, prices, information, etc. Basically a quality of life improvement of the original (which was released in 1990 but was based on the 1989 calendar).
-Crypto Kid 2020: Changing stocks to crypto, updating graphics to make things more 2020. This would be a major overhaul of graphics and data.

I also want to document all my findings as there just isnt that much info on this game and its a shame as this was one of my favs growing up.

Special thanks to Uncle Bling for his "Hacking Wall Street Kid (NES) Live!" YouTube video from Jan 2021 (https://youtu.be/4K5VxoLDfok) along with Foone for his Wall Street Kid twitter thread from April 2020 (https://twitter.com/Foone/status/1254631357789036551). Both of these helped light this fire for me to push this project forward.

Thank you and I hope you find the information I post here useful. Thanks!!!

September 13, 2021, 01:10:37 pm - (Auto Merged - Double Posts are not allowed before 7 days.)
HEX TABLE:
 Wall Street Kid uses a unique table system to try and condense text length. To do this it basically has 2 different tables: one that is for standard characters, and one that adds a space after each character. Its kinda ingenious as this game has a LOAD of text and this lets us save some space in the ROM.

Here is the table I use with notes to indicate "unique" characters:

  ##00-49 are normal characters and just have 1 byte that it enters (the character it shows). I made the text characters lower case for these to show the difference between them and the ones that have spaces.##
00=0
01=1
02=2
03=3
04=4
05=5
06=6
07=7
08=8
09=9
0A=a
0B=b
0C=c
0D=d
0E=e
0F=f
10=g
11=h
12=i
13=j
14=k
15=l
16=m
17=n
18=o
19=p
1A=q
1B=r
1C=s
1D=t
1E=u
1F=v
20=w
21=x
22=y
23=z
24=(
25=)
26='
27="
29=,
2A=$
2B=!
2C=?
2D=-
2E=:
2F=_
30=.
31=/
32=}
33=<
34=>
35=%
36=&
49= {ONE SPACE}
  ##8A-FF use the same characters as above, but then places a SPACE after. So one hex adds 2 characters (the character shown and the space). I made the text characters CAP LETTERS so they can co-exist in the table with the Non-Spaced characters. For the symbols I have them as + just so I know its a special character with a space.##
8A=A {WITH SPACE AFTER}
8B=B {WITH SPACE AFTER}
8C=C {WITH SPACE AFTER}
8D=D {WITH SPACE AFTER}
8E=E {WITH SPACE AFTER}
8F=F {WITH SPACE AFTER}
90=G {WITH SPACE AFTER}
91=H {WITH SPACE AFTER}
92=I {WITH SPACE AFTER}
93=J {WITH SPACE AFTER}
94=K {WITH SPACE AFTER}
95=L {WITH SPACE AFTER}
96=M {WITH SPACE AFTER}
97=N {WITH SPACE AFTER}
98=O {WITH SPACE AFTER}
99=P {WITH SPACE AFTER}
9A=Q {WITH SPACE AFTER}
9B=R {WITH SPACE AFTER}
9C=S {WITH SPACE AFTER}
9D=T {WITH SPACE AFTER}
9E=U {WITH SPACE AFTER}
9F=V {WITH SPACE AFTER}
A0=W {WITH SPACE AFTER}
A1=X {WITH SPACE AFTER}
A2=Y {WITH SPACE AFTER}
A3=Z {WITH SPACE AFTER}
A9=+ {, WITH SPACE AFTER}
AA=+ {$ WITH SPACE AFTER}
AB=+ {! WITH SPACE AFTER}
AC=+ {? WITH SPACE AFTER}
AD=+ {- WITH SPACE AFTER}
AE=+ {: WITH SPACE AFTER}
AF=+ {_ WITH SPACE AFTER}
B0=+ {. WITH SPACE AFTER}
B1=+ {/ WITH SPACE AFTER}
B3=+ {< WITH SPACE AFTER}
B4=+ {> WITH SPACE AFTER}
B5=+ {% WITH SPACE AFTER}
B6=+ {& WITH SPACE AFTER}
FE=+ {LINE BREAK}
FF=+ {DOUBLE BLANK SPACE}


So text may look like this IN HEX EDITOR:
"atnt'SjusTdevelopeDaneWcommunicatioNnetworksysteMfoRcomputers+thatshoulDgeTthEstocksringing+ha+ha+ha!"

But the Text will look like this IN GAME:
"ATNT'S JUST DEVELOPED ANEW COMMUNICATION NETWORKSYSTEM FOR COMPUTERS.
THAT SHOULD GET THE STOCKSRINGING. HA! HA! HA!"
« Last Edit: September 13, 2021, 01:44:26 pm by TheRaj »

Googie

  • Hero Member
  • *****
  • Posts: 1083
  • Keepin' ROM Hacking gangsta since 2003, baby!
    • View Profile
    • My work in progress ROM Hacking site
Re: Wall Street Kid (NES) - Hacking Project & Notes
« Reply #1 on: September 16, 2021, 05:07:27 pm »
Bro this is pretty cool, thanks for sharing these notes with us. I remember renting this game when I was a kid. :D
I'm gonna download it when I get home and give it another spin. ;)

TheRaj

  • Jr. Member
  • **
  • Posts: 2
  • Can't Stop The Raj!
    • View Profile
    • TFO Football (Fantasy Fantasy Tecmo Football League)
STOCK NAMES & THEIR POINTERS
« Reply #2 on: September 18, 2021, 12:06:11 pm »
**Here is some information I pulled on the stock names. With this information a person could easily rename stocks within the game, but Ill still need to find some other pointers before I can make them proper alphabetically.

-----------------------------

STOCK NAME IN COMPUTER (Buy, Sell, Information, Portfolio areas):
0x017472 = Start of Stock Names (each is 12 characters; 49 for spaces)

LONG STOCK NAMES (found when looking at a stock's Information):
0x17e67-0x017f60 = Long Stock Names (End in FF)
 0x017f10 = Start of new "table" for pointers
0x017e3f = Start of Stock Name Pointers for Long Names
 0x017e3f-017e58 = First "table" of names (13 stocks - Ends in BE)
 0x017e59-017e65 = Second "table" of names (7 stocks - Ends in BF)

NEWS PAPER STOCK NAMES (found in the news paper as the Hot Stocks Bulletin):
0x01974c-0198a5 = Stock Names for News Paper  (End in FE FF)
 0x01974c = [ATNT]
 0x019758 = [AMERICAN DEPRESS]
 0x01976c = [BETHLEHAM STEEL]
 0x01977f = [BOING]
 0x0197a3 = [CARNIVORE CRUISE LINES]
 0x0197b3 = [CENTIPEDE]
 0x0197b4 = [CHRYER]
 0x0197c2 = [COUGHMAN & BROAD]
 0x0197d5 = [EXCONRAIL]
 0x0197e5 = [FIREDMAN'S FUND]
 0x0197f8 = [MARRINOT HOTELS]
 0x01980b = [PAN MAM AIRLINES]
 0x01981e = [RATTEL TOYS]
 0x019846 = [REEBUCKS INT'L]
 0x019847 = [CHARLES SCHLOB]
 0x01986a = [STRAYHOUND]
 0x01986b = [TERADYING]
 0x01987b = [XEAROX]
 0x019889 = [YBM]
 0x019894 = [YAPPLE COMPUTER]
0x0184d8 = Start of Stock Name Pointers for News Paper
 0x0184d8 = 3C97 [ATNT]
 0x0184da = 4897 [AMERICAN DEPRESS]
 0x0184dc = 5C97 [BETHLEHAM STEEL]
 0x0184de = 6F97 [BOING]
 0x0184e0 = 7C97 [CARNIVORE CRUISE LINES]
 0x0184e2 = 9497 [CENTIPEDE]
 0x0184e4 = A497 [CHRYER]
 0x0184e6 = B297 [COUGHMAN & BROAD]
 0x0184e8 = C597 [EXCONRAIL]
 0x0184ea = D597 [FIREDMAN'S FUND]
 0x0184ec = E897 [MARRINOT HOTELS]
 0x0184ee = FB97 [PAN MAM AIRLINES]
 0x0184f0 = 0E98 [RATTEL TOYS]
 0x0184f2 = 1E98 [REEBUCKS INT'L]
 0x0184f4 = 3798 [CHARLES SCHLOB]
 0x0184f6 = 4A98 [STRAYHOUND]
 0x0184f8 = 5B98 [TERADYING]
 0x0184fa = 6B98 [XEAROX]
 0x0184fc = 7998 [YBM]
 0x0184fe = 8498 [YAPPLE COMPUTER]
News Paper Stock Name Pre-Spaces Needed (to center the name for the paper)
 02-03 stock name = C9C9C9C9C9C9 (12 spaces)
 04-05 stock name = C9C9C9C9C949 (11 spaces)
 06-07 stock name = C9C9C9C9C9 (10 spaces)
 08-09 stock name = C9C9C9C949 (9 spaces)
 10-11 stock name = C9C9C9c9 (8 spaces)
 12-13 stock name = C9C9C949 (7 spaces)
 14-15 stock name = C9C9C9 (6 spaces)
 16-17 stock name = C9C949 (5 spaces)
 18-19 stock name = C9C9 (4 spaces)
 20-21 stock name = C949 (3 spaces)
 22-23 stock name = C9 (2 spaces)
 24-25 stock name = 49 (1 spaces)

STOCK TIPS (Stock Names are hard coded in each comment):
 0x01a349-0x01b868 = Carol's Text (Investment Tips)
  0x01a349-0x01a46b = Carol's General Conversation
  0x01a48c-0x01afda = Carol's POSITIVE Tips (End in FCFF)
   0x01a48c-0x01a4f8 = ATNT Positive (93)
   0x01a4f9-0x01a54b = ATNT Positive (84)
   0x01a54d-0x01a5b3 = AMED Positive (103)
   0x01a5b4-0x01a630 = AMED Positive (125)
   0x01a631-0x01a6a7 = BETHLEHAM Positive (119)
   0x01a6a8-0x01a6ff = BOING Positive (88)
   0x01a700-0x01a74a = BOING Positive (75)
   0x01a74b-0x01a7b3 = CARNIVORE Positive (105)
   0x01a7b4-0x01a81b = CARNIVORE Positive (104)
   0x01a81c-0x01a873 = CENTIPEDE Positive (88)
   0x01a874-0x01a8d0 = CENTIPEDE Positive (93)
   0x01a8d1-0x01a93e = CHRYER Positive (110)
   0x01a93f-0x01a998 = CHRYER Positive (90)
   0x01a999-0x01aa09 = COUGHTMAN Positive (113)
   0x01aa0a-0x01aa64 = EXCONRAIL Positive (91)
   0x01aa65-0x01aacc = FIREDMANS Positive (104)
   0x01aacd-0x01ab1b = MARRINOT Positive (79)
   0x01ab1c-0x01ab79 = PAN MAM Positive (94)
   0x01ab7a-0x01abe8 = RATTEL TOYS Positive (111)
   0x01abe9-0x01ac53 = REEBUCK Positive (107)
   0x01ac54-0x01acb6 = C.SCHLOB Positive (99)
   0x01acb7-0x01ad20 = STRAYHOUND Positive (106)
   0x01ad21-0x01ad74 = TERADYING Positive (84)
   0x01ad75-0x01adcc = TERADYING Positive (88)
   0x01adcd-0x01ae29 = XEAROX Positive (93)
   0x01ae2a-0x01ae68 = XEAROX Positive (63)
   0x01ae69-0x01aedb = YBM Positive (115)
   0x01aedc-0x01af21 = YBM Positive (70)
   0x01af22-0x01af95 = YAPPLE Positive (116)
   0x01af96-0x01afda = YAPPLE Positive (69)
  0x01a48c-0x01b868 = Carol's NEGATIVE Tips (End in FCFF)
   0x01afdb-0x01b039 = BOING Negative (95)
   0x01b03a-0x01b0ad = CHRYER Negative (116)
   0x01b0ae-0x01b102 = FIREDMANS Negative (85)
   0x01b103-0x01b171 = RATTEL TOYS Negative (111)
   0x01b172-0x01b1df = ATNT Negative (110)
   0x01b1e0-0x01b25a = AMED Negative (123)
   0x01b25b-0x01b2d2 = BETHLEHAM Negative (120)
   0x01b2d3-0x01b345 = CARNIVORE Negative (115)
   0x01b346-0x01b39e = CENTIPEDE Negative (89)
   0x01b39f-0x01b3fb = COUGHTMAN Negative (93)
   0x01b3fc-0x01b460 = EXCONRAIL Negative (101)
   0x01b461-0x01b4da = MARRINOT Negative (122)
   0x01b4db-0x01b544 = PAN MAM Negative (106)
   0x01b545-0x01b5ae = YBM Negative (106)
   0x01b5af-0x01b616 = REEBUCK Negative (104)
   0x01b617-0x01b66c = REEBUCK Negative (86)
   0x01b66d-0x01b6da = C.SCHLOB Negative (110)
   0x01b6db-0x01b72f = STRAYHOUND Negative (85)
   0x01b730-0x01b782 = TERADYING Negative (83)
   0x01b783-0x01b7fd = XEAROX Negative (123)
   0x01b7fe-0x01b868 = YAPPLE Negative (107)

**Interestingly, this means that some stocks have 2 positive comments from Carol (ATNT, AMED, BOING, CENTIPEDE, SCHLOB, TERADYING, XEAROX, YBM, YAPPLE) and one has 2 negative comments (REEBUCKS).

September 19, 2021, 06:56:01 pm - (Auto Merged - Double Posts are not allowed before 7 days.)
RAM LOCATION:

FACES & CONVERSATION:
 03D5 = Face & Conversation Box (these 2 bytes seem to hold what is going to be loaded for faces and some conversation)
  X1 = Ruth
  X2 = Larry
  X3 = Ralph
  X4 = Doc
  X5 = Stanley
  X6 = Connie
  X7 = Cal
  X8 = Prisila
  X9 = Dion
  XA = Art
  XB = Julie
  XC = Austine
  XD = Pamela
  XE = Ted
  0F20 = No Face
  4F20 = No Face; New Paper Intro (The Wall Street Times)
  5F20 = Intro Faces (Featuring...)
  8FA0 = No Face; News Paper 2nd Sections
  CFA0 = No Face; News Paper listing Hot Stocks

DATE & TIME:
 03D7 = Month (01-09)
 03D8 = Day (01-XX where XX is either 1C=28, 1E=30, or 1F=31)
   ;Understands how many days in each month from Jan-Sept (01-09) even though gameplay is April-August.
 03D9 = Day of the Week (01-05=Mon-Fri)
 03DA = Hour (09-10=9am-16pm)
 03DB = Minutes (00,0F,1E,2D)
 03DC = Days since start of game (I believe this is used to triggers certain events)
 
MONEY:
 03DF-03E2 = Cash
  03DF = Adds $1
  03E0 = Adds $256
  03E1 = Adds $65536
  03E2 = Adds $16777216

HEALTH & RELATIONSHIP:
 03E5 = Current Relationship Score (0-15)
 03E6 = Current Health Score (0-15)

NEWSPAPER ARTICLES:
 03E7 = News Headlines (Bad; Uses only 02/04/08/10/20 though valid with 00-FE with exception to 40/80/C0)
  00 = No Bad, Use Normal Headliner
  ODD NUMBER BYTE = There have been reports of dangerous defective checmicals... [SWIMMING]
  02 & EVERY 4 BYTES = Gymnasium under investigation by health dept. [GYM WORKOUT]
  04 & EVERY 8 BYTES = Tick abundance attacks family on hiking grounds. [HIKING]
  08 & EVERY 16 BYTES = Poisonous insects raiding picinic grounds... [PICNIC]
  10 & EVERY 32 BYTES = Muggers become regular customers at shopping malls. [SHOPPING]
  20 & EVERY 64 BYTES = Equipment failures cause injures at carnival. [CARNIVAL]
  40 & EVERY 128 BYTES = NOT USED!!!
 03E8 = News Headliners (Normal)
  00 = Hollywood's talkshow hosts make waves...
  01 = More giant cockroaches...
  02 = Another gangster "shoot up"...
  03 = Local rock band hits stone city...
  04 = Local hero to be given ticker-tape...
  05 = Up and coming video software company...
  06 = The art world goes into shock as a...
  07 = 83 year old woman comes in first...
  08 = Prince Lopoloco going to marry...
  09 = Space expedition set for early next...

CURRENTLY OWNED STOCKS (RAM Location):
 03EA-0402 = Owned Stock Locations  (5 bytes each: Stock, Lots, Lots+256, Orig, Orig+256)
  03EA-03EE = Owned Stock #1
  03EF-03F3 = Owned Stock #2
  03F4-03F8 = Owned Stock #3
  03F9-03FD = Owned Stock #4
  03FE-0402 = Owned Stock #5
STOCK NAME CHART (Hex Number for each stock)
 00 = [ATNT]
 01 = [AMERICAN DEPRESS]
 02 = [BETHLEHAM STEEL]
 03 = [BOING]
 04 = [CARNIVORE CRUISE LINES]
 05 = [CENTIPEDE]
 06 = [CHRYER]
 07 = [COUGHMAN & BROAD]
 08 = [EXCONRAIL]
 09 = [FIREDMAN'S FUND]
 0A = [MARRINOT HOTELS]
 0B = [PAN MAM AIRLINES]
 0C = [RATTEL TOYS]
 0D = [REEBUCKS INT'L]
 0E = [CHARLES SCHLOB]
 0F = [STRAYHOUND]
 10 = [TERADYING]
 11 = [XEAROX]
 12 = [YBM]
 13 = [YAPPLE COMPUTER]
« Last Edit: September 19, 2021, 06:56:01 pm by TheRaj »