adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3573)
Joined: 11/3/2004
Posts: 4754
Location: Tennessee
awsome, i cant wait to see it
It's hard to look this good. My TAS projects
Post subject: Ninja gaiden 2 "lonewolf" run
Player (127)
Joined: 3/23/2012
Posts: 296
Location: In X position=50 y position=20
It would be awesome without those orange clones
Jungon wrote:
if I was to have a Tool-Assisted real life ... I'd.. I could abuse death, just to see if it saves time ..
Post subject: Same glitch from NINJA GAIDEN 3?
Player (127)
Joined: 3/23/2012
Posts: 296
Location: In X position=50 y position=20
The glitch that xipo mentioned in ng3(left-right hurting technique). Does it work in NG2 as well? Also I accidentally got it work down-up too with downward fireball.
Jungon wrote:
if I was to have a Tool-Assisted real life ... I'd.. I could abuse death, just to see if it saves time ..
Samsara
She/They
Senior Judge, Site Admin, Expert player (2238)
Joined: 11/13/2006
Posts: 2822
Location: Northern California
It's been quite a while since the published run, and in my continuous effort to challenge myself with each new TAS I make, I think I'm going to start looking into this. This post says there's at least 34 frames to save over the published run, so that's my goal, though there's also mention of potential improvements being closer to 40+ frames. The problem is... I have no idea where these improvements are, apart from the 16 frames from Xipo's cancelled submission. I suppose I have to rediscover them, and I'll do that if I have to, but I'm reviving this thread in hopes that Xipo or someone else more familiar with the game/series is able to provide some insight on what can be improved. Basically, save me the trouble of going through the actually difficult work, thanks in advance. If someone could come to my house and move my hands to paint input in TAStudio, that'd be great, too.
TASvideos Admin and acting Senior Judge 💙 Currently unable to dedicate a lot of time to the site, taking care of family. Now infrequently posting on Bluesky
warmCabin wrote:
You shouldn't need a degree in computer science to get into this hobby.
Samsara
She/They
Senior Judge, Site Admin, Expert player (2238)
Joined: 11/13/2006
Posts: 2822
Location: Northern California
66784147849212248 Trying to follow the cancelled submission for a test run, but the game suddenly decided it won't let me throw fire wheels the frame after jumping. I have no idea what's going on: It works outside of the boss, it works fine in the cancelled submission, but it doesn't work for me. It's not subpixels, they're near-identical to the submission save for X subpixel, and poking that to be the same doesn't change anything. I don't think it's an emulation difference because doing this works elsewhere in the game, it's just not working in the specific instance where I need it. Either I somehow get this to work not knowing where the hell to begin, or I take a forced two frame loss and wonder where my life went wrong. EDIT: Well not only did I upload the wrong branch, but the fix that was found only works on the wrong branch and doesn't work at all on the good branch.
TASvideos Admin and acting Senior Judge 💙 Currently unable to dedicate a lot of time to the site, taking care of family. Now infrequently posting on Bluesky
warmCabin wrote:
You shouldn't need a degree in computer science to get into this hobby.
Memory
She/Her
Site Admin, Skilled player (1553)
Joined: 3/20/2014
Posts: 1765
Location: Dumpster
From what I messed with, it appears to be an unmarked lag frame, the game wouldn't accept any input on that frame.
[16:36:31] <Mothrayas> I have to say this argument about robot drug usage is a lot more fun than whatever else we have been doing in the past two+ hours
[16:08:10] <BenLubar> a TAS is just the limit of a segmented speedrun as the segment length approaches zero
Banned User
Joined: 12/26/2006
Posts: 231
Location: Lonely City
It is not an unmarked lag frame,player can input in this frame actually(include up down left right) except for releasing skills.There is a 2-frames-rule in this game since two Ninja Shadows.One shadow appears,another one disappears,it is the reason why player will release the second skill in same time although the first skill is one frame before.
work hard
Memory
She/Her
Site Admin, Skilled player (1553)
Joined: 3/20/2014
Posts: 1765
Location: Dumpster
...Except you really can't input other things on this frame. Start doesn't work, jumping doesn't work either.
[16:36:31] <Mothrayas> I have to say this argument about robot drug usage is a lot more fun than whatever else we have been doing in the past two+ hours
[16:08:10] <BenLubar> a TAS is just the limit of a segmented speedrun as the segment length approaches zero
Samsara
She/They
Senior Judge, Site Admin, Expert player (2238)
Joined: 11/13/2006
Posts: 2822
Location: Northern California
Whatever it is, I don't think it can be avoided in BizHawk. I'd rather just move past it for now and come back later if necessary. If I'm losing time to emulation differences, I'm glad it's only going to be two frames. Xipo, do you still have any of your old work on this game? I've been referring to your cancelled submission pretty heavily, but I know you've done a significant amount of work since then. Any more information you can provide would be wonderful.
TASvideos Admin and acting Senior Judge 💙 Currently unable to dedicate a lot of time to the site, taking care of family. Now infrequently posting on Bluesky
warmCabin wrote:
You shouldn't need a degree in computer science to get into this hobby.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3821)
Joined: 11/30/2014
Posts: 2829
Location: US
It sounds like you are encountering an instance of the NES DMC DMA bug. In Ninja Gaiden one this bug is dealt with by ignoring the input on the frame it occurs and using the input from the previous frame, I haven't looked at the code for 2, but if it's the same it will look like your input is lost for a frame even though it's not lag. This is emulated in NESHawk but not FCEUX.
Player (153)
Joined: 5/1/2006
Posts: 150
As observed in the above posts, emulating the DPCM glitch makes this series an extra hassle to TAS with NesHawk, but if for any reason somebody wanted to sync FCEUX input then the below script can help. Import .fm2, load TAStudio (remember to delete a frame before the first start press). All it does is mark a "lag frame" in TAStudio when DMC interferes with input; desyncs can usually be dealt with by either adding extra button presses that don't change movement (e.g. add an L if holding R) one or more frames earlier or adjusting jumps or slashes by a frame or two. Download NG_NEShawkFM2sync.lua
Language: lua

local dpcmBool, dpcmed, whichNG = false, 0, memory.readbyte(0, "PRG ROM") if whichNG == 40 then dpcmed = 0xF9DC -- NG1U elseif whichNG == 16 then dpcmed = 0xD602 -- NG2U elseif whichNG == 53 then dpcmed = 0xC791 -- NG3U end if dpcmed ~= 0 then event.onmemoryexecute(function() dpcmBool = true end, dpcmed) end while true do emu.frameadvance() if dpcmBool then dpcmBool = false tastudio.setlag(emu.framecount(), true) end end
Here's another dumb thing, though I did actually use it to play back WIPs in Mesen and NesHawk for some audio/visual aesthetic judgements (to questionable utility). Purpose: play fm2 and save a hacked ROM that will do nothing but play back the input. Download NG2_TAStoDemoROM_FCEUX.lua
Language: lua

local rb = memory.readbyte local wb = rom.writebyte local count, inps, cnts = 0, {}, {} -- C674D019A200A009A9078D00808C018020C5FB85124514251285138414062DA5250906AA8E0080A51D8D0180E88E0080A51E8D0180062DB0E6 local nmihack = {198,116,208,25,162,0,160,9,169,7,141,0,128,140,1,128,32,197,251,133,18,69,20,37,18,133,19,132,20, 6,45,165,37,9,6,170,142,0,128,165,29,141,1,128,232,142,0,128,165,30,141,1,128,6,45,176,230} -- A08576A9B08578E674A9042000C04C3FE2A1758574A177A8E675D002E676E677D002E67860 local inihack = {160,133,118,169,176,133,120,230,116,169,4,32,0,192,76,63,226,161,117,133,116,161,119,168,230, 117,208,2,230,118,230,119,208,2,230,120,96} local add1, add2, add3, add4 = 0x12010-1, 0x13010-1, 0x1D5E6-1, 0x1FBC4-1 local function WriteROM() emu.pause() movie.stop() memory.registerexec(0xD5FE, nil) print(string.format("0x%X",#cnts)) if #cnts < 0x1000 then for i = 1, 0x1000-#cnts do cnts[#cnts+1] = 0xff inps[#inps+1] = 0x00 end end for i = 1, #cnts do wb(add1+i, cnts[i]) end for i = 1, #inps do wb(add2+i, inps[i]) end for i = 1, #nmihack do wb(add3+i, nmihack[i]) end for i = 1, #inihack do wb(add4+i, inihack[i]) end print"Debug-> Hex Editor...-> File-> Save Rom As..." end local function DumpInput() local inp, inpre, full = rb(0x12), rb(0x14) local function conc() cnts[#cnts+1] = count inps[#inps+1] = inpre if #cnts == 0x1000 then print"space full"; full = true end count = 1 end if inp == inpre then if count == 255 then conc() else count = count + 1 end else conc() end if emu.framecount() == movie.length()+1 or full then WriteROM() end end memory.registerexec(0xD5FE, DumpInput)