Posts for tom_mai78101
1 2 3 4 5 6 7
tom_mai78101
He/Him
Experienced Forum User, Published Author, Player (101)
Joined: 3/16/2015
Posts: 160
tom_mai78101 wrote:
Updated store items, part 1. More to come...
New TAS run is complete. Now I just need to submit it somehow. Difficulty: Crazy New findings:
| Address     | Size (bytes) | Display             | Purpose
-----------------------------------------------------------------------------------------------------------------------------------------
| 0371        | 1            | Hexadecimal         | When it is 0x4, game will recognize your inputs to control your main character.
-----------------------------------------------------------------------------------------------------------------------------------------
| 2180        | 1            | Hexadecimal         | ID related to data that stores collision boxes/obstacles/abyss information about 
|             |              |                     | the currently loaded area.
-----------------------------------------------------------------------------------------------------------------------------------------
| 49CA        | 2            | Hexadecimal         | Lotto Tix prize
|             |              |                     | 1501 - No prizes: $0.00
|             |              |                     | 1401 - 5th prize: $1.00
|             |              |                     | 1301 - 4th prize: $100.00
|             |              |                     | 1201 - 3rd prize: $1000.00
|             |              |                     | 1101 - 2nd prize: $10000.00
|             |              |                     | 1001 - 1st prize: $100000.00
-----------------------------------------------------------------------------------------------------------------------------------------
| 4A50        | 2            | Hexadecimal         | Random number counter (Loops from 0x270 to 0x1)
-----------------------------------------------------------------------------------------------------------------------------------------
| 4A54        | 4            | Hexadecimal (BE)    | Viewed in Big Endian format. This is what I personally called it the "determinant". 
|             |              |                     | The determinant helps to keep each loop of the random number counter "unique" in 
|             |              |                     | the game. 
tom_mai78101
He/Him
Experienced Forum User, Published Author, Player (101)
Joined: 3/16/2015
Posts: 160
nitsuja wrote:
Oh yeah, this thread. New on my wish list is: River City Random (EX) The game has a "crazy" difficulty and a "speed" option to turn up a bit. Hidden attacks were added to the normal controls so there should be more variety. Slam dunking construction cones is surprisingly effective. Jumping through the air is faster, there should be more acrobatics. No left+right glitches, apparently, and Moose can't be skipped, but he can be tricked into diving into a pit. Overall, a run of it would be significantly different from the original, more than different enough to warrant being done, and the result would be quite fast-paced.
Do you have any strategies in mind for this game?
tom_mai78101
He/Him
Experienced Forum User, Published Author, Player (101)
Joined: 3/16/2015
Posts: 160
Updated store items, part 1. More to come...
tom_mai78101
He/Him
Experienced Forum User, Published Author, Player (101)
Joined: 3/16/2015
Posts: 160
Small hiatus aside (due to me being unrealistically put off with the way I thought Bizhawk is capable of doing), Bizhawk's Freeze Address and Poke Address does not permanently modify the game's IWRAM. This actually sucks because I would truly not be able to manipulate RNG the way I wanted to do. Ideally, if the modified RAM values are permanent, as in, ignoring whatever the game calculated and only using frozen address values through poking it, then the game would truly reach capabilities of making a great TAS. I can confirm address 2AB4 is indeed the current "calculated" lump sum of your player character's money. However, at the start of the game, it's only when you start entering a new area, does the game then starts keeping track of your current money count. This also means, in the first area, no matter what money you picked up on, it doesn't update the value until subsequent area changes later on. Address 2424 hold the previous calculated lump sum of your player character's money and doesn't update the value at all.
tom_mai78101
He/Him
Experienced Forum User, Published Author, Player (101)
Joined: 3/16/2015
Posts: 160
Updated OP thanks to feedback saying different ROM variations will have different IWRAM variations.
Post subject: In RAM Search, where are the addresses located on hardware?
tom_mai78101
He/Him
Experienced Forum User, Published Author, Player (101)
Joined: 3/16/2015
Posts: 160
I've noticed when doing RAM watching / searching, and switching Bizhawk to no$gba debugger, I can't tell exactly where the RAM addresses are located in both emulators. Is it correct for me to assume the Bizhawk RAM addresses are mapped 1-to-1 to no$gba's Fast WRAM addresses? 0021 in Bizhawk (size 1) is 03000020h+0x1 in no$gba (bytes, offset 1) 24E1 in Bizhawk (size 1) is 030024E0h+0x1 in no$gba (bytes, offset 1) 0AAC in Bizhawk (size 1) is 03000AACh+0x0 in no$gba (bytes, offset 0) Thanks in advance.
tom_mai78101
He/Him
Experienced Forum User, Published Author, Player (101)
Joined: 3/16/2015
Posts: 160
New findings:

| 0368        | 2            | Hex                  | Timing that controls when a player can start to freely move. (Counts down)
| 0370        | 2            | Hex                  | Sets to 0x0 when values in 0x0368 and 0x0372 are both 0x0 and 1000 equivalently.
| 0372        | 2            | Hex                  | Timing that controls when a player can start to freely move. (Counts up)

| 06E6        | 2            | Hex                  | (Foreground) Layer 0 texture X position (Little Endian)
| 06E8        | 2            | Hex                  | (Foreground) Layer 0 texture Y position (Little Endian)
| 06EA        | 2            | Hex                  | (Foreground) Layer 1 texture X position (Little Endian)
| 06EC        | 2            | Hex                  | (Foreground) Layer 1 texture Y position (Little Endian)

| 0702        | 2            | Hex                  | (Background) Layer 2 texture X position (Little Endian)
| 0704        | 2            | Hex                  | (Background) Layer 2 texture Y position (Little Endian)
| 0706        | 2            | Hex                  | (Background) Layer 3 texture X position (Little Endian)
| 0708        | 2            | Hex                  | (Background) Layer 3 texture Y position (Little Endian)

| 073E - 074A | 2 x 7        | Hex                  | Text spritesheet / mapping addresses, top row (assuming)
| 074C - 0760 | 2 x 11       | Hex                  | Text spritesheet / mapping addresses, bottom row (assuming)
| 076A - 0770 | 2 x 4        | Hex                  | Text messages pointer data for enemy gang shouts. (assuming)

| 073E - 09E4 | 2 x 340      | Hex                  | (Region) Has to do with text messages and pointer data to strings.

| 0AA5        | 1            | Unsigned             | Text message cursor position

| 24E1        | 1            | Unsigned             | + Value gets deallocated when entering new areas.


tom_mai78101
He/Him
Experienced Forum User, Published Author, Player (101)
Joined: 3/16/2015
Posts: 160
Initial findings:

| Address	| Byte Size | Display   		 | Purpose
----------------------------------------------------------------------------------------------
| 0000		| 1			| Unsigned			| Transition Screen? (always 0x0 or 0x5)
| 0002		| 2			| Unsigned			| Area Zone ID
| 0004		| 1			| Unsigned			| Controls:

10000000b	128		Down
01000000b	64 		Up
00100000b	32 		Left
00010000b	16 		Right
00001000b	8  		Start
00000100b	4  		Select
00000010b	2  		B
00000001b	1  		A

No L and R buttons

| 0008		| 1			| Unsigned			| Rendering tick count accumulator (0 to 255). (Low Bits)
| 0009		| 1			| Unsigned			| Rendering tick count accumulator (0 to 255). (High Bits)


| 06D4		| 1			| Unsigned			| Has to do with background scene textures.
| 06D5		| 1			| Unsigned			| ^
| 06D6		| 1			| Unsigned			| ^

| 06E1		| 1			| Unsigned			| Has to do with background scene textures.
| 06E2		| 1			| Unsigned			| ^
| 06E3		| 1			| Unsigned			| ^

| 09B5		| 1			| Unsigned			| Area Section Name
| 09B9		| 1			| Unsigned			| Wrapper string?

| 0AB0		| 1			| Unsigned			| Crashes when freezing addresses
| 0AB1		| 1			| Unsigned			| ^
| 0AB2		| 1			| Unsigned			| ^
| 0AB3		| 1			| Unsigned			| ^

| 211C		| 1			| Unsigned			| Has to do with color masking
| 211E		| 1			| Unsigned			| Has to do with color masking. Needs to be +0x1 more than 211C value.

| 2127		| 1			| Unsigned			| Unknown

| 216A		| 1			| Unsigned			| Unknown
| 216B		| 1			| Unsigned			| Unknown

| 216E		| 1			| Unsigned			| Background Y position (Low Bit)
| 216F		| 1			| Unsigned			| Background Y position (High Bit)

| 2172		| 1			| Unsigned			| Background X position (Low Bit)
| 2173		| 1			| Unsigned			| Background X position (High Bit)

| 217A		| 1			| Unsigned			| Unknown
| 217B		| 1			| Unsigned			| Unknown
| 217E		| 1			| Unsigned			| Unknown

| 2180		| 1			| Unsigned			| Something to do with area transitions
| 2181		| 1			| Unsigned			| ^

| 2184		| 1			| Unsigned			| Enable Rendering Layers Bitmask

0 = Null (no scenery)
1 = Text only
2 = Foreground
4 = Background
8 = Sky
15 = All

| 21B2		| 1			| Unsigned			| Unknown

| 21B6		| 1			| Unsigned			| Background texture Y position
| 21B7		| 1			| Unsigned			| Background texture Y position. Negative number if 255.

| 220C		| 1			| Unsigned			| Player X position in the game area (Low Mantissa)
| 220D		| 1			| Unsigned			| Player X position in the game area (High Mantissa)
| 220E		| 1			| Unsigned			| Player X position in the game area (Low Bit)
| 220F		| 1			| Unsigned			| Player X position in the game area (High Bit)

When Player's X position is 0x15, will transition to new area on the Player's left hand side.

| 2210		| 1			| Unsigned			| Player Y Jump position in the game area (Low Mantissa)
| 2211		| 1			| Unsigned			| Player Y Jump position in the game area (High Mantissa)
| 2212		| 1			| Unsigned			| Player Y Jump position in the game area (Low Bit)
| 2213		| 1			| Unsigned			| Player Y Jump position in the game area (High Bit). 255 is negative.
| 2214		| 1			| Unsigned			| Player Y position in the game area (Low Mantissa)
| 2215		| 1			| Unsigned			| Player Y position in the game area (High Mantissa)
| 2216		| 1			| Unsigned			| Player Y position in the game area (Low Bit)
| 2217		| 1			| Unsigned			| Player Y position in the game area (High Bit). 255 is negative.
| 2218		| 1			| Unsigned			| Player Jump power facing right (0 or 128).
| 2219		| 1			| Unsigned			| Player +X speed (Low Low Bit)
| 221A		| 1			| Unsigned			| Player +X Speed (Low High Bit)
| 221B		| 1			| Unsigned			| Player +X speed (High Low Bit)
| 221C		| 1			| Unsigned			| Player +X Speed (High High Bit)
| 221D		| 1			| Unsigned			| Player -X speed (Low Low Bit)
| 221E		| 1			| Unsigned			| Player -X Speed (Low High Bit)
| 221F		| 1			| Unsigned			| Player -X speed (High Low Bit)
| 2220		| 1			| Unsigned			| Player -X Speed (High High Bit)
| 2221		| 1			| Unsigned			| Player Y Acceleration (Low Mantissa)
| 2222		| 1			| Unsigned			| Player Y Acceleration (High Bit). -Y is positive

| 2258		| 1			| Unsigned			| Player Finite State Machine ID

| 22A4		| 1			| Unsigned			| Something to do with going from shop (safe areas) to non-safe areas:

255 = Shops
58 = Non-shop areas

| 22DC		| 1			| Unsigned			| Duration between Player animation frames, counts down to 0. When 0, sets a new animation frame.

| 250C		| 1			| Unsigned			| Duration between Enemy A animation frames, counts down to 0. When 0, sets a new animation frame:

Running: 4 -> 0
Walking: 8 -> 0, 6 -> 0, 8 -> 0, repeat.

| 2676		| 1			| Unsigned			| Enemy A Y position in the game area (Low Bit)
| 2677		| 1			| Unsigned			| Enemy A Y position in the game area (High Bit)

| 273A		| 1			| Unsigned			| Jump Kick animation ID
| 273C		| 1			| Unsigned			| NPC Walking Animation loop duration

| 2AB4		| 2			| Unsigned			| Current Money


| 24E1		| 1			| Unsigned			| Unknown purposes. Value is determined to have an effect on enemy gangs, as follows:

Stickville - Park Entrance

8 = Generic Dudes
6 = Frat Boys
2 = Entrees
1 = Dragons
0 = Mob



------------------------------------------------------------------------------------------------------ New findings:
| Address	| Size  	| Display   		| Purpose

| 0D18		| 4			| Hex				| Something to do with Rendering buffer
| 0D20		| 4			| Hex				| ^
| 0D28		| 4			| Hex				| ^
| 0D30		| 4			| Hex				| ^
| 0D38		| 4			| Hex				| ^
| 0D40		| 4			| Hex				| ^
| 0D48		| 4			| Hex				| ^

| 0DB8		| 4			| Hex				| Something to do with Enemy B's sprite position or updates
| 0DC0		| 4			| Hex				| ^
| 0DC8		| 4			| Hex				| ^
| 0DD0		| 4			| Hex				| ^

| 250E		| 1			| Unsigned			| Flag to jump to next animation frame:

0x5 = Continue playing animation
0xD = Jump to next animation

Loop
  Update:  0xD       0x5       0x5       0xD       0x5       0x5       0xD       0x5
  Render: Walk 1 -> Walk 1 -> Walk 1 -> Walk 2 -> Walk 2 -> Walk 2 -> Walk 1 -> Walk 1
EndLoop

| 2676		| 1			| Unsigned 			| Enemy A Y position in the game area (Low Bit)
| 2677		| 1			| Unsigned 			| Enemy A Y position in the game area (High Bit)



| 243C		| 4			| Fixed Point 16.16 | Enemy A X position in the game area (Little Endian)
| 2444		| 4			| Fixed Point 16.16 | Enemy A Y position in the game area (Little Endian)

| 289C		| 4			| Fixed Point 16.16 | Enemy B X position in the game area (Little Endian)
| 28A4		| 4			| Fixed Point 16.16 | Enemy B Y position in the game area (Little Endian)
| 28A8		| 4			| Fixed Point 16.16 | Enemy B X speed (Little Endian)

When value is 0 and the enemy is in the Running state, the enemy will respond as if it has hit a wall.

| 28AC		| 4			| Fixed Point 16.16 | Enemy B Y speed (Little Endian)

| 2CFC		| 4			| Fixed Point 16.16 | Enemy C X position in the game area (Little Endian)
| 2D04		| 4			| Fixed Point 16.16 | Enemy C Y position in the game area (Little Endian)

| 315C		| 4			| Fixed Point 16.16 | Enemy D X position in the game area (Little Endian)
| 3164		| 4			| Fixed Point 16.16 | Enemy D Y position in the game area (Little Endian)
tom_mai78101
He/Him
Experienced Forum User, Published Author, Player (101)
Joined: 3/16/2015
Posts: 160
Reserved for extra space.
tom_mai78101
He/Him
Experienced Forum User, Published Author, Player (101)
Joined: 3/16/2015
Posts: 160
Thanks. That's assuring.
Post subject: Can you publicly publish rejected submissions?
tom_mai78101
He/Him
Experienced Forum User, Published Author, Player (101)
Joined: 3/16/2015
Posts: 160
I'm not sure if Bizhawk prevents you from publishing rejected submissions, so I am asking if you're allowed to do so. Thanks in advance.
tom_mai78101
He/Him
Experienced Forum User, Published Author, Player (101)
Joined: 3/16/2015
Posts: 160
MESHUGGAH wrote:
I never encountered this problem (jellybean ~ marshmallow + chrome + host filters + non official roms). I even use the "remember me" function and regularly switch between wifi and 3g/4g. edit: but I could manipulate the simple "invalid session error" on PC by logouting with a non existing session id and then trying to post. Edit2: please post your ISP provider or at least country
ISP: Verizon FIOS Country: US Any other information is needed?
Post subject: River City Ransom EX | OT | Information Thread
tom_mai78101
He/Him
Experienced Forum User, Published Author, Player (101)
Joined: 3/16/2015
Posts: 160
Gathering from only these 2 threads (1 and 2), there isn't any way to get up-to-date information on the GBA game, River City Ransom EX. Gotta start somewhere, I guess... This will be my thread, containing information, RAM addresses and values, and other stuffs about the game that can be useful to get a speedrun going. I appreciate if anyone else is interested in doing the run, or share their findings about the game. ----------------- This is my current submission (00:08:39) This is the current submission discussion I don't think it's gaining traction, so I think maybe one has to tackle the high grounds first in order to at least get some publication going... To start, this is my current findings with RAM values. Beware that different ROMs will have different RAM addresses. Please correct me if I got anything wrong, or if you know what other info I missed: Latest findings
River City Ransom EX [GBA][USA]:
File Name: River City - Ransom EX (Venom) 1.0 USA.gba
MD5 - C098362CA95E73D92BEE95F462724560

Legend:
^ - See above; Is related to above.
Notes - They are only related to the RAM address and value directly above them. Not under.
<newline> - Stopgap for missing information.
[XXXX - YYYY] - RAM Addresses Region from XXXX to YYYY.



| Address     | Size         | Display             | Purpose
-----------------------------------------------------------------------------------------------------------------------------------------
| 0000        | 1            | Unsigned            | Transition Screen? (always 0x0 or 0x5)
| 0002        | 2            | Unsigned            | Area Zone ID
| 0004        | 1            | Unsigned            | Controls

10000000b      128             Down
01000000b      64              Up
00100000b      32              Left
00010000b      16              Right
00001000b      8               Start
00000100b      4               Select
00000010b      2               B
00000001b      1               A

No L and R buttons

| 0008        | 1            | Unsigned             | Rendering tick count accumulator (0 to 255). (Low Bits)
| 0009        | 1            | Unsigned             | Rendering tick count accumulator (0 to 255). (High Bits)
 
| 0368        | 2            | Hex                  | Timing that controls when a player can start to freely move. (Counts down)
| 0370        | 2            | Hex                  | Sets to 0x0 when values in 0x0368 and 0x0372 are both 0x0 and 1000 equivalently.
| 0372        | 2            | Hex                  | Timing that controls when a player can start to freely move. (Counts up)

| 06D4        | 1            | Unsigned             | Has to do with background scene textures.
| 06D5        | 1            | Unsigned             | ^
| 06D6        | 1            | Unsigned             | ^
 
| 06E1        | 1            | Unsigned             | Has to do with background scene textures.
| 06E2        | 1            | Unsigned             | ^
| 06E3        | 1            | Unsigned             | ^

| 06E6        | 2            | Hex                  | (Foreground) Layer 0 texture X position (Little Endian)
| 06E8        | 2            | Hex                  | (Foreground) Layer 0 texture Y position (Little Endian)
| 06EA        | 2            | Hex                  | (Foreground) Layer 1 texture X position (Little Endian)
| 06EC        | 2            | Hex                  | (Foreground) Layer 1 texture Y position (Little Endian)

| 0702        | 2            | Hex                  | (Background) Layer 2 texture X position (Little Endian)
| 0704        | 2            | Hex                  | (Background) Layer 2 texture Y position (Little Endian)
| 0706        | 2            | Hex                  | (Background) Layer 3 texture X position (Little Endian)
| 0708        | 2            | Hex                  | (Background) Layer 3 texture Y position (Little Endian)

| 073E - 074A | 2 x 7        | Hex                  | Text spritesheet / mapping addresses, top row (assuming)
| 074C - 0760 | 2 x 11       | Hex                  | Text spritesheet / mapping addresses, bottom row (assuming)
| 076A - 0770 | 2 x 4        | Hex                  | Text messages pointer data for enemy gang shouts. (assuming)

| 09B5        | 1            | Unsigned             | Area Section Name

| 09B9        | 1            | Unsigned             | Wrapper string?

| 073E - 09E4 | 2 x 340      | Hex                  | (Region) Has to do with text messages and pointer data to strings.

| 0AA5        | 1            | Unsigned             | Text message cursor position
 
| 0D18        | 4            | Hex                  | Something to do with Rendering buffer
| 0D20        | 4            | Hex                  | ^
| 0D28        | 4            | Hex                  | ^
| 0D30        | 4            | Hex                  | ^
| 0D38        | 4            | Hex                  | ^
| 0D40        | 4            | Hex                  | ^
| 0D48        | 4            | Hex                  | ^
 
| 0D20        | 4            | Hex                  | Something to do with Player's sprite position or updates
 
| 0DB8        | 4            | Hex                  | Something to do with Enemy B's sprite position or updates
| 0DC0        | 4            | Hex                  | ^
| 0DC8        | 4            | Hex                  | ^
| 0DD0        | 4            | Hex                  | ^
 
| 0AB0        | 1            | Unsigned             | Crashes when freezing addresses
| 0AB1        | 1            | Unsigned             | ^
| 0AB2        | 1            | Unsigned             | ^
| 0AB3        | 1            | Unsigned             | ^
 
| 211C        | 1            | Unsigned             | Has to do with color masking
| 211E        | 1            | Unsigned             | Has to do with color masking. Needs to be +0x1 more than 211C value.
 
| 2127        | 1            | Unsigned             | Unknown
 
| 216A        | 1            | Unsigned             | Unknown
| 216B        | 1            | Unsigned             | Unknown
 
| 216E        | 1            | Unsigned             | Background Y position (Low Bit)
| 216F        | 1            | Unsigned             | Background Y position (High Bit)
 
| 2170        | 4            | Fixed Point 16.16    | Background X position (Little Endian)
 
| 2172        | 1            | Unsigned             | Background X position (Low Bit)
| 2173        | 1            | Unsigned             | Background X position (High Bit)
 
| 217A        | 1            | Unsigned             | Unknown
| 217B        | 1            | Unsigned             | Unknown
| 217E        | 1            | Unsigned             | Unknown
 
| 2180        | 1            | Unsigned             | Something to do with area transitions
| 2181        | 1            | Unsigned             | ^

| 2184        | 1            | Unsigned             | Enable Rendering Layers Bitmask

0 = Null (no scenery)
1 = Text only
2 = Foreground
4 = Background
8 = Sky
15 = All

| 21B2        | 1            | Unsigned             | Unknown
 
| 21B6        | 1            | Unsigned             | Background texture Y position
| 21B7        | 1            | Unsigned             | Background texture Y position. Negative number if 255.

| 220C        | 1            | Unsigned             | Player X position in the game area (Low Mantissa)
| 220D        | 1            | Unsigned             | Player X position in the game area (High Mantissa)
| 220E        | 1            | Unsigned             | Player X position in the game area (Low Bit)
| 220F        | 1            | Unsigned             | Player X position in the game area (High Bit)

When Player's X position is 0x15, will transition to new area.

| 2210        | 1            | Unsigned             | Player Y Jump position in the game area (Low Mantissa)
| 2211        | 1            | Unsigned             | Player Y Jump position in the game area (High Mantissa)
| 2212        | 1            | Unsigned             | Player Y Jump position in the game area (Low Bit)
| 2213        | 1            | Unsigned             | Player Y Jump position in the game area (High Bit). 255 is negative.
| 2214        | 1            | Unsigned             | Player Y position in the game area (Low Mantissa)
| 2215        | 1            | Unsigned             | Player Y position in the game area (High Mantissa)
| 2216        | 1            | Unsigned             | Player Y position in the game area (Low Bit)
| 2217        | 1            | Unsigned             | Player Y position in the game area (High Bit). 255 is negative.
| 2218        | 1            | Unsigned             | Player Jump power facing right (0 or 128).
| 2219        | 1            | Unsigned             | Player +X speed (Low Low Bit)
| 221A        | 1            | Unsigned             | Player +X Speed (Low High Bit)
| 221B        | 1            | Unsigned             | Player +X speed (High Low Bit)
| 221C        | 1            | Unsigned             | Player +X Speed (High High Bit)
| 221D        | 1            | Unsigned             | Player -X speed (Low Low Bit)
| 221E        | 1            | Unsigned             | Player -X Speed (Low High Bit)
| 221F        | 1            | Unsigned             | Player -X speed (High Low Bit)
| 2220        | 1            | Unsigned             | Player -X Speed (High High Bit)
| 2221        | 1            | Unsigned             | Player Y Acceleration (Low Mantissa)
| 2222        | 1            | Unsigned             | Player Y Acceleration (High Bit). -Y is positive

| 2258        | 1            | Unsigned             | Player Finite State Machine ID

| 22A4        | 1            | Unsigned             | Something to do with going from shop (safe areas) to non-safe areas:

255 = Shops
58 = Non-shop areas

| 22DC        | 1            | Unsigned             | Duration between Player animation frames, counts down to 0. When 0, sets a new animation frame.

| 250C        | 1            | Unsigned             | Duration between Enemy A animation frames, counts down to 0. When 0, sets a new animation 

Frame #:
  Running: 4 -> 0, 4 -> 0, 4 -> 0, repeat
  Walking: 8 -> 0, 6 -> 0, 8 -> 0, repeat

| 250E        | 1            | Unsigned             | Flag to jump to next animation frame:

0x5 = Continue playing animation
0xD = Jump to next animation

Loop
  Update:  0xD       0x5       0x5       0xD       0x5       0x5       0xD       0x5
  Render: Walk 1 -> Walk 1 -> Walk 1 -> Walk 2 -> Walk 2 -> Walk 2 -> Walk 1 -> Walk 1
EndLoop

| 2676        | 1            | Unsigned             | Enemy A Y position in the game area (Low Bit)
| 2677        | 1            | Unsigned             | Enemy A Y position in the game area (High Bit)

| 273A        | 1            | Unsigned             | Jump Kick animation ID
| 273C        | 1            | Unsigned             | NPC Walking Animation loop duration

| 2AB4        | 2            | Unsigned             | Current Money


| 24E1        | 1            | Unsigned             | Unknown purposes. Value is deallocated when entering new areas. Value is determined to be a type identifier for enemy gangs, as follows:

Stickville - Park Entrance
  8 = Generic Dudes
  6 = Frat Boys
  2 = Entrees
  1 = Dragons
  0 = Mob

| 243C        | 4            | Fixed Point 16.16    | Enemy A X position in the game area (Little Endian)
| 2444        | 4            | Fixed Point 16.16    | Enemy A Y position in the game area (Little Endian)
   
| 289C        | 4            | Fixed Point 16.16    | Enemy B X position in the game area (Little Endian)
| 28A4        | 4            | Fixed Point 16.16    | Enemy B Y position in the game area (Little Endian)
| 28A8        | 4            | Fixed Point 16.16    | Enemy B X speed (Little Endian)

When value is 0 and the enemy is in the Running state, the enemy will respond as if it has hit a wall.

| 28AC        | 4            | Fixed Point 16.16    | Enemy B Y speed (Little Endian)

| 2CFC        | 4            | Fixed Point 16.16    | Enemy C X position in the game area (Little Endian)
| 2D04        | 4            | Fixed Point 16.16    | Enemy C Y position in the game area (Little Endian)

| 315C        | 4            | Fixed Point 16.16    | Enemy D X position in the game area (Little Endian)
| 3164        | 4            | Fixed Point 16.16    | Enemy D Y position in the game area (Little Endian)




Store items and their leveling stats (Part 1):
Numbers - How many points it will add to your stats total, accumulatively.
Green Text - Emphasis on potential leveling shortcuts.
Red Text - Special Techniques (Moves)
I probably will continue to update this when I find more information. The goal is for me to understand what the game is doing with all these numbers, and see if it's possible to do a Crazy (Hardest difficulty) speedrun. There are other factors at play, such as:
  • Figure out how to control the randomness of the enemy gang type when entering a new area.
  • Figure out what optimal stats is preferred to give the most damage.
  • Figure out if I need to increase my willpower, which affects how quick you recover after taking a blow that knocks you into the air. Would it make it more interesting?
  • Figure out how to quickly nab the best technique to unlock. So far, I have one in mind that I use prominently when playing regularly.
  • Find out if playing Solo or having an ally is more interesting.
  • Find out if playing a non-protagonist character as Solo or have allies join up over the course of the run is more interesting.
That is all.
tom_mai78101
He/Him
Experienced Forum User, Published Author, Player (101)
Joined: 3/16/2015
Posts: 160
Radiant wrote:
tom_mai78101 wrote:
If you play it on the Hardest difficulty, it takes about 5 to 10 times the amount to finish off an enemy due to their stats being raised, particularly when during this run, I never attempted to raise stats at all. Bosses in particular would recover very quickly, compared to Easiest difficulty. Raising stats means you have to watch the animations, you have to grind for more money to spend on boosting stats, and the stat boosts only boosts a little bit. Overall, it takes more time to play, as well as not being able to skip out the animations, so it cannot be counted towards as the run with the fastest time. If you don't raise stats, your attacks are snipping off 2 to 5 HP at most per hit. Of course, you can raise your stats quicker by purchasing the more expensive items in shops, but that also means you have to grind enemies. Certain enemies (in respective colors) have higher amounts of money dropped when they are defeated, but they also have stats increased, so it takes much longer to grind overall, than to swiftly deal KOs to them.
Frankly what you describe here sounds like a much more interesting and entertaining run than simply one-shotting everything like you do now.
Thanks for letting me know, but for now, I need to take a break from TASing since this is my first publication. (Second one, because it significantly improved completion time over my previous submission.) Of course, I will be tackling the Crazy difficulty eventually, but here's a list of things I need to do first:
  • Figure out how to control the randomness of the enemy gang type when entering a new area.
  • Figure out what optimal stats is preferred to give the most damage.
  • Figure out if I need to increase my willpower, which affects how quick you recover after taking a blow that knocks you into the air. Would it make it more interesting?
  • Figure out how to quickly nab the best technique to unlock. So far, I have one in mind that I use prominently when playing regularly.
  • Find out if playing Solo or having an ally is more interesting.
  • Find out if playing a non-protagonist character as Solo or have allies join up over the course of the run is more interesting.
I will probably need a lot of help in figuring out all of these from others who are interested in doing this speedrun, also. Oh well, this is my current best run. I hoped you all enjoyed it.
tom_mai78101
He/Him
Experienced Forum User, Published Author, Player (101)
Joined: 3/16/2015
Posts: 160
Patashu wrote:
c-square wrote:
I unfortunately have to point out that it's rare for runs that use anything other than the highest difficulty level to be published here, though there are exceptions.
Specifically, the rules are here: http://tasvideos.org/Guidelines.html#SelectYourDifficultyWell The most common reason to play on the easiest difficulty is if all it does is make enemies have more HP, which isn't as rare as you imply (I don't know what it does for this game).
The goal of this run is to get to the end in the fastest time possible. I chose the Easiest difficulty, because it allows me to quickly finish off enemies and Bosses. Playing on the Easiest difficulty allows almost all enemies be dealt with by 1-KO, when an enemy dies, it drops money that will stay on the screen for about 5 real-time seconds. You need to collect all money on the screen, if not despawned, in order for Bosses to appear. And you need to defeat all of the enemies in an area, in order for that Area Boss to appear. If you play it on the Hardest difficulty, it takes about 5 to 10 times the amount to finish off an enemy due to their stats being raised, particularly when during this run, I never attempted to raise stats at all. Bosses in particular would recover very quickly, compared to Easiest difficulty. Raising stats means you have to watch the animations, you have to grind for more money to spend on boosting stats, and the stat boosts only boosts a little bit. Overall, it takes more time to play, as well as not being able to skip out the animations, so it cannot be counted towards as the run with the fastest time. If you don't raise stats, your attacks are snipping off 2 to 5 HP at most per hit. Of course, you can raise your stats quicker by purchasing the more expensive items in shops, but that also means you have to grind enemies. Certain enemies (in respective colors) have higher amounts of money dropped when they are defeated, but they also have stats increased, so it takes much longer to grind overall, than to swiftly deal KOs to them. For comparison, the first Boss you meet is Moose, and the area you meet him in contains a Death Pit. Anyone going into the Pit will die immediately. On Easiest difficulty, not only you can easily knock him down in order to pick him up and throw it into the pit, you can quickly skip a large part of the Boss Battle with him. However, on Hardest difficulty, because of stat increases, Moose recovers faster before you even get the chance to pick him up to throw into the pit, so the battle will drag on for about 1 minute extra just because of his ability to recover. Not only that, your attacks are much weaker, so it takes a bit more time for Moose to entirely lose his HP. And when the run's aim is to get the fastest time, the tradeoff for Difficulty versus Completion Time is considered, and I chose to go with Completion Time over Difficulty.
tom_mai78101
He/Him
Experienced Forum User, Published Author, Player (101)
Joined: 3/16/2015
Posts: 160
I see. I'll take heed next time, and I probably don't plan on making another submission for this mode in the short term. I thought that if there's a significant improvement, I would need to cancel my old one, then resubmit a new one to take its place. This is the rules I followed. http://tasvideos.org/SubmissionInstructions.html But other than that, I didn't realize there's still extra 400 empty frames. :/
tom_mai78101
He/Him
Experienced Forum User, Published Author, Player (101)
Joined: 3/16/2015
Posts: 160
Chamale wrote:
This run appears to be slower than the RTA world record.
Unfortunately, that video is no longer available to view.
andypanther wrote:
tom_mai78101 wrote:
andypanther wrote:
This is a River City Ransom EX Wussy TAS, with the goal to beat the main story line at any% in the fastest time possible, while avoiding taking damages, with maximum multipliers, without RNG manipulation, and without entering any cheat codes.
Why not? I don't know this game, but a TAS has to manipulate luck if it saves time.
I did check to see how far I can do with RNG manipulation, and it turns out the core that I'm using, mGBA, is pretty accurate enough such that the RNG has fairly minimal effect in this game. The only randomness you can control are where the enemies spawn in from, when it starts spawning in, and where it is moving to. I thought I could get away with it by abusing the transition screens from one area to the next, but then it turns out that state is set, even when you rewind all the way back to the beginning area. I'll see what I can do with this, but since I'm starting off with very little information to process, it will take a while I'm afraid.
If you just couldn't find a way to do it, that's fine. It's just that because of the way you mentioned RNG manipulation in the submission text, it came off as an intentional restriction. And that would be a very arbitrary restriction.
I see. I just wanted to be blunt and straight-to-the-point for those who are viewing my submission.
tom_mai78101
He/Him
Experienced Forum User, Published Author, Player (101)
Joined: 3/16/2015
Posts: 160
Chamale wrote:
I created the current NES River City Ransom TASes, for 1 player and 2 players. This run appears to be slower than the RTA world record. I suggest watching that for inspiration.
I see. I can take a look at that when I have the chance.
Chamale wrote:
Button-mashing is seen as sloppy, because it's preferable to use savestates and frame advance to figure out the first frame that you can take an action on. This applies to the opening menus, but it also applies to finding the first frame at which you can effectively throw a punch, or start to sprint, or jump to the end of an area. I spent a lot of time on my RCR TASes just saving a state and then narrowing down the exact frame I could start an attack successfully.
I see.
Chamale wrote:
On the NES RCR, I found that the frame I exited a stage could alter enemy spawn positions and enemy types in the next area. This was important for reaching enemies quickly, being able to hit multiple enemies with one attack, and for spawning the weakest enemies possible in every boss fight area.
It doesn't seem to happen for the GBA RCREX, as you're always in the same spawn spot when entering the next area. Tried tweaking other variables just to make sure the enemy types (gangs of different colors) are different, but I haven't been able to narrow down what the determining factor is.
Chamale wrote:
Good luck with your next run. I've always thought an EX TAS would be interesting to see.
I tried. :P Thanks.
tom_mai78101
He/Him
Experienced Forum User, Published Author, Player (101)
Joined: 3/16/2015
Posts: 160
Spikestuff wrote:
I'm just going to say that the menuing and ending input is sloppy/full of mashing between Start and A... which isn't a good thing. Apparently according to you, you used TAStudio to create this. I'm pointing this out to everyone, due to the low rerecord count appearing.
On the hardware, I was actually button mashing during the transition screens, so I guess that's a habit of mine. I didn't know mashing buttons during inactive transition screens is sloppy. So I need to reduce the amount of inputs? Or this is just discouraged?
Spikestuff wrote:
You wouldn't need to mash the input to advance the screens. Also the first mash you did with Start and A only reads the Start input, never the A.
Ah, true.
Spikestuff wrote:
When you go into the options to Change the Difficulty and text you hit down, it's faster to hit up and going from the bottom up through the menuing.
Oh right! I totally forgot about that one...
Spikestuff wrote:
Your branch is a lie. You're playing on "Wussy" not "Regular".
I thought the "branch" refers to TAS user submission categories, and has no relevancy in actual gameplay. Like, "test" branch, or "gimmick" branch? Something that is identifiable to the submitters? Darn, I can't change it. :(
Spikestuff wrote:
This is a well made first attempt, just minor errors within.
Thanks for the encouragement!
Spikestuff wrote:
I'll Spike the input (and hope it doesn't desync) and provide a fixed opening and ending input. Ha, it desynced... dangit. Ending input corrected (2082 frames): http://tasvideos.org/userfiles/download/45882935960391393
I'll take a look at it when I get home. Thanks. And yeah, the button mashing in the ending was me not knowing when to stop. I should probably cut those out from TAStudio instead.
Spikestuff wrote:
It might be better to TAS this as Alex only. Unless..... Random fun fact: You can end your input at frame 33118 (09:14.48) and have Ryan deal with the fight and he'll deliver the final blow at frame 35166 (09:48.77)
My assumption was, with the AI allies, they can help me get rid of offscreen enemies, so I can save some time. Reason is, when you start the game, Ryan is much stronger than you, and you need that extra raw power to stomp through some enemies, even when you have max multiplier enabled. And yes, I can try to manipulate Ryan to hit bosses, but frankly, I haven't found a way to directly or indirectly control Ryan to trigger a punch/kick.
andypanther wrote:
This is a River City Ransom EX Wussy TAS, with the goal to beat the main story line at any% in the fastest time possible, while avoiding taking damages, with maximum multipliers, without RNG manipulation, and without entering any cheat codes.
Why not? I don't know this game, but a TAS has to manipulate luck if it saves time.
I did check to see how far I can do with RNG manipulation, and it turns out the core that I'm using, mGBA, is pretty accurate enough such that the RNG has fairly minimal effect in this game. The only randomness you can control are where the enemies spawn in from, when it starts spawning in, and where it is moving to. I thought I could get away with it by abusing the transition screens from one area to the next, but then it turns out that state is set, even when you rewind all the way back to the beginning area. I'll see what I can do with this, but since I'm starting off with very little information to process, it will take a while I'm afraid.
Post subject: Unable to post replies / make threads as mobile users
tom_mai78101
He/Him
Experienced Forum User, Published Author, Player (101)
Joined: 3/16/2015
Posts: 160
For some reasons, I'm getting "Invalid session error" messages whenever I attempted to post replies to threads in this forum on mobile devices. I'm using the latest Chrome browser on Android, if it helps tracking down the problem. Has anyone else encountered this problem, or is this isolated to network ISPs?
tom_mai78101
He/Him
Experienced Forum User, Published Author, Player (101)
Joined: 3/16/2015
Posts: 160
Just resubmitted it. Thanks agian.
Post subject: Accidentally submitted the wrong ZIP containing the tasproj
tom_mai78101
He/Him
Experienced Forum User, Published Author, Player (101)
Joined: 3/16/2015
Posts: 160
I made 2 ZIP files, one containing the BK2 file, and the other one containing TASPROJ file. During submission, I mixed up my ZIP files, and ended up submitting my TASPROJ file instead. Technically, is TASPROJ file allowed? Or do I have a second chance at this submission process by amending my uploaded ZIP file? I'm using Bizhawk v2.2.2 at the moment. Thanks.
tom_mai78101
He/Him
Experienced Forum User, Published Author, Player (101)
Joined: 3/16/2015
Posts: 160
endrift wrote:
You should be able to compile with MSVC out-of-the-box now, but it doesn't rope in the dependencies so you wind up with a very...stripped down version. You'll need to install Qt 5 first, and won't controller support, for example. I'm still looking into a good way to solve this.
Alright, many thanks. EDIT: Checking Qt 5.6...
tom_mai78101
He/Him
Experienced Forum User, Published Author, Player (101)
Joined: 3/16/2015
Posts: 160
Is Visual Studio 2015 now supported as of today? Or it is still not ready? I have returned from a full 9 month break and was wondering about the current status so far. Thanks, everyone.
tom_mai78101
He/Him
Experienced Forum User, Published Author, Player (101)
Joined: 3/16/2015
Posts: 160
zeromus wrote:
which bsnes profile are you using?
Not sure what you mean by "profiles'. If it's this one (below), then it's Casual Gaming. If that isn't it, then I don't know. The steps I did for starting up MarI/O until it crashes are:
  1. Download the Mario-evolve.zip in the MarI/O thread
  2. Run the BAT file that said to run it in the README file.
  3. Start up the EmuHawk.exe.
  4. Let it run for 26 hours.
And that's it.
1 2 3 4 5 6 7