Skilled player (1742)
Joined: 9/17/2009
Posts: 4985
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
1. Nice. Is that movie viewer/editor available in the main builds, or is it a separate branch? Seems rather useful for other multiplayer games. 2. I hope you manage to TAS this one day, since both Air Ride and City Trail drove me nuts in reaching "just" the credits.
Masterjun
He/Him
Site Developer, Skilled player (1988)
Joined: 10/12/2010
Posts: 1185
Location: Germany
Oh right I forgot to link my Dolphin github page (added it now to the reply). The version is pretty old (1 year, and I probably can't simply pull the current one), so don't expect anything cool. I just did this for me because I don't really know how to work with this Dolphin code.
Warning: Might glitch to credits I will finish this ACE soon as possible (or will I?)
Skilled player (1742)
Joined: 9/17/2009
Posts: 4985
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Since CasualPokePlayer made a branch of BizHawk that has the dolphin core, I picked up this game again and made a display script for Top Ride: Download kirby air ride.lua
Language: lua

memory.usememorydomain("System Bus") --Top Ride only local Addresses = { stage_id = 0x80535D4C, total_laps = 0x00536952, --total run laps free_laps = 0x00536954, --free run laps grass_laps = 0x8053695C, sand_laps = 0x8053695D, sky_laps = 0x8053695E, fire_laps = 0x8053695F, light_laps = 0x80536960, water_laps = 0x80536961, metal_laps = 0x80536962, pointer1 = 0x805DDAB8, pointer4 = 0x805DDABC, --2 layers deep pointer2 = 0x80D13BD4, pointer3 = 0x80D13BD8, cam_x = 0x80D13620, cam_z = 0x80D13624, cam_y = 0x80D13628 } local Kirby1 = { ptr = Addresses.pointer1, x = 0x000000, y = 0x000000, z = 0x000000, x_speed = 0x000000, y_speed = 0x000000, z_speed = 0x000000, angle = 0x000000, charge = 0x000000 } local Kirby2 = { ptr = Addresses.pointer2, base = 0x000000, x = 0x000000, y = 0x000000, z = 0x000000, x_speed = 0x000000, y_speed = 0x000000, z_speed = 0x000000, angle = 0x000000, charge = 0x000000 } local Kirby3 = { ptr = Addresses.pointer3, base = 0x000000, x = 0x000000, y = 0x000000, z = 0x000000, x_speed = 0x000000, y_speed = 0x000000, z_speed = 0x000000, angle = 0x000000, charge = 0x000000 } local Kirby4 = { ptr = Addresses.pointer4, x = 0x000000, y = 0x000000, z = 0x000000, x_speed = 0x000000, y_speed = 0x000000, z_speed = 0x000000, angle = 0x000000, charge = 0x000000 } function update(this, depth, offset) --[[ ]]-- local base = memory.read_u32_be(this.ptr) if depth > 1 then -- console.log(bizstring.hex(base + offset)) base = base + offset this.base = base end -- console.log(bizstring.hex(base)) this.x = memory.readfloat(base + 0x88, true) this.z = memory.readfloat(base + 0x8C, true) this.y = memory.readfloat(base + 0x90, true) this.angle = memory.readfloat(base + 0x94, true) this.x_speed = memory.readfloat(base + 0xA0, true) this.z_speed = memory.readfloat(base + 0xA4, true) this.y_speed = memory.readfloat(base + 0xA8, true) this.charge = memory.readfloat(base + 0xB4, true) end --4062CEF63E4CCCCD4166664A while true do local pointer = memory.read_s32_be(Kirby1.ptr) if (pointer ~= 0) then --this will happen if changed rooms or just started script update(Kirby1,0,0) update(Kirby4,0,0) update(Kirby2,2,0xDC8) update(Kirby3,2,0xDC8) end local text_x = 0 -- local line = string.format('Kirby 1 X: %.6f Y: %.6f Z: %.6f', Kirby1.x, Kirby1.y, Kirby1.z) local line = string.format('Kirby 1 X: %8X 2X: %8X 3X: %8X 4X: %8X', memory.read_u32_be(Kirby1.ptr)+0x88, Kirby2.base+0x88, Kirby3.base+0x88, memory.read_u32_be(Kirby4.ptr)+0x88) gui.text(0, text_x + 15 * 0 ,line) local line = string.format('Kirby 1 A: %8X 2A: %8X 3A: %8X 4A: %8X', memory.read_u32_be(Kirby1.ptr)+0x94, Kirby2.base+0x94, Kirby3.base+0x94, memory.read_u32_be(Kirby4.ptr)+0x94) gui.text(0, text_x + 15 * 1 ,line) -- line = string.format('Kirby 1 X: %.6f Y: %.6f Z: %.6f', Kirby1.x_speed, Kirby1.y_speed, Kirby1.z_speed) -- gui.text(0, text_x + 15 * 1 , line) -- gui.text(0, text_x + 15 * 2 , bizstring.hex(memory.read_u32_be(Kirby1.ptr)) .. " XSpeed: " .. bizstring.hex(memory.read_u32_be(Kirby1.ptr)+0x88)) -- line = string.format('Kirby 4 X: %.6f Y: %.6f Z: %.6f', Kirby4.x, Kirby4.y, Kirby4.z) -- gui.text(0, text_x + 15 * 3 ,line) -- line = string.format('Kirby 4 X: %.6f Y: %.6f Z: %.6f', Kirby4.x_speed, Kirby4.y_speed, Kirby4.z_speed) -- gui.text(0, text_x + 15 * 4 , line) -- gui.text(0, text_x + 15 * 5 , bizstring.hex(memory.read_u32_be(Kirby4.ptr)) .. " XSpeed: " .. bizstring.hex(memory.read_u32_be(Kirby4.ptr)+0x88)) -- line = string.format('Kirby 2 X: %.6f Y: %.6f Z: %.6f', Kirby2.x, Kirby2.y, Kirby2.z) -- gui.text(0, text_x + 15 * 3 ,line) -- line = string.format('Kirby 2 X: %.6f Y: %.6f Z: %.6f', Kirby2.x_speed, Kirby2.y_speed, Kirby2.z_speed) -- gui.text(0, text_x + 15 * 4 , line) -- gui.text(0, text_x + 15 * 5 , bizstring.hex(memory.read_u32_be(Kirby2.ptr)) .. " Ptr2: " .. bizstring.hex(memory.read_u32_be(Kirby2.ptr)) .. " XSpeed: " .. bizstring.hex(memory.read_u32_be(Kirby2.base)+0x88)) emu.frameadvance() end
I found all 4 player addresses and their pointers.
Skilled player (1742)
Joined: 9/17/2009
Posts: 4985
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
https://docs.google.com/spreadsheets/d/1mUr0LNo1OBxqTQCaytURPADMgUjrj7FNGuRb2N6uWdg/edit?usp=sharing I found the addresses for achievements, and item/lap count for Top Ride In case the link dies:
HexCourse
805368D0?
805368D1?
805368D2?
805368D3?
805368D4Cross the goal 20 or more times!Any
805368D5Race over 300 laps!Any
805368D6Compete in more than 10 multiplayer races!Any
805368D7Compete in more than 50 multiplayer races!Any
805368D8Race more than 100 laps!Any
805368D9Cross the goal 30 or more times!Any
805368DATake 1st place on all courses!Any
805368DBRace one lap without hitting a wall and finish 1st!Any
805368DCDo 20 or more Quick Spins in one lap and finish 1st!Any
805368DD(No "Zero Items" rule) Complete all courses without using items!Any
805368DE(No "Zero Items" rule) Finish 1st on all courses using no items!Any
805368DFCollect 500 items or more!Any
805368E0Finish all courses without using Boost!Any
805368E1Finish 1st on all courses without Boost!Any
805368E2Get the same item 3 times in one race!Any
805368E3Take 1st place while doing a Quick Spin!Any
805368E4Take 1st place while holding the Hammer!Any
805368E5Finish 1st with 1 lap between you and #2!Any
805368E6Finish 1st with 2 lap between you and #2!Any
805368E7Get more than 20 Spinner items!Any
805368E8Get more than 20 Invincible Candy items!Any
805368E9Get more than 20 Walky Items!Any
805368EATorch 3 or more rivals using one Fire item!Any
805368EBSend 3 or more rivals sailing using one Buzz Saw item!Any
805368ECIn one game, hit enemies 3 times or more with Bomb items!Any
805368EDGet over 18 different types of items!Any
805368EE(No "Zero Items" rule) Take 1st place without using items!Grass
805368EFTake 1st place without using Boost!Grass
805368F0Finish 1st with CPUs set to level 5!Grass
805368F1Take 1st place 10 times or more!Grass
805368F2Finish 7 laps in under 00:43:00!Grass
805368F3Race more than 100 laps!Grass
805368F4Finish 1st and hit 5 or more Dash Panels!Grass
805368F5In one race, drop 30 or more tree bombs!Grass
805368F6Finish 1st 5 seconds faster than #2!Grass
805368F7(No "Zero Items" rule) Take 1st place without using items!Sand
805368F8Take 1st place without using Boost!Sand
805368F9Finish 1st with CPUs set to level 5!Sand
805368FATake 1st place 10 times or more!Sand
805368FBFinish 7 laps in under 00:52:00!Sand
805368FCRace more than 100 laps!Sand
805368FDTake 1st and catch the worm 3 or more times!Sand
805368FEDrop into Ant Doom 50 times or more!Sand
805368FFDrop into Ant Doom 20 times in one game!Sand
80536900Finish 1st 5 seconds faster than #2!Sand
80536901(No "Zero Items" rule) Take 1st place without using items!Sky
80536902Take 1st place without using Boost!Sky
80536903Finish 1st with CPUs set to level 5!Sky
80536904Take 1st place 10 times or more!Sky
80536905Finish 6 laps in under 01:02:00!Sky
80536906Race more than 100 laps!Sky
80536907Finish 1st and hit the Isle Knob 5 or more times!Sky
80536908Finish 1st without using the Jump Plate!Sky
80536909Finish 1st 5 seconds faster than #2!Sky
8053690A(No "Zero Items" rule) Take 1st place without using items!Fire
8053690BTake 1st place without using Boost!Fire
8053690CFinish 1st with CPUs set to level 5!Fire
8053690DTake 1st place 10 times or more!Fire
8053690EFinish 6 laps in under 00:53:00!Fire
8053690FRace more than 100 laps!Fire
80536910Cause a huge eruption 3 times or more!Fire
80536911Finish 1st while holding the Fire item.Fire
80536912Finish 1st 5 seconds faster than #2!Fire
80536913(No "Zero Items" rule) Take 1st place without using items!Water
80536914Take 1st place without using Boost!Water
80536915Finish 1st with CPUs set to level 5!Water
80536916Take 1st place 10 times or more!Water
80536917Finish 5 laps in under 01:02:00!Water
80536918Race more than 100 laps!Water
80536919Finish 1st and enter the falls 5 times or more!Water
8053691AFinish 1st 5 seconds faster than #2!Water
8053691B(No "Zero Items" rule) Take 1st place without using items!Light
8053691CTake 1st place without using Boost!Light
8053691DFinish 1st with CPUs set to level 5!Light
8053691ETake 1st place 10 times or more!Light
8053691FFinish 6 laps in under 00:43:00!Light
80536920Race more than 100 laps!Light
80536921Ride the grind rail 50 times or more!Light
80536922Take 1st and grind the rail 5 times or more!Light
80536923Finish 1st and bust 6 or more columns!Light
80536924Finish 1st 5 seconds faster than #2!Light
80536925(No "Zero Items" rule) Take 1st place without using items!Metal
80536926Take 1st place without using Boost!Metal
80536927Finish 1st with CPUs set to level 5!Metal
80536928Take 1st place 10 times or more!Metal
80536929Finish 5 laps in under 00:58:00!Metal
8053692ARace more than 100 laps!Metal
8053692BTake 1st without breaking any gear walls!Metal
8053692CTake 1st and hit the switch 10 times or more!Metal
8053692DTake 1st and break 5 or more gear walls!Metal
8053692EFinish 1st 5 seconds faster than #2!Metal
8053692FFinish in under 00:33:00!Grass Time Attack
80536930Finish in under 00:35:00!Sand Time Attack
80536931Finish in under 00:38:00!Light Time Attack
80536932Finish in under 00:57:00!Sky Time Attack
80536933Finish in under 01:06:00!Water Time Attack
80536934Finish in under 00:46:00!Fire Time Attack
80536935Finish in under 00:57:00!Metal Time Attack
80536936Finish in under 00:28:00!Grass Time Attack
80536937Finish in under 00:29:00!Sand Time Attack
80536938Finish in under 00:33:00!Light Time Attack
80536939Finish in under 00:47:00!Sky Time Attack
8053693AFinish in under 00:56:00!Water Time Attack
8053693BFinish in under 00:39:00!Fire Time Attack
8053693CFinish in under 00:51:00!Metal Time Attack
8053693DDo one lap in under 00:06:00!Grass Free Run
8053693EDo one lap in under 00:06:50!Sand Free Run
8053693FDo one lap in under 00:07:50!Light Free Run
80536940Do one lap in under 00:11:00!Sky Free Run
80536941Do one lap in under 00:12:00!Water Free Run
80536942Do one lap in under 00:08:00!Fire Free Run
80536943Do one lap in under 00:11:50!Metal Free Run
80536944Do one lap in under 00:04:50!Grass Free Run
80536945Do one lap in under 00:05:00!Sand Free Run
80536946Do one lap in under 00:06:00!Light Free Run
80536947Do one lap in under 00:09:00!Sky Free Run
80536948Do one lap in under 00:10:50!Water Free Run
80536949Do one lap in under 00:06:50!Fire Free Run
8053694ADo one lap in under 00:09:50!Metal Free Run
The for the rest of the table, it's item/lap counts:
8053694C?
8053694DWin Count
8053694E?
8053694F?
80536950Time Attack Wins
80536951Time Attack Wins
80536952Total laps
80536953Total laps
80536954Free Run Laps
80536955Grass Win Count
80536956Sand Win Count
80536957Sky Win Count
80536958Fire Win Count
80536959Light Win Count
8053695AWater Win Count
8053695BMetal Win Count
8053695CGrass Lap Count
8053695DSand Lap Count
8053695ESky Lap Count
8053695FFire Lap Count
80536960Light Lap Count
80536961Water Lap Count
80536962Metal Lap Count
80536963Hammer Count
80536964Cake Count
80536965Rocker Booster Count
80536966Tire Count
80536967Spinner Count
80536968Battery Count
80536969Candy Count
8053696ASaw Count
8053696BDrill Count
8053696CFrost Count
8053696DMissile Count
8053696EFire Count
8053696FPartyball Count
80536970Bomb Count
80536971Skull Mine Count
80536972?
80536973Walky Count
80536974Kracko Count
80536975Who? Paint Count
80536976Smoke Count
80536977Chickie Count
80536978?
80536979?
8053697A?
8053697B?
8053697CAnt Dome drop count
8053697DLight Rail count
8053697E?
8053697F?