<jn>
rcombs[m]: is there one TAS-community-wide format for N64 TAS? and is there a spec for it somewhere?
<rcombs[m]>
there are a couple formats (one from mupen64 and one from bizhawk), but only the mupen64 format is suitable for console playback; it's documented here: https://tasvideos.org/EmulatorResources/Mupen/M64
<rcombs[m]>
a lot of TAS communities use bizhawk these days, and the tasvideos folks generally prefer it, but the Mario 64 community continues to use the mupen64 one for its console compatibility
<esden[m]>
ok, here is the next batch of 260 ready to be dropped off at UPS tomorrow 😄
notgull has joined #glasgow
<omnitechnomancer>
Wooo!
<omnitechnomancer>
What makes the bizhawk one unsuitable?
<rcombs[m]>
it's times in video frames instead of input polls
<rcombs[m]>
so even in a hypothetical idealized world, you'd need to either use an LM1881 to measure video timing or keep your own clock and pray you don't drift
notgull has quit [Ping timeout: 256 seconds]
<rcombs[m]>
but in reality that's a non-starter because emulators don't perfectly match console timing wrt lag
<rcombs[m]>
they fundamentally _can't_, because lag is nondeterministic
<rcombs[m]>
the same input on the same console can result in different timings on different attempts
<sorear>
what exactly does this mean?
<omnitechnomancer>
Mhmm
<sorear>
are the number of video frames and the number of input polls per frame both deterministic?
<rcombs[m]>
(the N64 has multiple separate oscillators driving the CPU and GPU; some other consoles have similar situations; Smash 64 even measures this to drive its RNG)
trh has quit [Quit: weg]
<sorear>
do n64 games normally run without caring about vsync at all?
trh has joined #glasgow
<rcombs[m]>
in SM64, output video fields per poll is nondeterministic, but there's exactly 1 poll per in-game non-lag frame
<rcombs[m]>
some games instead poll on every output video field; those games generally don't console-verify reliably
mmerkel has quit [Ping timeout: 272 seconds]
<sorear>
so there's a game main loop which usually runs once per input poll and is designed to finish in less than 1/vsync, and waits for vsync when it does finish early, but if the loop runs for more than one frame that's "lag" and nondeterministic?
<omnitechnomancer>
Yea I was just thinking this makes it possible to write a game that will poll inconsitently
<rcombs[m]>
in SM64, the main game loop usually takes 2 vsyncs (it's a 30fps game) and the input poll is part of it; sometimes the loop takes 3 or more vsyncs
<rcombs[m]>
most other games poll during the vsync interrupt
<tpw_rules>
(60fps games were very rare on n64)
<rcombs[m]>
in those games, the mupen and bizhawk formats are largely equivalent (apart from bizhawk's being text and mupen's being binary), but neither syncs on console with any reliability
<rcombs[m]>
(or, well, not without a whole lot of very careful synchronization work)
<rcombs[m]>
there are some setups that analyze the video output to determine whether the game loop has advanced or not
<rcombs[m]>
meanwhile, I'm going to try fabricating a cursed N64 controller <-> GBA link port cable
<rcombs[m]>
and see if I can get TAS playback running on a Pocket
<tpw_rules>
with a gba rom or custom fpga logic
<rcombs[m]>
FPGA logic
<rcombs[m]>
GBA ROM would also be fun though
<tpw_rules>
ah fun, have you seen mcc111's work?
<rcombs[m]>
tired: "does it run doom"
<rcombs[m]>
wired: "can it beat mario 64 in under 5 minutes"
<rcombs[m]>
yes! I'll probably use that as a starter template
<rcombs[m]>
since amaranth seems a lot easier to work with than analogue's suggested toolchain
<tpw_rules>
you still have to install the toolchain
<tpw_rules>
you just don't have to write verilog
<rcombs[m]>
ah, well, nevertheless
<rcombs[m]>
yeah that part seems nice
<tpw_rules>
it is. i tell people amaranth is the 3% of verilog that's actually useful
<rcombs[m]>
that has SD card I/O and some massive chunks of RAM, so I shouldn't have too much trouble with space or I/O
<tpw_rules>
what OS/system do you run?
<tpw_rules>
the SD card i/o is hellish
<rcombs[m]>
macOS
<rcombs[m]>
M1M MBP
<tpw_rules>
i think some people in the analogue discord have docker recipes for quartus or something
<tpw_rules>
i have probably the same SKU as you but break out linux x86_64 + nix when i need that. i've had it working under rosetta but it was kind of unreliable
<tpw_rules>
i should revive it now that amaranth is getting back on track
<tpw_rules>
i wanted to do stuff like wire up the joystick as an evdev driver
<tpw_rules>
or joypad
redstarcomrade has quit [Read error: Connection reset by peer]
parahola has quit [Remote host closed the connection]
<whitequark[cis]>
<rcombs[m]> "since amaranth seems a lot..." <- so, i actually have a pocket, and some amount of interest in porting the analogue gateware to it
<rcombs[m]>
I saw mcc'd posted about you having poked at it a bit
<rcombs[m]>
I'd offer to contribute if I thought I was remotely competent enough
<rcombs[m]>
though maybe that's just a matter of doing it more :shrugko:
<gruetzkopf>
i need to dig up my N64<->GC cables (both directions). and build qsfp breakouts (to win "largest FPGA to play back a TAS" :D)
ar-jan has joined #glasgow
bvernoux has joined #glasgow
notgull has joined #glasgow
notgull has quit [Ping timeout: 272 seconds]
gsuberland has quit [Remote host closed the connection]
redstarcomrade has joined #glasgow
redstarcomrade has quit [Changing host]
redstarcomrade has joined #glasgow
bvernoux has quit [Quit: Leaving]
jn has quit [Ping timeout: 255 seconds]
jn has joined #glasgow
Chips4MakersakaS has quit [Quit: Idle timeout reached: 172800s]
redstarcomrade has quit [Read error: Connection reset by peer]
redstarcomrade has joined #glasgow
redstarcomrade has quit [Changing host]
redstarcomrade has joined #glasgow
alen6060[m] has quit [Quit: Idle timeout reached: 172800s]
smkz has quit [Quit: smkz]
smkz has joined #glasgow
redstarcomrade has quit [Read error: Connection reset by peer]
redstarcomrade has joined #glasgow
redstarcomrade has quit [Read error: Connection reset by peer]
<_whitenotifier-5>
[glasgow] colinoflynn closed pull request #547: applets: Remove a few unicode characters that caused problems on Windows mingw terminal - https://github.com/GlasgowEmbedded/glasgow/pull/547