Skilled player (1731)
Joined: 9/17/2009
Posts: 4981
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
There's a 1/2 finished run of it Link to video There doesn't seem to be really any bugs so far. If anyone knows more information on this game please post. https://cdn.discordapp.com/attachments/280808167993245707/1115469463173726288/Medarot_Kabuto_J_V1.1_S_Patched.wch I found some addresses for version 1.1 (english patched). https://docs.google.com/spreadsheets/d/1jCF1yrjKP_YtdQYdCLTOwyn2CYYuzUhNQyFeb87ks_E/edit?usp=sharing More stuff here Found where parts are stored in CartRAM Also listed store prices. Download get parts.lua
Language: lua

memory.usememorydomain("CartRAM") local start = 0x3520 local end_ = 0x371E local start_id = 0x80 local end_id = 0xBF for i = start, end_, 2 do memory.write_s8(i,start_id+((i-start)/2)%64) memory.write_s8(i+1,2) end
This script gives all parts, for easier testing. It works on both 1.0 and 1.1, including english patch.
Skilled player (1731)
Joined: 9/17/2009
Posts: 4981
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Battle: The goal of the battle is to get the leader (the bot at the top right of the field) hp to 0. By destroying the head, their hp instantly drops to 0, allowing for quick fights. You start in a screen like this Here you can press A to view your parts, or press Start to begin. Once you press Start, the following addresses in CartWRAM are updated: 0x2433 - Which joint you will target when you press UP ? - Which NPC of the 3 you will target, when you press UP 0x2437 - Which joint you will target when you press RIGHT ? - Which NPC of the 3 you will target, when you press RIGHT 0x243B - Which joint you will target when you press LEFT ? - Which NPC of the 3 you will target, when you press LEFT The values are: 0 - Head 1 - Right Arm 2 - Left Arm 3 - Legs On the very first turn, once you selected a joint and pressed A, the npc's will have their target (you, or the other 2 bots you can have) as well as the joint determined. You will also get this screen This screen only appears on the first turn. You can take advantage of this screen by delaying frames to manipulate the following: 1. If you or the npc has the head as target, right before the actual attack animation, there's a 2nd roll to see if you/the npc uses a different limb to defend the head. If so, the new joint will be the target rather than the head. This is very bad, and is usually the reason why delays are long. However, if the NPC is targeting your head, this can be very helpful, since it allows more choices of frames to choose from. 2. If the attack misses. This usually doesn't happen, but later on NPCs have high evasive, so it starts becoming a problem 3. If the attack misses, and you used a missile, does the blast still hit? From english patch: This is what the Japanese WIP manipulates to occur. If you used the default missile (UP), even if it misses, there's a chance the attack still hits. 4. How fast you and the npc run to the center of the stage to attack. For NPCs with similar speeds as you, this might allow you to KO them before they get to attack. 5. After the 1st turn, what will the NPCs target next + what joint/npc you will target. From 5, this means that if you cannot KO the leader bot in 1 turn, you must delay at this screen To make sure 1. You hit the leader's head. 2. On your next turn, the leader is the one targeted, and not the other 2 bots. 3. On your next turn, the leader's head is the one targeted, and not the other 3 limbs. 4. On the NPC's next turn, they don't aim for your head, or any limb that will be destroyed due to low health. To assist in this, here's the input display Download medarot data.lua
Language: lua

local medarot_module = {} --for Kabuto version 1.0 medarot_module.Addresses = { --CartRam (for fights) damage_dealt = 0x20E4, damage_dealt2 = 0x2409, target_up = 0x2432, --which npc I will hit, if I pressed Up as attack target_joint_up = 0x2433, --which joint I will hit, if I pressed Up as attack target_right = 0x2436, --which npc I will hit, if I pressed Right as attack target_joint_right = 0x2437, --which joint I will hit, if I pressed Right as attack target_left = 0x243A, --which npc I will hit, if I pressed Left as attack target_joint_left = 0x243B, --which joint I will hit, if I pressed Left as attack --0 head, 1 right arm, 2 left arm, 3 legs --medal 1 --0x2641 medal --0x2643 rank --0x2644 level --0x2645 XP, 2 bytes, big endian --0x2646 XP, 2 bytes, big endian --0x2648 attack --0x2649 defence --0x264A special --0x264B bonus --0x2656 --my stuff --starts at 0x2C00 p1_base = 0x2C00, p1_head_id = 0x2C0D, p1_right_arm_id = 0x2C0E, p1_left_arm_id = 0x2C0F, p1_leg_id = 0x2C10, p1_hp = 0x2C59, --2 byte, big endian p1_max_hp = 0x2C5B, --2 byte, big endian p1_medal = 0x2C81, p1_hp_head = 0x2CC0, p1_hp_right_arm = 0x2CC1, p1_hp_left_arm = 0x2CC2, p1_hp_leg = 0x2CC3, p1_target_joint = 0x2CCC, --which joint I will hit p1_name = 0x2CF0, p2_base = 0x2D00, p3_base = 0x2E00, --npc1 hp npc1_base = 0x2F00, npc1_char1 = 0x2F02, npc1_medal1 = 0x2F0B, --1 byte, medal? npc1_head = 0x2F0D, --1 byte, what head it is npc1_right_arm = 0x2F0E, --1 byte, what right arm it is npc1_left_arm = 0x2F0F, --1 byte, what left arm it is npc1_legs = 0x2F10, --1 byte, what leg it is -- npc1_sprite = 0x2F10, --1 byte, the one that appears in overworld npc1_hp = 0x2F59, --2 byte, big endian npc1_max_hp = 0x2F5B, --2 byte, big endian npc1_medal2 = 0x2F81, --1 byte npc1_hp_head = 0x2FC0, npc1_hp_right_arm = 0x2FC1, npc1_hp_left_arm = 0x2FC2, npc1_hp_leg = 0x2FC3, npc1_joint = 0x2FCA, --which joint they chose to use npc1_target = 0x2FCB, --which joint they chose to use npc1_target_joint = 0x2FCC, --which joint npc1 will hit --npc2 npc2_base = 0x3000, npc3_base = 0x3100, --Other stuff x_pos = 0xC0D4, y_pos = 0xC0D5, timer = 0xC5A0, --for rng rng3 = 0xC5F0, rng1 = 0xC723, rng2 = 0xC724, battle_id = 0xC753, --id of trainer encounter_timer = 0xC761, --steps before encounter area = 0xC8F9, money = 0xC93A, --number x 10 is money } --Amount is the address in CartRam for number of that part you have. medarot_module.Head = { [0] = {name ="Shotgun", sell = 1200, amount = 0x3521}, [1] = {name ="Hexadon", sell = 1100, amount = 0x3523}, [2] = {name ="Psycho-Wave", sell = 1000, amount = 0x3525}, [3] = {name ="Blast Gun", sell = 1200, amount = 0x3527}, [4] = {name ="Cockpit", sell = 2800, amount = 0x3529}, [5] = {name ="Angel Body", sell = 3000, amount = 0x352B}, [6] = {name ="Meteor Strike", sell = 700, amount = 0x352D}, [7] = {name ="Void", sell = 1000, amount = 0x352F}, [8] = {name ="Hani-Head", sell = 1500, amount = 0x3531}, [9] = {name ="Doguu", sell = 900, amount = 0x3533}, [10] = {name ="Pharnyx", sell = 800, amount = 0x3535}, [11] = {name ="Dragon Crystal", sell = 2300, amount = 0x3537}, [12] = {name ="Field Barrier", sell = 1100, amount = 0x3539}, [13] = {name ="Death Blast", sell = 5000, amount = 0x353B}, [14] = {name ="Body Blow", sell = 1500, amount = 0x353D}, [15] = {name ="Booby Trap", sell = 400, amount = 0x353F}, [16] = {name ="Headband", sell = 300, amount = 0x3541}, [17] = {name ="Hacker", sell = 300, amount = 0x3543}, [18] = {name ="Guardian", sell = 4800, amount = 0x3545}, [19] = {name ="Solar Laser", sell = 1000, amount = 0x3547}, [20] = {name ="Invisi Body", sell = 600, amount = 0x3549}, [21] = {name ="Antenna", sell = 1000, amount = 0x354B}, [22] = {name ="Missile", sell = 1000, amount = 0x354D}, [23] = {name ="Stealth Cloak/Mist Net", sell = 1200, amount = 0x354F}, [24] = {name ="Mikazuchi", sell = 300, amount = 0x3551}, [25] = {name ="Body Press", sell = 800, amount = 0x3553}, [26] = {name ="Air Bag", sell = 300, amount = 0x3555}, [27] = {name ="Samurai Blast", sell = 1500, amount = 0x3557}, [28] = {name ="Linear Cannon", sell = 400, amount = 0x3559}, [29] = {name ="Melt Cone", sell = 2400, amount = 0x355B}, [30] = {name ="Air-con", sell = 1700, amount = 0x355D}, [31] = {name ="Smoke Gas", sell = 1000, amount = 0x355F}, [32] = {name ="Mute Body", sell = 2200, amount = 0x3561}, [33] = {name ="Devil Body", sell = 700, amount = 0x3563}, [34] = {name ="Fighter Hair", sell = 1800, amount = 0x3565}, [35] = {name ="Taser", sell = 1000, amount = 0x3567}, [36] = {name ="Blizzard", sell = 1200, amount = 0x3569}, [37] = {name ="Sanctuary", sell = 1900, amount = 0x356B}, [38] = {name ="Charm Point", sell = 600, amount = 0x356D}, [39] = {name ="Body Conscious", sell = 1900, amount = 0x356F}, [40] = {name ="Body Shot", sell = 1400, amount = 0x3571}, [41] = {name ="Plasma Laser", sell = 400, amount = 0x3573}, [42] = {name ="Morning Call", sell = 1700, amount = 0x3575}, [43] = {name ="Finale", sell = 400, amount = 0x3577}, [44] = {name ="Victory Armor", sell = 300, amount = 0x3579}, [45] = {name ="Clear Shield", sell = 400, amount = 0x357B}, [46] = {name ="Search Radar", sell = 200, amount = 0x357D}, [47] = {name ="Elec-Charger", sell = 200, amount = 0x357F}, [48] = {name ="Battery", sell = 600, amount = 0x3581}, [49] = {name ="Tank Missile", sell = 1500, amount = 0x3583}, [50] = {name ="Debugger", sell = 400, amount = 0x3585}, [51] = {name ="Trample", sell = 1100, amount = 0x3587}, [52] = {name ="Cover Up", sell = 300, amount = 0x3589}, [53] = {name ="Grand Bomb", sell = 2300, amount = 0x358B}, [54] = {name ="Anti-Water", sell = 1000, amount = 0x358D}, [55] = {name ="Elec-Driver", sell = 1000, amount = 0x358F}, [56] = {name ="Pearl", sell = 1000, amount = 0x3591}, [57] = {name ="Kappa Beam", sell = 1000, amount = 0x3593}, [58] = {name ="All Repair", sell = 2300, amount = 0x3595}, [59] = {name ="Resurrector", sell = 4700, amount = 0x3597}, [60] = {name ="", sell = 0, amount = 0x3599}, [61] = {name ="", sell = 0, amount = 0x359B}, [62] = {name ="??", sell = 0, amount = 0x359D}, [63] = {name ="??", sell = 0, amount = 0x359F} } medarot_module.Right_Arm = { [0] = {name ="Cyclone", sell = 300, amount = 0x35A1}, [1] = {name ="Mistouch", sell = 400, amount = 0x35A3}, [2] = {name ="Electro-Wave", sell = 400, amount = 0x35A5}, [3] = {name ="Fire Gun", sell = 600, amount = 0x35A7}, [4] = {name ="Stabilizer", sell = 1000, amount = 0x35A9}, [5] = {name ="Angel Hand", sell = 2200, amount = 0x35AB}, [6] = {name ="Pressure", sell = 2000, amount = 0x35AD}, [7] = {name ="Avoid", sell = 1400, amount = 0x35AF}, [8] = {name ="Mirror", sell = 1500, amount = 0x35B1}, [9] = {name ="Bronze Bell", sell = 1300, amount = 0x35B3}, [10] = {name ="Sound Copy", sell = 300, amount = 0x35B5}, [11] = {name ="Healing Water", sell = 1400, amount = 0x35B7}, [12] = {name ="Energy Barrier", sell = 300, amount = 0x35B9}, [13] = {name ="Death Bomb", sell = 5000, amount = 0x35BB}, [14] = {name ="Sabre", sell = 1500, amount = 0x35BD}, [15] = {name ="Fly Trap", sell = 500, amount = 0x35BF}, [16] = {name ="Wire", sell = 300, amount = 0x35C1}, [17] = {name ="Virus", sell = 800, amount = 0x35C3}, [18] = {name ="Canceller", sell = 8000, amount = 0x35C5}, [19] = {name ="Solar Power", sell = 400, amount = 0x35C7}, [20] = {name ="Invisi Hand", sell = 400, amount = 0x35C9}, [21] = {name ="Chanbara Sword", sell = 1000, amount = 0x35CB}, [22] = {name ="Revolver", sell = 1000, amount = 0x35CD}, [23] = {name ="Kunai", sell = 1200, amount = 0x35CF}, [24] = {name ="Fencing", sell = 400, amount = 0x35D1}, [25] = {name ="Light Axe", sell = 500, amount = 0x35D3}, [26] = {name ="Spin Knuckle", sell = 400, amount = 0x35D5}, [27] = {name ="Beam Saber", sell = 1500, amount = 0x35D7}, [28] = {name ="Snipe Rifle", sell = 500, amount = 0x35D9}, [29] = {name ="Melt Bomb", sell = 2400, amount = 0x35DB}, [30] = {name ="Heat Sink", sell = 1700, amount = 0x35DD}, [31] = {name ="Scout Hand", sell = 900, amount = 0x35DF}, [32] = {name ="Mute Hand", sell = 2200, amount = 0x35E1}, [33] = {name ="Devil Hand", sell = 700, amount = 0x35E3}, [34] = {name ="Machine Gun", sell = 400, amount = 0x35E5}, [35] = {name ="Stun Gun", sell = 1100, amount = 0x35E7}, [36] = {name ="Ice", sell = 1000, amount = 0x35E9}, [37] = {name ="First Aid", sell = 1000, amount = 0x35EB}, [38] = {name ="Powder Bomb", sell = 1400, amount = 0x35ED}, [39] = {name ="Hand Whip", sell = 1900, amount = 0x35EF}, [40] = {name ="Anti-Air Missile", sell = 1400, amount = 0x35F1}, [41] = {name ="Tracking Laser", sell = 200, amount = 0x35F3}, [42] = {name ="Right Beam", sell = 800, amount = 0x35F5}, [43] = {name ="Carnival", sell = 400, amount = 0x35F7}, [44] = {name ="Vulcan", sell = 700, amount = 0x35F9}, [45] = {name ="Knight Shield", sell = 400, amount = 0x35FB}, [46] = {name ="Point Radar", sell = 300, amount = 0x35FD}, [47] = {name ="Charge", sell = 300, amount = 0x35FF}, [48] = {name ="Normal Laser", sell = 600, amount = 0x3601}, [49] = {name ="Homing", sell = 700, amount = 0x3603}, [50] = {name ="Breaker", sell = 400, amount = 0x3605}, [51] = {name ="Right Guard", sell = 500, amount = 0x3607}, [52] = {name ="Trap Buster", sell = 300, amount = 0x3609}, [53] = {name ="Black Hole", sell = 700, amount = 0x360B}, [54] = {name ="VS Water", sell = 300, amount = 0x360D}, [55] = {name ="Plus-Driver", sell = 300, amount = 0x360F}, [56] = {name ="Drainer", sell = 1000, amount = 0x3611}, [57] = {name ="Cucumber Bomb", sell = 600, amount = 0x3613}, [58] = {name ="Cure Hand", sell = 2300, amount = 0x3615}, [59] = {name ="Free Arm", sell = 3900, amount = 0x3617}, [60] = {name ="", sell = 0, amount = 0x3619}, [61] = {name ="", sell = 0, amount = 0x361B}, [62] = {name ="", sell = 0, amount = 0x361D}, [63] = {name ="", sell = 0, amount = 0x361F} } medarot_module.Left_Arm = { [0] = {name ="Tornado", sell = 300, amount = 0x3621}, [1] = {name ="Bugler", sell = 400, amount = 0x3623}, [2] = {name ="Magnet-Wave", sell = 400, amount = 0x3625}, [3] = {name ="Flame Gun", sell = 600, amount = 0x3627}, [4] = {name ="Wing", sell = 1000, amount = 0x3629}, [5] = {name ="Angel Arm", sell = 2200, amount = 0x362B}, [6] = {name ="Masher", sell = 2000, amount = 0x362D}, [7] = {name ="Exit", sell = 1400, amount = 0x362F}, [8] = {name ="Flash", sell = 1500, amount = 0x3631}, [9] = {name ="Bronze Bang", sell = 1300, amount = 0x3633}, [10] = {name ="Return Sound", sell = 300, amount = 0x3635}, [11] = {name ="Revival Spring", sell = 1400, amount = 0x3637}, [12] = {name ="Force Barrier", sell = 300, amount = 0x3639}, [13] = {name ="Death Beam", sell = 5000, amount = 0x363B}, [14] = {name ="Cape Shield", sell = 1500, amount = 0x363D}, [15] = {name ="Sticky Trap", sell = 500, amount = 0x363F}, [16] = {name ="Net", sell = 300, amount = 0x3641}, [17] = {name ="Jack", sell = 300, amount = 0x3643}, [18] = {name ="Recovery", sell = 8000, amount = 0x3645}, [19] = {name ="Solar Plate", sell = 400, amount = 0x3647}, [20] = {name ="Invisi Arm", sell = 400, amount = 0x3649}, [21] = {name ="Picopeco Hammer", sell = 1000, amount = 0x364B}, [22] = {name ="Submachinegun", sell = 1000, amount = 0x364D}, [23] = {name ="Ninjato", sell = 1200, amount = 0x364F}, [24] = {name ="Rapier", sell = 400, amount = 0x3651}, [25] = {name ="Great Axe", sell = 500, amount = 0x3653}, [26] = {name ="Megaton Punch", sell = 400, amount = 0x3655}, [27] = {name ="Samurai Saber", sell = 1500, amount = 0x3657}, [28] = {name ="Assault Rifle", sell = 500, amount = 0x3659}, [29] = {name ="Melt Rain", sell = 2400, amount = 0x365B}, [30] = {name ="Fan", sell = 1700, amount = 0x365D}, [31] = {name ="Scout Arm", sell = 900, amount = 0x365F}, [32] = {name ="Mute Arm", sell = 2200, amount = 0x3661}, [33] = {name ="Devil Arm", sell = 700, amount = 0x3663}, [34] = {name ="Magnum", sell = 400, amount = 0x3665}, [35] = {name ="Stun Stick", sell = 1100, amount = 0x3667}, [36] = {name ="Freeze", sell = 1600, amount = 0x3669}, [37] = {name ="Vaccine", sell = 1000, amount = 0x366B}, [38] = {name ="Hand Grenade", sell = 1400, amount = 0x366D}, [39] = {name ="Arm Candy", sell = 1900, amount = 0x366F}, [40] = {name ="Super Long Cannon", sell = 1400, amount = 0x3671}, [41] = {name ="Homing Laser", sell = 200, amount = 0x3673}, [42] = {name ="Left Beam", sell = 800, amount = 0x3675}, [43] = {name ="Festival", sell = 400, amount = 0x3677}, [44] = {name ="Gatling", sell = 700, amount = 0x3679}, [45] = {name ="Great Shield", sell = 400, amount = 0x367B}, [46] = {name ="Cut Radar", sell = 300, amount = 0x367D}, [47] = {name ="Generator", sell = 300, amount = 0x367F}, [48] = {name ="Hyper Laser", sell = 600, amount = 0x3681}, [49] = {name ="Grenade", sell = 700, amount = 0x3683}, [50] = {name ="Graviton", sell = 400, amount = 0x3685}, [51] = {name ="Left Guard", sell = 500, amount = 0x3687}, [52] = {name ="Barrier Buster", sell = 300, amount = 0x3689}, [53] = {name ="Dark Hole", sell = 700, amount = 0x368B}, [54] = {name ="Spray Water", sell = 300, amount = 0x368D}, [55] = {name ="Minus-Driver", sell = 300, amount = 0x368F}, [56] = {name ="Absorber", sell = 1000, amount = 0x3691}, [57] = {name ="Lotus Bomb", sell = 600, amount = 0x3693}, [58] = {name ="Repair Arm", sell = 2300, amount = 0x3695}, [59] = {name ="New Arm", sell = 3900, amount = 0x3697}, [60] = {name ="", sell = 0, amount = 0x3699}, [61] = {name ="", sell = 0, amount = 0x369B}, [62] = {name ="", sell = 0, amount = 0x369D}, [63] = {name ="", sell = 0, amount = 0x369F} } medarot_module.Leg = { [0] = {name ="Leaf Fan", sell = 900, amount = 0x36A1}, [1] = {name ="Abdomen", sell = 1700, amount = 0x36A3}, [2] = {name ="Coffin", sell = 500, amount = 0x36A5}, [3] = {name ="Red Tail", sell = 500, amount = 0x36A7}, [4] = {name ="Jet Engine", sell = 2700, amount = 0x36A9}, [5] = {name ="Angel Leg", sell = 2300, amount = 0x36AB}, [6] = {name ="Floaty", sell = 600, amount = 0x36AD}, [7] = {name ="Excite", sell = 500, amount = 0x36AF}, [8] = {name ="Haniwan", sell = 1500, amount = 0x36B1}, [9] = {name ="Kaboom", sell = 600, amount = 0x36B3}, [10] = {name ="Pipe Organ", sell = 400, amount = 0x36B5}, [11] = {name ="Dragon's Bed", sell = 1500, amount = 0x36B7}, [12] = {name ="Flower Fly", sell = 900, amount = 0x36B9}, [13] = {name ="Spaghetti", sell = 2500, amount = 0x36BB}, [14] = {name ="Dash Attack", sell = 1500, amount = 0x36BD}, [15] = {name ="Spider Net", sell = 800, amount = 0x36BF}, [16] = {name ="Octo Legs", sell = 300, amount = 0x36C1}, [17] = {name ="Musk", sell = 300, amount = 0x36C3}, [18] = {name ="Racer", sell = 2300, amount = 0x36C5}, [19] = {name ="Roots", sell = 300, amount = 0x36C7}, [20] = {name ="Twirl", sell = 400, amount = 0x36C9}, [21] = {name ="Tatacker", sell = 1000, amount = 0x36CB}, [22] = {name ="Ochitsuker", sell = 1000, amount = 0x36CD}, [23] = {name ="Ninja Legs", sell = 1200, amount = 0x36CF}, [24] = {name ="Hakama", sell = 300, amount = 0x36D1}, [25] = {name ="Kinta Legs", sell = 1000, amount = 0x36D3}, [26] = {name ="Breadwinner", sell = 300, amount = 0x36D5}, [27] = {name ="Commander", sell = 1500, amount = 0x36D7}, [28] = {name ="Gunzer", sell = 100, amount = 0x36D9}, [29] = {name ="Native Step", sell = 2400, amount = 0x36DB}, [30] = {name ="Bunny Hop", sell = 1700, amount = 0x36DD}, [31] = {name ="Quick Legs", sell = 1600, amount = 0x36DF}, [32] = {name ="Mute Legs", sell = 2200, amount = 0x36E1}, [33] = {name ="Devil Leg", sell = 3100, amount = 0x36E3}, [34] = {name ="Miniskirt", sell = 1800, amount = 0x36E5}, [35] = {name ="Cat Walk", sell = 1100, amount = 0x36E7}, [36] = {name ="Sled Ski", sell = 1600, amount = 0x36E9}, [37] = {name ="Apron", sell = 1000, amount = 0x36EB}, [38] = {name ="Thighs", sell = 1400, amount = 0x36ED}, [39] = {name ="Leg-High Heels", sell = 1900, amount = 0x36EF}, [40] = {name ="Plasma Dash", sell = 1400, amount = 0x36F1}, [41] = {name ="Stalker", sell = 300, amount = 0x36F3}, [42] = {name ="Dog Race", sell = 800, amount = 0x36F5}, [43] = {name ="Ballrider", sell = 400, amount = 0x36F7}, [44] = {name ="Armor Car", sell = 300, amount = 0x36F9}, [45] = {name ="Trojan Horse", sell = 400, amount = 0x36FB}, [46] = {name ="Chairly", sell = 300, amount = 0x36FD}, [47] = {name ="Snailcargot", sell = 200, amount = 0x36FF}, [48] = {name ="Shell Tank", sell = 800, amount = 0x3701}, [49] = {name ="Block Tank", sell = 700, amount = 0x3703}, [50] = {name ="Handy Car", sell = 600, amount = 0x3705}, [51] = {name ="Crush Legs", sell = 400, amount = 0x3707}, [52] = {name ="Shovel", sell = 500, amount = 0x3709}, [53] = {name ="Seat", sell = 700, amount = 0x370B}, [54] = {name ="Screw", sell = 2100, amount = 0x370D}, [55] = {name ="Flip-Flap", sell = 400, amount = 0x370F}, [56] = {name ="Undertower", sell = 1000, amount = 0x3711}, [57] = {name ="Coral Reef", sell = 900, amount = 0x3713}, [58] = {name ="Taily", sell = 1500, amount = 0x3715}, [59] = {name ="Fin", sell = 2300, amount = 0x3717}, [60] = {name ="", sell = 0, amount = 0x3719}, [61] = {name ="", sell = 0, amount = 0x371B}, [62] = {name ="", sell = 0, amount = 0x371D}, [63] = {name ="", sell = 0, amount = 0x371F} } medarot_module.Bot = { [0] = "Crow Tengu", [1] = "Propolis", [2] = "CoffinBat", [3] = "HellPhoenix", [4] = "LadyJet", [5] = "Heal Angel", [6] = "Betty Bear", [7] = "Mistyghost", [8] = "Haniwa Golem", [9] = "DonDoguu", [10] = "Volume 10", [11] = "Moon Dragon", [12] = "Pastel Fairy", [13] = "Beast Master", [14] = "Red Matador", [15] = "Trap Spider", [16] = "Kanehachi", [17] = "Maxsnake", [18] = "Acehorn", [19] = "Flowercharge", [20] = "Seven Colors", [21] = "Head Scissors", [22] = "Metal Beetle", [23] = "Nin-Ninja", [24] = "A-Burage", [25] = "Kin-Tarou", [26] = "A-Gedama", [27] = "Samurai", [28] = "Cyandog", [29] = "Teepee", [30] = "Kirabbit", [31] = "Monkey Gong", [32] = "Cosmo-Alien", [33] = "Blackmail", [34] = "Sailormate", [35] = "Magentacat", [36] = "Auroraqueen", [37] = "Holynurse", [38] = "Get Ready", [39] = "Bunnyheart", [40] = "Landmotor", [41] = "Rollstar", [42] = "Comadog", [43] = "Magical Pierrot", [44] = "Tank Soldier", [45] = "Knight Armor", [46] = "Doctor Study", [47] = "Escarloader", [48] = "Yellowturtle", [49] = "Sekizou", [50] = "Mad Muscle", [51] = "Megaphant", [52] = "Digmole", [53] = "King Pharaoh", [54] = "Blue Submarine", [55] = "Yuchitang", [56] = "Shell Cushion", [57] = "River Saucer", [58] = "Pure Mermaid", [59] = "Pinguen", [60] = "--------" } return medarot_module
Download medarot.lua
Language: lua

client.SetGameExtraPadding(0, 0, 160, 34) local medarot_data = require 'medarot data' local Addresses = medarot_data.Addresses local Head = medarot_data.Head local Right_Arm = medarot_data.Right_Arm local Left_Arm = medarot_data.Left_Arm local Leg = medarot_data.Leg local Bot = medarot_data.Bot local text local read8 local read16 local read32 if vba then text = gui.text read8 = memory.readbyteunsigned read16 = memory.readwordunsigned read32 = memory.readlongunsigned else text = gui.pixelText memory.usememorydomain("System Bus") read8 = memory.read_u8 read16 = memory.read_u16_le read16be = memory.read_u16_be read32 = memory.read_u32_le end function waitframe(frame) local damage_dealt = read8(Addresses.damage_dealt2, "CartRAM") while (frame >= 0) do damage_dealt = read8(Addresses.damage_dealt2, "CartRAM") text(0, 10,'Damage: '.. damage_dealt) --Game state for debugging emu.frameadvance() frame = frame-1 end end console.clear() local function GetStats(addr,o) o = o or {} --Construct a table if we didn't get one o.address = addr o.medal = read8(addr + 0x0B, "CartRAM") o.head = read8(addr + 0x0D, "CartRAM")%128 o.right_arm = read8(addr + 0x0E, "CartRAM")%128 o.left_arm = read8(addr + 0x0F, "CartRAM")%128 o.leg = read8(addr + 0x10, "CartRAM")%128 o.leg_swap = read8(addr + 0x2C, "CartRAM") --if 0, your attack targets leg instead? o.flux_status = read8(addr + 0x3C, "CartRAM") --if 1, accuracy is lowered --leg stats o.speed = read8(addr + 0x51, "CartRAM") --used in miss calc. mobility? o.mobility = read8(addr + 0x52, "CartRAM") --used in miss calc. mobility? o.fight = read8(addr + 0x53, "CartRAM") o.shoot = read8(addr + 0x54, "CartRAM") o.scan = read8(addr + 0x55, "CartRAM") o.conceal = read8(addr + 0x56, "CartRAM") o.joint_p = read8(addr + 0x58, "CartRAM") --the player's joint they chose o.hp = read16be(addr + 0x59, "CartRAM") o.hp_max = read16be(addr + 0x5B, "CartRAM") o.medal_level = read8(addr + 0x84, "CartRAM") o.medal_attack = read8(addr + 0x88, "CartRAM") o.medal_defence = read8(addr + 0x89, "CartRAM") o.medal_special = read8(addr + 0x8A, "CartRAM") o.medal_bonus = read8(addr + 0x8B, "CartRAM") o.hp_head = read8(addr + 0xC0, "CartRAM") o.hp_right_arm = read8(addr + 0xC1, "CartRAM") o.hp_left_arm = read8(addr + 0xC2, "CartRAM") o.hp_leg = read8(addr + 0xC3, "CartRAM") o.joint = read8(addr + 0xCA, "CartRAM") --which joint they chose to use o.target = read8(addr + 0xCB, "CartRAM") --which medabot they will attack o.target_joint = read8(addr + 0xCC, "CartRAM") --which joint they will target --... And so on return o end local joint = { [0] = "Head", "Right", "Left", "Leg"} local joint2 = { [0] = "H", "R", "L", "Lg"} local joint3 = { [0] = Head, Right, Left} local target = {[0] = "P1", "P2", "P3", "E1", "E2", "E3"} function display_parts() --get each part + amount local money = read16be(Addresses.money) * 10 local parts_money = 0 local head_money = 0 local right_money = 0 local left_money = 0 local leg_money = 0 local Head_parts = "" local Right_parts = "" local Left_parts = "" local Leg_parts = "" --for text positioning later local H = 0 local R = 0 local L = 0 local Lg = 0 local text_x = 160 local text_y = 0 for i = 0, 63 do local head_amount = read8(Head[i].amount, "CartRAM") local right_amount = read8(Right_Arm[i].amount, "CartRAM") local left_amount = read8(Left_Arm[i].amount, "CartRAM") local leg_amount = read8(Leg[i].amount, "CartRAM") head_money = head_money + (head_amount * Head[i].sell) right_money = right_money + (right_amount * Right_Arm[i].sell) left_money = left_money + (left_amount * Left_Arm[i].sell) leg_money = leg_money + (leg_amount * Leg[i].sell) if (head_amount > 0) then Head_parts = Head_parts .. Head[i].name .. " (" .. head_amount * Head[i].sell .. ")\n" H = H+1 end if (right_amount > 0) then Right_parts = Right_parts .. Right_Arm[i].name .. " (" .. right_amount * Right_Arm[i].sell .. ")\n" R = R+1 end if (left_amount > 0) then Left_parts = Left_parts .. Left_Arm[i].name .. " (" .. left_amount * Left_Arm[i].sell .. ")\n" L = L+1 end if (leg_amount > 0) then Leg_parts = Leg_parts .. Leg[i].name .. " (" .. leg_amount * Leg[i].sell .. ")\n" Lg = Lg+1 end end parts_money = head_money + right_money + left_money + leg_money text(text_x, text_y, "Money: " .. money .. " Parts value: " .. parts_money) text_y = 7 text(text_x, text_y, "Head Value: " .. head_money, "green") text_y = 14 text(text_x, text_y, Head_parts) text_y = text_y + (H * 7) text(text_x, text_y, "Right Arm Value: " .. right_money, "green") text_y = text_y + 7 text(text_x, text_y, Right_parts) text_y = text_y + (R * 7) text(text_x, text_y, "Left Arm Value: " .. left_money, "green") text_y = text_y + 7 text(text_x, text_y, Left_parts) text_y = text_y + (L * 7) text(text_x, text_y, "Leg Value: " .. leg_money, "green") text_y = text_y + 7 text(text_x, text_y, Leg_parts) end function display_robattle() local p1 = GetStats(Addresses.p1_base) local p2 = GetStats(Addresses.p2_base) local p3 = GetStats(Addresses.p3_base) local npc1 = GetStats(Addresses.npc1_base) local npc2 = GetStats(Addresses.npc2_base) local npc3 = GetStats(Addresses.npc3_base) local target_up = read8(Addresses.target_up, "CartRAM") local target_right = read8(Addresses.target_right, "CartRAM") local target_left = read8(Addresses.target_left, "CartRAM") local target_joint_up = read8(Addresses.target_joint_up, "CartRAM") local target_joint_right = read8(Addresses.target_joint_right, "CartRAM") local target_joint_left = read8(Addresses.target_joint_left, "CartRAM") local damage_dealt = read8(Addresses.damage_dealt2, "CartRAM") local text_x = 160 local text_y = 0 local text_x_relative = 0 local text_y_relative = 0 local color = "white" local l_string = "" local l_joint = "" local bots = {p1, p2, p3, npc1, npc2, npc3} -- text(text_x, text_y, "P1: HP: " .. p1.hp .. "/" .. p1.hp_max .. "\nHead: " .. p1.hp_head .. "\nRight Arm: " .. p1.hp_right_arm .. "\nLeft Arm: " .. p1.hp_left_arm .. "\nLeg: " .. p1.hp_leg .. "target_joint") --npc1 text_x = 160 text_y = 0 for i = 1, 6 do if i == 1 then text_y = 0 text_x = 160 elseif i == 4 then text_y = 34 text_x = 160 elseif i == 5 then text_y = 68 text_x = 160 elseif i == 6 then text_y = 102 text_x = 160 end if bots[i].hp > 0 then if i == 1 or i >= 4 then text_y_relative = 0 text_x_relative = 0 l_string = target[i-1] .. ": HP: " ..bots[i].hp .. "/" .. bots[i].hp_max text(text_x + text_x_relative, text_y + text_y_relative, l_string) --make it so that if the joint is used, its colored green. otherwise, white -- make it head, right left. leg is never used as attack --head l_string = (bots[i].head > 60) and "--" .. bots[i].hp_head .. ")" or Head[bots[i].head].name .. "(" .. bots[i].hp_head .. ")" color = (bots[i].joint == 0) and "green" or "white" text_x_relative = 21 text_y_relative = 7 text(text_x + text_x_relative, text_y + text_y_relative,l_string, color) --right arm l_string = (bots[i].right_arm > 60) and "--" .. bots[i].hp_right_arm .. ")" or Right_Arm[bots[i].right_arm].name .. "(" .. bots[i].hp_right_arm .. ")" color = bots[i].joint == 1 and "green" or "white" text_y_relative = 14 text(text_x + text_x_relative, text_y + text_y_relative,l_string, color) -- left arm l_string = (bots[i].left_arm > 60) and "--" .. bots[i].hp_left_arm .. ")" or Left_Arm[bots[i].left_arm].name .. "(" .. bots[i].hp_left_arm .. ")" color = bots[i].joint == 2 and "green" or "white" text_y_relative = 21 text(text_x + text_x_relative, text_y + text_y_relative,l_string, color) -- leg l_string = (bots[i].leg > 60) and "--" .. bots[i].hp_leg .. ")" or Leg[bots[i].leg].name .. "(" .. bots[i].hp_leg .. ")" text_y_relative = 28 text(text_x + text_x_relative, text_y + text_y_relative,l_string, "white") -- Their target l_string = target[bots[i].target] .. " " .. joint2[bots[i].target_joint] text(text_x, text_y + 7*(bots[i].joint + 1), l_string, "green") text_x = 0 text_y = 145 if bots[i].joint == 0 then l_joint = Head[bots[i].head].name elseif bots[i].joint == 1 then l_joint = Right_Arm[bots[i].right_arm].name elseif bots[i].joint == 2 then l_joint = Left_Arm[bots[i].left_arm].name end l_string = target[i-1] .. " used " .. l_joint .. " to attack " .. Bot[bots[bots[i].target+1].head] .. "'s " .. joint[bots[i].target_joint] if i == 1 then text_y_relative = 0 elseif i >= 4 then text_y_relative = 7 * (i - 3) end text(text_x, text_y + text_y_relative, l_string) end end end text_x = 250 text_y = 0 text(text_x, text_y, "UP :" .. joint[target_joint_up] .. "(" .. target[target_up] .. ")\nRight: " .. joint[target_joint_right] .. "(" .. target[target_right] .. ")\nLeft: ".. joint[target_joint_left] .. "(" .. target[target_left] .. ")") text_y = 34 text(text_x, text_y, "Damage: " .. damage_dealt) end local wait = 1000 local save_inner = 1 function bot() local cond_inner = false local is_pause = false local frame_start_inner = emu.framecount() local frame_dif_inner = 0 --difference between this frame and start frame local damage_dealt = 0 local p1_target_joint = 0 savestate.saveslot(save_inner) repeat local frame_now_inner = emu.framecount() if (frame_dif_inner ~= (frame_now_inner - frame_start_inner)) then --Check just in case savestate.saveslot(save_inner) end joypad.set({A=1}) emu.frameadvance() waitframe(wait) damage_dealt = read8(Addresses.damage_dealt2, "CartRAM") p1_target_joint = read8(Addresses.p1_target_joint, "CartRAM") frame_dif_inner = frame_dif_inner + 1 changed = (damage_dealt >= 40 and p1_target_joint == 0) if changed == false then savestate.loadslot(save_inner) emu.frameadvance() end until (frame_dif_inner > 300 or changed == true) client.pause() console.log("Damage:" .. damage_dealt) end -- bot() while true do local text_x = 250 local text_y = 0 local timer = read8(Addresses.timer) local rng1 = read8(Addresses.rng1) local rng2 = read8(Addresses.rng2) local rng3 = read8(Addresses.rng3) local area = read8(Addresses.area) local encounter_timer = read8(Addresses.encounter_timer) text_y = 41 text(text_x, text_y, "T: " .. timer .. " R1:" .. bizstring.hex(rng1) .. " R2:" .. bizstring.hex(rng2) .. " R3:" .. bizstring.hex(rng3)) text_y = 48 text(text_x, text_y, "Area :" .. area) text_y = 55 text(text_x, text_y, "E :" .. encounter_timer) display_robattle() -- display_parts() emu.frameadvance() end
Skilled player (1731)
Joined: 9/17/2009
Posts: 4981
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
I was investigating flags for in game events in hopes of some exploit. Here's my note dump. These are all in CartRam domain in BizHawk.
6003 0 Nae is present outside the observatory. This happens once you get her flag to 7 1 You talked to Nae outside the observatory 128 Nae is no outside the observatory 6004 0 The roborubber gang member at the bottom left of the observatory area is present 128 The robomedal gang member at the bottom left of the observatory area is gone 6005 0 ??. This gets set if you gave the parts to the roborubber gang member at the observatory area. Else 60A2 gets set if you refused. 128 ?? 6006 0 You haven't bought the Star Piece in the Observatory 1 You bought a Star Piece in the Observatory 6012 0 The worker left of the stadium wants to fight you 128 The worker left of the stadium is gone 602A 0 Kubota will want you to beat the monkeys in the mountain first 1 Kubota will now challenge you in a fight in the Medabot Laboratory area 129 Kubota has been beaten in the Medabot Laboratory area 602D 0 ????? 1 this gets set after beating Inago 6035 0 ENDING RELATED You haven't tried going to the broken tinpets in the medabot laboratory. 1 You tried to enter the broken tinpet area once. 2 You tried to enter the broken tinpet area twice 3 You tried to enter the broken tinpet area 3 times 4 You tried to enter the broken tinpet area 4 times 6049 0 You haven't beaten your grandad Inesaku in Dad's Hometown. 1 You have beaten your grandad. 604A 0 You haven't talked to your grandma in Dad's Hometown. 1 You have talked to your grandma in Dad's Hometown. 6053 0 The girl in front of the medal museum in the digsite is present 128 The girl in front of the medal museum in the digsite is gone. This gets set on triggering the dig site event 6059 0 ??? 128 This gets set to 128 after respawning at your home after dig site. 6064 0 You haven't obtained the Bat medal in the building next to the medal museum in dig site. 128 You have obtained the Bat medal inside the building next to the medal museum. 6065 0 You haven't obtained the Quick Legs in the building next to the medal museum in dig site. 128 You have obtained the Quick Legs inside the building next to the medal museum. 606D 0 ????? 128 this gets set after beating Suzume 6072 0 You can give a ticket to the lady in the lotto building. Talking to her loses 1 ticket, then starts the lotto computer 1 You have given a ticket to the lady in the lotto building 6073 0 The computer in the lotto building doesn't work 1 The computer in the lotto building works. Use it to play the lotto. 608A 0 You have beaten Suzume on the roof. The building in Insect Prof. Laboratory has a girl inside now. 128 You haven't beaten Suzume on the roof. The building in Insect Prof. Laboratory has a roborubber gang member inside. 6092 0 You haven't visited the house next to the store in ninja park. Doing so now will give you Mist Net 1 You visited the house next to the store in ninja park. Doing so now will give you Ninja legs 2 You visited the house the 2nd time. You lost Mist Net in exchange for Kunai and Ninjato. Nothing then happens from now on. 6098 0 You haven't found the ninja hiding in the drawer in F1 of the ninja park hotel (room 37, upper right) 1 You found the ninja inside the drawer 6099 0 You have not obtained the Invisi-Body from the drawer in F1 of the ninja park hotel (room 37, upper left) 1 You have obtained the Invisi-Body from the drawer in F1 of the ninja park hotel (room 37, upper left) 60A2 0 The old man at the bottom left of the medabot corporation area is present. This gets set if you refused to give parts to the roborubber gang member at the bottom left of the observatory area. Else 6005 gets set instead. 128 The old man at bottom left of the medabot corporation area is gone. 60AD 0 Yuuki normal dialogue? 1 You lost to Yuuki in tournament 2, so he will give you Crow Tengu set. This then gets set to 2. 2 You defeated Yuuki in tournament 2, so he won't give you Crow Tengu parts. 3 He tells you to get to the ruins to fix your medal 4 He tells you to hurry up to get the medal fixed. 60A9 0 You haven't gotten Anti-Water from the researcher in Medabots Corporation building 1 You've obtained the anti-water from the researcher 2 You can now obtain the mini-handle from the researcher. This also gets set to 2 after beating the roborubber gang at the mine cart town. 3 You've obtained the mini-handle from the researcher 4 You can now obtain the Wings of Wind from the researcher 5 You've obtained the Wings of Wind from the researcher 60B2 0 Antique store is closed 1 Antique store is opened. 60B3 1 yanma appears blocking the path to medarot laboratory before you beaten shark 129 yanma sprite is gone 60BB 0 A boy who wants moon dragon parts is present at the park. This gets set after loosing parts to the old man in medabot corporation area. 128 The boy in the park who wants moon dragon parts is gone. 60BC 0 This gets set once you give the boy in the park moon dragon parts? 128 ?? 60C1 0 You haven't talked to the shopkeeper. 1-7 This is the amount of lotto tickets you can get. It increases by 1 every time you talk to the shopkeeper, even if you haven't talked to the old man for another ticket. 60C2 0 The old man at the antique store is grumpy 1 The old man has given you lotto ticket 2 This gets set when talking to the shopkeeper when 60C1 < 7. He will now give you lotto tickets 3 You've obtained all the lotto tickets 60C3 0 you havent beaten Inago yet. Your dad is still in your house 128 you beaten Inago. Your dad is now not in your house 60C4 0 ????? 2 this gets set after beating Inago 60C9 0 yanma is in his house 128 yanma is blocking the path to medarot laboratory 60D0 0 Science teacher is setting things up 1 Science teacher asks about your medal evolving 2 Science teacher thinks you don't trust him 3 Science teacher wants to fight you 4 Science teacher wants the Solar Laser part. THIS IS REQUIRED FOR NAE ENDING 5 You gave him the Solar Laser, or refused 6 You have the nurse the roots 60D1 0 Normal school nurse dialogue. This the sets to 1 1 Normal school nurse dialogue. This the sets to 0 2 The school nurse wants to fight you. Doing so rewards Unicorn medal. 3 The school nurse has fought you. 4 5 The nurse will fight you 6 The nurse wants the Root leg part. THIS IS REQUIRED FOR ENDING 7 You have either gave her the part, or refused. 60D7 0 You haven't entered the girls washroom 1 you entered the girl's washroom 60E2 0 The librarian hasn't lost their book. This gets set to 1 after the class before the shrine. 1 The librarian lost their book. 2 You got the book back from the metabot on the roof 3 You return the Difficult Book to the librarian 60E7 0 The medabot that took the Difficult Book is on the roof 1 You have defeated the medabot and it gave you the book 128 The medabot the took the Difficult Book is gone from the roof 60EA 0 It gets set to 1 after the class before the shrine. If you talk to him, he gets annoyed you didn't knock, but won't fight 1 This gets set after the class before the shrine. The principle will now challenge you if you don't knock. Then it gets set to 0. 2 This gets set if you knock the principle's door. The principle won't challenge you. 3 This gets set as you fight Yuuki in tournament 2. Talking to him unlocks the antique store. 60F0 0 ???? 1 This gets set to 1 after beating the shark in the harbor 129 This gets set to 129 after respawning at your home after dig site. 60F2 0 havent defeated shark. gets warning 1 npc talks how aquatic medabots are best for water stages 60F3 0 ???? 1 This gets set to 1 after beating the shark in the harbor 129 This gets set to 129 after respawning at your home after dig site. 60F7 0 shark trigger exists in harbor 128 shark has been beaten 60F8 0 knight medal chest not opened 1 makes the old man in harbor realize you have knight medal to give you parts and fish 2 he ask you to help with his dragnet 3 obtained the password 1-zu from the dragnet 60FC 0 knight medal chest not opened 1 knight medal chest opened 60FD 0 Headband in harbor cave chest not obtained 1 Headband in harbor cave chest obtained 6105 0 Suzume on the roof of the Select Corps building (area 70) hasn't been beaten 128 Suzume has been defeated on the root 6107 0 ??? 128 this gets set after beating Suzume 610C 0 The chest with the robomedal on F3 of the Select Corps building (area 74) hasn't been checked 1 The robomedal in the chest has been obtained 610F 0 The ninja hiding in the chest in the Select Corps building F4 (area 76) hasn't been fought 1 The ninja hiding in the chest has been beaten 6110 0 The roborubber gang member in F5 of Select Corps building (area 136) is present 128 He has announced that the building is the new hideout 6112 0 ????? 1 this gets set after beating Inago 6115 0 The girl next to the mayor's house in Mountain Village lost her medal 1 You beaten Inago, obtaining the girl's medal 2 You gave the medal back to the girl 6118 0 Mayor in Mountain Village wants fish. 1 You gave fish to the mayor in Mountain Village. 2 He wants soil now 3 You gave Mountain Soil to the Mayor. 4 You talked to the mayor again after giving him the Mountain Soil. You can now give him pottery. It won't advance by that, so technically possible to exchange twice. 6126 0 You haven't got your money stolen from the crow in the mountains 1 The crow stole 1000 yen from you 2 You obtained 41 robomedals from the crow's nest. It will now just caw at you if you revisit 3 weird auto walk 612A 0 You haven't obtained the mountain soil 128 You have obtained the mountain soil 612B 0 You haven't beaten Inago in the mountain springs yet 1 You beaten Inago in the mountain springs 612D 0 You haven't obtained the coin in the mountain shrine 1 You grabbed the Medal-Like Coin from the mountain shrine 2 You placed Medal-Like Coin back in exchange for Password 2-I 3 You have exchanged the Medal-Like Coin for a Chamleon medal in the Medabot Laboratory. The medal in the shrine disappears. 614A 0 ENDING RELATED You haven't talked to Nae in the medabot laboratory 1 You have talked to Nae, who now warns you about going to off limit area. This gets set to 2 after beating Inago in tournament 1. If you didn't talk to Nae, it gets set to 1 instead. This also gets advanced by 1 as soon as you fight Yuuki in tournament 2. 2 Nae will ask you to help her with something. If you say no, this gets reset to 0. If yes, she gives you Angel Leg, then set to 3. 3 She will now fight you. 4 She has fought you. 5 She wants to test something else and give you the Angel Body. 6 She will now fight you. 7 She has fought you. She will ask you if you want to stargaze with her. 614B 0 You haven't obtained the name tag in the Medabot Laboratory after dig site. 1 You have obtained the name tag in the Medabot Laboratory after dig site. 6151 0 The researcher in the Insect Prof. Laboratory hasn't challenged you after dig site. 1 The researcher has been defeated 6154 0 The ninja at the ninja park hotel basement wants to fight you 1 You have fought, or refused to fight with the ninja 6156 0 The girl at the ninja park hotel basement wants to give you a tinpet (room 36) 1 The girl has given you the tinpet 6157 0 The rope ladder in the ninja park hotel is present behind the poster. This is set to 1 once you check the poster. 1 The rope ladder in the ninja park hotel is gone. 6158 0 Suzume is inside the ninja park hotel. 128 You have defeated Suzume in the ninja park hotel. He is gone. 6159 0 The auidience member in tournament 2 is present. 1 You have defeated Iseki in tournament 2; auidience has new dialogue. 128 The auidience member in tournament 2 is gone 615A 0 The scientist in tournament 2 is present. 128 The scientist in tournament 2 is gone. 615B 0 You have not beaten Iseki in tournament 2. 128 You have defeated Iseki in tournament 2. 615C 0 You have not beaten Paddy in tournament 2. 128 You have defeated Paddy in tournament 2. 615D 0 You have not beaten Beauty in tournament 2. 128 You have defeated Beauty in tournament 2. 615E 0 You have not beaten Yuuki in tournament 2. 128 You have defeated Yuuki in tournament 2. 6160 0 Reika is present at the house southeast of medabot corporation 128 Reika has been defeated in the house southeast of medabot corporation 6167 0 You haven't talked to your Dad after the dig site event. This gets sets back to 0 again after getting the tinpet. 1 You talked to your Dad after the dig site event, so you can now get a tinpet in from the select corps. 6169 0 You haven't talked to your Dad after the dig site event. 1 You talked to your Dad after the dig site event. He now talks about how he would have joined the Select corps. 616B 0 You haven't obtained the Rubberobo Suit from your dog after the dig site. 1 You have obtained the Rubberobo Suit from your dog after the dig site. 616D 0 ??. Gets set to 1 at class before shrine. 1 ?? 6173 0 ?? 1 ?? 6175 0 Yuuki is present in the classroom. 128 Yuuki is gone from the classroom. 6176 0 Paddy is present in the classroom. 128 Paddy is gone from the classroom. 6177 0 Iseki is present in the classroom. 128 Iseki is gone from the classroom. 6178 0 Kubota is present in the classroom. 128 Kubota is gone from the classroom. 6179 0 Yanma is present in the classroom. 128 Yanma is gone from the classroom. 617A 0 The trigger for the classroom event before shrine. Gets set to 128 at class before shrine. 128 The trigger is now gone in the classroom entrance. 617E 0 Gets set at class before shrine. 128 1st tournament event. Yuuki left the tournament. 617F 0 Gets set at class before shrine. 128 1st tournament event. Yanma is defeated. 6180 0 Gets set at class before shrine. 128 1st tournament event. Kubota is defeated. 6181 0 Gets set at class before shrine. 128 1st tournament event. Paddy is defeated and referee left. 6182 0 This means you can get into the roborubber gang hideout 128 Gets set to 128 right before you enter? 6184 0 Chick seller isn't in Local Shrine 1 Chick Seller sold you parts for 500 Yen. 2 This gets set to 0 after class before shrine. Chick Seller will sell you parts. 130 The chicken seller is gone now. This gets set as soon as you defeat Iseki in the 2nd tournament. 6186 0 The roborubber gang in bottom right of the hideout (room 62) will ask you if you have a medabot. If you say no he will give you free coffinbat set 1 He tells you to hurry up and start the tournament 2 This gets set once you start the tournament. He says that's all for today's tournament. 6187 0 The trigger for the roborubber tournament is present 128 The trigger for the roborubber tournament is gone. 6188 0 Typhoon in the roborubber hideout tells you to leave 1 Typhoon fights you in the roborubber hideout 6189 0 The final grunt in the roborubber tournament tells you that's all. 1 The final grunt in the roborubber tournament ask you if you're Hikaru. 618A 0 You haven't beaten the roborubber gang member in the hideout that gives you the card (room 63) 1 You have beaten the roborubber gang member in the hideout that gives you the card 618B 0 ???. Related to 618A have beaten the roborubber gang member in the hideout that gives you the card 128 This gets set once you have beaten the roborubber gang member in the hideout that gives you the card 618C 0 ???. Related to 618D when you get roborubber badge/Abdomen in hideout chest (room 63) 128 This gets set once you have obtained the roborubber badge/Abdomen in the chest in room 63 618D 0 You haven't obtained the roborubber badge/Abdomen in hideout chest (room 63) 1 You have obtained the roborubber badge/Abdomen in hideout chest (room 63) 618E 0 You haven't obtained the Hexadon in hideout chest (room 63) 1 You have obtained the Hexadon in hideout chest (room 63) 61C1 0 ????? 1 this gets set after beating Inago 129 Kubota's sprite vanishes from Medabot Laboratory area after beating him 61C4 0 nothing 1 dad gave you allowance 61CE 0 This gets set to 0 after the school ceremony ends 1 This gets set to 1 after the fight with Yanma in the park 2 This gets set to 2 after beating Reika in the Harbor 3 this gets set after beating Inago in the mountain springs 4 This gets set after Suzume throws your tinpet off the roof 128 this is the value at start of game? 61CF 0 nothing 1 you talked to select corps officer returning the medal 2 you obtained robomedal from select corps officer 61D2 0 - nothing 1 talked to select corps after finding medal 2 talked to dad to get tinpet. setting to 1 makes him give you another 61D3 0 - nothing 1 dad gave you starter set parts. mom will now tell you to go to school last ceremony 2 you talked to teacher. mom will now tell you to do your homework 61DF 0 You haven't beaten Iseki in Downtown 1 You have beaten Iseki in Downtown 61E3 0 The sprite for roborubber gang member in F5 of Select Corps building (area 136) is present 128 The sprite is no longer present 61FD 0 you havent been to class 128 you been to school and teacher gave map and left 6244 0 The tinpet/pottery at the bottom right of the observatory hasn't been obtained 128 The tinpet/pottery at the bottom right of the observatory has been obtained. 6264 0 havent beaten Reika yet in the Harbor 1 beaten Reika in the Harbor 129 beaten yanma, after shark 6222 0 Kirara is present in the classroom. 128 Kirara is gone from the classroom. 6266 0 The trigger point for the local shrine tournament is present 1 Yanma is defeated in the tournament. 2 Kubota is defeated in the tournament. 3 Paddy is defeated in the tournament. Inago is now present to fight. 128 The trigger for the local shrine tournament is gone. 131 Inago is defeated in the shrine arena. 6278 0 You haven't beaten Suzume on the roof. The roborubber gang member in the building of Insect Prof. Laboratory is present. 128 You have beaten Suzume. The gang member is now gone. 6279 0 The judge in the local shrine is present 128 The judge in the local shrine is gone. 6284 0 This got set when you enter the roborubber gang hideout? 128 ?? 6285 0 tinpet in harbor cave havent been obtained 1 tinpet in harbor cave has been obtained 6289 0 ?? 128 This gets set when you encounter Reika at the house at southeast of the medabot corporation area. 628A 0 The trigger point for the medabot corporation tournament is present 1 Iseki is defeated in the tournament. 2 Paddy is defeated in the tournament. 3 Beauty is defeated in the tournament 128 Tournament 2 trigger is gone 131 Yuuki is defeated in the tournament. 629A 0 school is locked 128 you talked to mom about last day of school; unlocks school
For Kirara ending, the main address to note is: 0x60D1 This is for the nurse at the school. Giving her the Root part, bought at the store in Insect Prof. Lab area, is enough to trigger her ending. For Nae's ending, the main addresses are: 0x60D0 - Science teacher's progress. Needs to be 6. You MUST give him the Solar Laser (also from Prof. Lab area store) before giving the Root to the nurse, or it won't let you. 0x60D1 - Nurse progress. Needs to be 7. Giving her the Root part, bought at the store in Insect Prof. Lab area 0x614A - Nae's progress. Need to be 7. The opportunity to talk to her appears right after the dig site event.
Skilled player (1731)
Joined: 9/17/2009
Posts: 4981
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Glitches: Use the same medal on multiple medabots: Normally, you can only have 1 medal of each type, and only 1 medabot can use that medal. If you did the following, you could get 2 to use the same medal: 1. Get at least 2 tinpets 2. Get at least 2 medals (let's call them medal A and medal B) 3. Make tinpet 1 equip medal A. Make tinpet 2 equip medal B 4. Start a robattle with an NPC that isn't required for the story. So random encounter. 5. Choose only tinpet 1 to fight. 6. Lose the fight. 7. Go to the info screen. Select tinpet 2. 8. Change their medal to the one tinpet 1 had. Now you have 2 bots with the same medal. Example: I made 2 bots equip the Mermaid medal at the same time. Sprite glitch: At the start of the game, right after the intro, there's a 1 frame window you could move, but the game doesn't update your sprite: Encounter reset on save: This is way to slow to use, but the step count for encounters don't get saved on saving. At 47 steps, you are guaranteed to have a robattle the next time you move. A way to avoid this is simply save and reset. This makes the encounter address 0xC761 reset back to 0.
Skilled player (1731)
Joined: 9/17/2009
Posts: 4981
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
I took the time to investigate how speed works in this game When a turn starts, your medabots start's at X position 8 (left) to 64 (center), where you attack. Then you run back. For the npc, their X position is 152 (right) to 96 (center). These are the relevant addresses:
Language: lua

p1_sprite = 0xC1E0, p1_x = 0xC1E2, p1_speed = 0xC1F5, p1_speed_index = 0xC1F6, --speed is actually an array of 0s to 2s p1_direction = 0xC1F7, --0 running to side. 1 running to center p2_sprite = 0xC200, p2_x = 0xC202, p2_speed = 0xC215, p2_speed_index = 0xC216, --speed is actually an array of 0s to 2s p3_sprite = 0xC220, p3_x = 0xC222, p3_speed = 0xC235, p3_speed_index = 0xC236, --speed is actually an array of 0s to 2s npc1_sprite = 0xC240, npc1_x = 0xC242, npc1_speed = 0xC255, npc1_speed_index = 0xC256, --speed is actually an array of 0s to 2s npc2_sprite = 0xC260, npc2_x = 0xC262, npc2_speed = 0xC275, npc2_speed_index = 0xC276, --speed is actually an array of 0s to 2s npc3_sprite = 0xC280, npc3_x = 0xC282, npc3_speed = 0xC295, npc3_speed_index = 0xC296, --speed is actually an array of 0s to 2s
Speed is a value that ranges from 0 to 31. The way it works, is based on the value of Speed, the game reads an array 16 values long in ROM 0x11A0B.
ROMSpeed0123456789101112131415Pixels per 16 framesFrames to side/center
11A0B022222222222222223228
11A1B122222222222222213129
11A2B222222212222222213030
11A3B322221222212222212931
11A4B422212221222122212832
11A5B522122122122122122733
11A6B621221221212212212635
11A7B721212122121212122536
11A8B821212121212121212437
11A9B921212121211211212339
11AAB1021121121121211212241
11ABB1121121121121121112142
11ACB1221112111211121112045
11ADB1321111121111211111947
11AEB1421111111211111111849
11AFB1521111111111111111752
11B0B1611111111111111111656
11B1B1711111111111111101559
11B2B1811111101111111101463
11B3B1911110111101111101368
11B4B2011101110111011101274
11B5B2111011011011011011181
11B6B2210110110101101101089
11B7B231010101101010101999
11B8B2410101010101010108111
11B9B2510101010100100107127
11BAB2610010010010100106148
11BBB2710010010010010005177
11BCB2810001000100010004221
11BDB2910000010000100003295
11BEB3010000000100000002441
11BFB3110000000000000001881
Now how is speed determined? The function starts at ROM bank 4, 0x5C5E. 1. A value from base + 0x83 (medal rank) is obtained. This is added with 0x5D4C to get an address. The values obtained are as follows:
VALUE FROM ROM BANK 4 [5D4C + RANK] RANK 0 5D4C 4 RANK 1 5D4D 4 RANK 2 5D4E 4 RANK 3 5D4F 3 RANK 4 5D50 3 RANK 5 5D51 3 RANK 6 5D52 2 RANK 7 5D53 2 RANK 8 5D54 1 RANK 9 5D55 1 RANK A 5D56 0
2. Terrain is loaded to obtain an address. It is as follows:
0 woods 5D57 1 desert 5D5F 2 city 5D67 3 mountain 5D6F 4 beach 5D77
3. A value from base + 0x13 (leg type) is obtained. This is subtracted by 1, then add to the address in 2. You get the following:
Leg TypeBase+13[Base+13]-1WoodsValueDesertValueCityValueMountainValueBeachValue
Flying105D5745D5F05D6705D6F45D770
Hover215D5805D6005D6805D7005D780
Multi-leg325D5905D6115D6905D7115D792
Bipedal435D5A25D6225D6A05D7205D7A2
Wheeled545D5B45D6345D6B05D7325D7B4
Tank655D5C45D6425D6C25D7425D7C2
Aquatic765D5D25D6545D6D25D7515D7D0
4. A value from 0xC6F9, which is apparently wind speed, is obtained. This is then used to obtain an address:
C6F9 is determined at start of fight possible values of HL C6F9 0 5D7F 1 5D87 2 5D8F --not sure if possible` 3 5D97
5. A value from base + 0x13 (leg type) is obtained. This is subtracted by 1, then added to the address from above to obtain the following:
Leg Type[Base+13]-1C6F9 (0)ValueC6F9 (1)ValueC6F9 (2)ValueC6F9 (3)Value
Flying05D7F05D8725D8F45D970
Hover15D8005D8815D9035D983
Multi-leg25D8105D8905D9115D990
Bipedal35D8205D8A05D9215D9A3
Wheeled45D8305D8B05D9305D9B0
Tank55D8405D8C05D9405D9C3
Aquatic65D8505D8D15D9525D9D2
6. A value form base + 0xC5 (current selected part's charge), then added to the rest of the above. We get the following: value from medal rank + terrain penalty + wind speed penalty + part charge - 0x20 AND 0x1F the last part is only a check to see if your speed somehow is slower than 32, but not overflowed. It will automatically set the speed if > 0x20 (32) to 31. This means that how fast you are for the very first turn of the fight is completely independent of the speed stat mentioned in leg page:
Skilled player (1731)
Joined: 9/17/2009
Posts: 4981
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Based on new information gathered about speed, I made a change of route: 1. Fight 2 remains the same, drop must be minus driver. 2. Fight 3 remains the same, drop must be assault rifle. 3. Fight 4,5,6 can be any drop except left arm and head. They also must all drop each different set so I can equip later at the end of tournament 2 4. Fight 7 remains the same, drop must be Leaf Fan 5. I need 1 blast gun from either fight 8 or 9 6. Swap back to default legs (forget about Gunzer) and assault rifle right before tournament 1 7. Manipulate Yanma and Kabuto to be basically the same, so they can all be OHKO with assault rifle. If they had hyper/normal laser and shell tank, I can outrun them 8. Defeat Paddy as normal. Make sure the drop is Floaty. This must be immediately swapped into, since bipedal leg has penalty of 2 in woods. 9. Inago doesn't matter. 10. Iseki's magentacat can be outrun using floaty, by making them all use Taser. They have a speed of 11 using that move, while missile with floaty should have a speed of 10. She must drop Taser either before or now, once. 11. Paddy must drop head part Meteor Strike, since it has the lowest HP. I will swap to that after Beauty to die faster. 12. Make sure Beauty has at least 1 Cockpit for money. The leader must have Taser. You should be able to outrun them with missile + floaty 13. Equip 2nd tinpet with Meteor Strike, rest doesn't matter. Lose to Yuuki. Alternatively, don't bother using 2nd tinpet, and let Yuuki take your default head part in tinpet 1. You still need the 2nd tinpet equipped, or you will get a gameover. 14. Sell exactly 1 of each: Taser + Blast Gun + Cockpit = 1000 + 1200 + 2800. This should be exactly 5000, which is enough to buy Death Blast head part. 15. Equip only the Death Blast. Do not change anything else. Beat the rest of the tournament. If I want to get Roots for the Kirara ending, I would need Yellowturtle to drop Battery head part to sell since it costs 600 yen.
Skilled player (1731)
Joined: 9/17/2009
Posts: 4981
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
I got paranoid of having to restart everything if the route fails, so I checked the fights at tournament 3: Base + 0x25 (so AF25, B025, B125) seems to be related to if the enemy will defend using a functioning part. While this varies for the player, it seems to be fixed based on the npc's own medal. I used cheats to give npcs different medals, and found the following:
NameIDBase + 25
Kuwagata00
Kabuto10
Tortoise20
Jellyfish30
Bear40
Spider51
Snake60
Queen70
Kraken80
Phoenix90
Unicorn102
Ghost112
Knight121
Mermaid132
Penguin142
Bat151
Kappa161
Wolf171
Chameleon181
Rabbit192
Monkey201
Devil210
Angel221
Dragon231
Ninja242
Alien251
Cat262
?272
According to trace logs, RNG AND 3 + the above values will be used to determine which function to jump to. I need to check further, but it seems for values 2+, I am never going to damage the medabots head; I will either have them defend, or they miss. That means Death Blast might not be useable, and I need to stick with Missile instead. Death Bomb works like Missile, but is far slower.