RNG Research
2 years ago
United States

I recently started doing deep dives into all versions of the games, initially focusing on differences, but my goal is to gain a complete understanding of RNG across all versions.

I'll try to update this thread with information as I confirm more. Information will also be posted here.

Currently I'm working on: Mapping initial Tarot RNG DONE - Preliminary search for time counters. DONE - Found Tarot locations in Memory for ALL versions. DONE - Find Leader Name Memory locations. NEXT - Scripting a bot to play through and find all possible card sets per version:

  1. DONE - SNES Beta version here: https://github.com/Krayzar/OgreBattle-MotBQ-TarotMapper See it in action here:
  2. DONE - Nintendo Power SNES
  3. DONE - PS1
  4. NEXT - Saturn - started

SNES USA and JPN Both versions use a 256 counter for initial card RNG. @Dragondarch 's RNG manipulations for the name "!" will work well on all original versions of SNES. The documented card sets may be off by a single digit compared to hardware perhaps due to recent accuracy improvements in emulation or issues with the BSNES core in recent bizhawk versions that make replicating accurate to hardware results impossible, but in practice it doesn't change how anything works. I'll probably need to test with save states on real hardware to figure what the discrepancy really is with the SD2SNES, assuming I can get save states working on my older model.

Time Counter stored at WRAM: 0x51

Secondary Time Counter stored at WRAM: 0x52

Tarot Cards stored at WRAM: 0xDBE - 0xDCC

Leader name stored at WRAM: 0x7A4 - 0x7AB 0x87B - 0x882

Nintendo Power Kiosk version Nintendo Power SNES ROM uses a 256 counter for initial card RNG but has a vastly different algorithm that seems very similar to the PSX version. Current Manipulations for "!" do not work. 0x52 is a secondary time counter that resets to 0 once it gets to FF (255). 256 x 256 = a 32bit counter (65,536) and this timer seems to have involvement with the cards, so it may be the exact same system used for PS1 and Saturn.

Hopefully scripting the card RNG will illuminate just how close it is - 3600 iterations and counting!

Time Counter stored at WRAM: 0x51

Secondary Time Counter stored at WRAM: 0x52

Tarot Cards stored at WRAM: 0xDBE - 0xDCC

Leader name stored at WRAM: 0x7A4 - 0x7AB 0x87B - 0x882

PS1 Seem to have RNG based on program start - there is a main counter that counts up indefinitely and initial card RNG seems entirely based on it. That appears to be a full 32bit counter and does reset to 0 once it reaches the limit. There are semi frequent areas of lag frames on PS1. This essentially means that there are small 2 to 4 frame windows where it's very likely you will get a specific set of cards, but the card sets are based solely on the timer and algorithm and the periods of lag being inconsistent can make things tricky. There is also a 0 to 64 counter I'm aware of that doesn't seem involved in card RNG, but may have a role in other types of RNG.

Tarot Cards stored at PSX MainRAM: 1C6B85 - 1C6B93

Leader name stored at PSX MainRAM: 1C6C14 - 1C6C1B

Time Counters stored at PSX MainRAM:

T1: 13C8FC

T2: 13C8FD

Other counters: 00E20C 13C910 135104 14188C

Unknow why there's so many on slightly different offsets/starting positions.

Saturn Seems to have RNG based on program start - there is a main counter that counts up indefinitely and initial card RNG seems entirely based on it. That appears to be a full 32bit counter and could take over a year to figure out if there's any interesting effects if it maxes out. Tarot cards are stored odd/even in the address range - only version that does this.

Time Counter stored at SAT work ram high: 0F9670

Secondary Time Counter stored at SAT work ram high: 0F9671

Another time counter (Realtime) stored at SAT work ram high: 0C63F8

Tarot Cards stored at SAT work ram high: 0CD46C - 0CD479

Slot 01 = 0CD46D Slot 02 = 0CD46C Slot 03 = 0CD46F Slot 04 = 0CD46E Slot 05 = 0CD471 Slot 06 = 0CD470 Slot 07 = 0CD473 Slot 08 = 0CD472 Slot 09 = 0CD475 Slot 10 = 0CD474 Slot 11 = 0CD477 Slot 12 = 0CD476 Slot 13 = 0CD479 Slot 14 = 0CD478

No idea why Saturn does this. Cards are reordered shortly after final pick too.

Leader Name stored at SAT work ram high: 0F9674 - 0F967B

Same odd/even storage pattern.

These games are incredibly different under the hood though - that much is clear.

Edited by the author 2 years ago
NewSchoolBoxer and Sheex like this
United States

One of the big things I'd be interested in is how the RNG affects (Joker) card pulls after loading a save file. With what research I was able to do way back when, I know it's similar to how the initial set is determined, in that it uses the frame counter to set a "seed," but beyond that loading different save files produced different results, despite loading on the same frame. It really felt like it was using something from the save file itself to mix things up.

NewSchoolBoxer and Krayzar like this
United States

Jokers, items from towns, and items from units are all on my list to figure out! And if you (or anyone) have any other ideas of things for me to test, please feel free to mention!

I'm having some fun relearning lua. Used to use it and vbs all the time 15 years ago, but I'm more than a little rusty.

I'm growing increasingly suspicious that - at least in the original - the leader name + save slot is a large part of the RNG.

There may be other factors, but basically to fit the game into the cart, it looks like they made some serious compromises compared to the Nintendo power version. It's relatively clear they meant to use Timer 2, which exists in the original, to provide more variability, but so far it doesn't seem to have a role in anything I've tested.

NewSchoolBoxer likes this

Good work here and comparing against the different releases! I think rather than bot to mine all the tarot possibilities for various name entries, we could construct the actual algorithms the game uses and instead use botting for optimal routes and timing windows. I've never used Lua, might be a good time to start learning...

Your thread's high page views took me by surprise. Even if only 3 or so people are actively speedrunning this game, I'm glad that the interest in figuring out Ogre Battle's rather cryptic game mechanics remains.

I spent a few hours catching up to speed on assembly and debugging and made some progress: https://pastebin.com/7gw9Vrs1

Nothing exciting to report but I'm fairly confident the solutions can be found. I hope it's helpful to anyone with microprocessor or low level (C or C++) programming experience.

Krayzar likes this
United States

Yeah, I should clarify that the scripts are mostly just to be able to quickly compare, test, or prove any findings from the algorithm.

That and I figure they might be useful for folks who don't want to dive in the depths of the theoretical. Goal is to lower the barrier to entry for folks finding their own strats, and bots are an accessible way to do that.

United States

I was curious so I decided to test out the loading RNG. From my findings it looks like its only the frame you select the save file on that determines the RNG seed.

What I did was create two save files with different names, stages complete, armies, etc. Powered on the game, went to the save load screen, paused emulation. At this point I manually set the global frame counter to a known value, I choose 0x40. Held down the A button and frame advanced to start the loading. Used a joker and got a World card. I then repeated this process for the second save file and was able to pull a World card.

Things that could still be tested: If a game was significantly further into the game and had more data. I don't believe it'd push it into another frame tick but its possible.

Krayzar likes this
United States

This is interesting - PlayStation edition seems to have initial card RNG based on not only the frame you select the sex, but also the frame you select your next answer to Warren's question.

This limits the usefulness of mapping the tarot cards slightly in this version. You shouldn't expect to get all of one pattern all the time. That said, it's possible to get most of one! My most recent Fireseal run is an example of a mostly manipulated card set. Sounds intimidating, but frame perfect mashing is sort of possible.

Initially I'd been getting inconsistent results with my scripts, but updating Bizhawk fixed things and allowed me to check what was going on.

@Spellzapp 's findings make me want to drill into the the rest of the games next.

Edited by the author 2 years ago

My paste got removed by Pastebin for being "potentially harmful" lol with no notification sent to me: https://ibb.co/rsH3wxF I appealed well after the 14 day limit and the paste was restored within a day.

Krayzar's new YouTube video shows he owns a Nintendo Power cart with the special Ogre Battle! Is there a modern way to read/write to load a different game on it or to extract the save file? Can you add the files linked in the video description like start of video says?

Fortunately, I could scroll over the 1 hour 11 minute 11 second video and jump to the explanatory text.

PlayStation lag frames, do we know if those deterministic on real PS1 and PS2 and on emulator? Does the timer still advance lag frames internally?

I learned that per the important timer value starting seed on the frame you confirm sex as male or female on:

-It doesn't matter if you skip the Quest logo or not. -It doesn't matter what frame you choose New Game on. -It doesn't matter what frame you confirm the Opinion Leader's name on (I think). -We knew the specific name mattered but now confirmed for all versions. -Making the OL male or female matters on PlayStation and Saturn. -Frames you choose male or female and the answer to each of Warren's questions matter on PlayStation only. -While frame you load to a saved game save matters for that game file, saved game exiting back to starting screen doesn't reset the timer unless you soft reset.

I assume for now that regular Japanese vs English SFC/SNES and PlayStation Japanese versus English versions have no RNG differences.

Edited by the author 2 years ago
Krayzar likes this
United States

Sorry, it's been a busy week! I'd meant to fill in the video description with the important details and a TL:DR. Actually got around to doing most of it, but I promptly fell asleep before clicking save. That's fixed now!

I'll link the vid below:

Just to answer your questions...

Is there a modern way to read/write to load a different game on it or to extract the save file?

Yes! There is, and it's rather accessible if you have a Super UFO 8, though I'd imagine other solutions that have full cart pins and a way to run SNES code would also work. Here's the thread with the details - gets good around the 3/4ths mark, but contains the entire history of figuring out how to program them: http://archive.nes.science/nesdev-forums/f12/t11453.xhtml

Long story short I was worried I might get ripped off when I purchased my NP cart for a price that seemed too good to be true and researched how I would dump and program them extensively.

As for save files, solutions like the retrode and Super UFO (and I'd imagine a Super Wildcard with some tinkering) do work to read and write saves to the cart. The save ram, while larger than usual, is still battery backed and accessed in the same ways. I should probably get some pictures of the inside of the NP cart - it's rather unique.

PlayStation lag frames, do we know if those deterministic on real PS1 and PS2 and on emulator? Does the timer still advance lag frames internally?

I'm not sure how accurate Bizhawk's PS1 emulation really is in terms of exact lag frames, but after doing hours upon hours of Fireseal runs and looking at timing in the footage, I can confirm there are periods where button presses just don't register, and periods where I always seem to get a specific card. So they do exist, and they do seem to fall around the timing a TAS lays out. It's just hard to tell how deterministic it is on hardware or emulator.

Now does the timer advance? Yes! At least according to the TASing. And it even seems to pause on specific cards for the duration of the lag frame, and come back right where it would normally be once the frames end... but the rub is it seems that some lag frames may register button presses and some may not in a TAS environment. I can confirm through play that it FEELS like it's rather easy to get certain cards or patterns around where the lag should be, but again, this is something that's rather hard to confirm in practice. It's very likely that TASing is mostly accurate, or accurate enough to allow us to extrapolate a bunch from it.

Edited by the author 2 years ago
NewSchoolBoxer likes this

That Nintendo Power thread is pretty epic. Thanks for summarizing and giving answers. Guess I want to buy a writing device not being scalped on eBay first.

No PS1 emulator emulates disc loading lag accurately but we can figure out the RNG mechanics either way. We're not trying to glitch based on lag frames. I would expect the timer to tick up during lag frames. One way to define lag is what happens when the game doesn't finish its calculations to write to VRAM before the vertical blanking interval ends and a new frame to draw begins. Incrementing the timer used for RNG would be high priority and likely take place very early in each frame.

I saw the Lua code! Is a big improvement on my RAM watch strategy especially with the letter setter function. I know how to use TAS Studio to rerecord, just didn't have the patience before but you ruled many things I no longer have to test for.

I have same SNES NA hex values for the name entry and tarot cards. What I found is the letters you enter get stored starting at 0x87B but the name used for the OL is stored at 0x7A4. Meaning you see 'F' for FIRESEAL at 0x87B and 'L' for LEXAR at 0x74A. Else the names are only different from trailing blank spaces you enter that appear as 0x20's in 0x87B but get ignored when you see the game asking you to confirm the name.

I created a primitive way of testing tarot generation using cheat code feature to constantly set the starting seed at 0x7E0051 right before I confirm male or female and then turn it off. Could say what I found isn't proof due to glitching the game.

Today's findings

The edited name starting at 0x74A is what is used to generate the tarot cards, based on FIRESEAL and LEXAR generating the same cards with same seed. So what Krayzar was already doing.

The starting letter or character generates the same tarot cards if the name is 1, 2 or 3 characters long. Meaning the same seed yields same tarots for naming !, !A, !HI, etc. but !!!! and !HELLO would be different because > 3 characters and different from each other.

Krayzar likes this
United States

I do have a feeling that the lag in PS1 will make things more difficult in general, not less, and that manipulating in lag frames would not be reliable, even if it worked. I have some proof of that too now, but I'll get into that later.

I figured the name scheme only used certain characters for the seed - it's awesome to see the specifics though @NewSchoolBoxer!

My lua code is currently built around fully testing all major assumptions - now that we know the broad strokes, that needs to change a lot. It is possible to call save states from within the code and I do intend to implement that for quick testing in Tarot patterns, Item drops from buried treasure, Item drops for units, Joker pulls, and Card pulls from towns. I'll keep versions that do full tests though, just so folks can confirm anything they want - who knows, could have missed something!

But for all that, I needed to know some basics about each of those things so that we can account for all possible factors that control them... which is what I've been doing for the past month! I've only tested Items from units, but I believe I understand RNG in both SNES and PS1 to a large extent just from that and some not yet terribly in depth testing on other parts.

Thanks to @Spellzapp - I had a lot to go on for the original SNES version!

SNES

This is exciting!

RNG seems to be seeded to an extent by the frame you select the sex or load a save from. It may also seed from the frame you save a game on. The Tarot cards you have also seem to play a role in the seed as well. Not sure on the name yet, but obviously it wouldn't matter much in a run.

This means that if you have the right Tarot cards and start the game on a particular frame the next unit you kill can be manipulated to drop an item!

There's a catch though - the cards you have do affect the RNG even in battle, so you do have to plan out what cards you would use to kill the unit in question should you need to use cards. This would make it prohibitively difficult to manipulate things later in the game, though not impossible.

Well no, I lied - two catches - not all items are available for drops on every seed. But the good news is that only Timer 1 seems to be used in the frame count for the seed, so the same items would repeatedly be available on every cycle of T1. In general, it actually appears there's a 1/10 of a chance at a drop from enemy units and I'm not sure if luck affects it on SNES.

In practice it would be 1 to 2 frame perfect inputs and 4 moderately precise movements to achieve an item manipulation on the first unit in Sharom Border. You'd likely lose 20-30 seconds in all going for the manipulation.

PS1

This is not so exciting, but there's some info I'll get into later that is!

RNG is seeded on T1 and T2, and the seed is set on specific confirmation inputs. So at specific times you press x (generally any final confirmation, like confirming after a tarot selection in battle) your seed appears to change. Your current tarot cards also seem to have a role in the Unit drop RNG specifically.

This makes manipulations for this HARD. The good news is that you can load from an in Battle Save and with just 3 frame perfect inputs (Save load, Battle Start, and Tarot card selection confirmation). Seems a bit daunting, but there's plenty of other games that have 3 frame perfect tricks in a row, so why not Ogre Battle! =P

The good news is, it does seem like there is a greater frequency of drops on PS1 because of the higher variability, so in all likelihood, some backup strats for a bunch of items could be utilized as well.

The bad news is of course that loading from a save in battle is slow, and you'd need to do it from a cold boot too if you wanted a slightly less complex time of things, as resetting to title does not reset T1 and T2. It would probably cost over a minute or more to attempt, but since PS1 seems to run faster, we have more room to play with. If it's helpful enough to try? That remains to be seen.

Archive.org Deep Dives - or that one time Krayzar spent a day translating Early Japanese Ogre Battle Web Rings

So... I confess I've been using Deathlike2's FAQ as gospel about the game for years and realized I had no idea if any of it was really valid:

https://gamefaqs.gamespot.com/snes/588541-ogre-battle-the-march-of-the-black-queen/faqs/48963

The more I looked into things, the more I found it utterly iron clad. Which was disturbing. Most of the guide was written before a lot of this was easy to test. Especially my observations that SNES had an almost exactly 1/10 item drop rate matching the guide perfectly was spooky.

So I looked into the sources - and some more content on now long dead webrings...

http://ogre.org/ - Still up actually!

https://web.archive.org/web/20050310110035/http://nikki.kdn.gr.jp/rising/index.html

https://web.archive.org/web/20190316232151/http://space.geocities.jp/fireseal63/ogrebattle.html

https://web.archive.org/web/20200926010725if_/http://www.carbuncle.jp/og5/5_map.html

https://web.archive.org/web/20090212233539/http://www.geocities.com/xesmeraude/blackmantle.html

https://web.archive.org/web/20070821205026/http://www.houseofwacks.org/ogre/

The most interesting things by far are:

http://ogre.org/ogrebattle/OB-PSbugs.html - I was aware of the resistance bug, but was unaware of the extent it can be manipulated! This is probably more useful than item manipulations for PS1.

Demo of it here, using the Ogre Sheild:

https://web.archive.org/web/20190316232151/http://space.geocities.jp/fireseal63/ogrebattle.html - the info on Tarot redraws based on luck value illuminates a few quirks that can be seen with my monitor scripts. Most of this info is known due to work on a hack back in 2005-2007, which is interesting.

https://web.archive.org/web/20050310110035/http://nikki.kdn.gr.jp/rising/index.html - in the Basics faq, there's a reference to a secret Battle test that's accessible:

★プレイステーション版のみ ◇バトルテスト … 編成画面で、2PコントローラのL1、L2、R1、R2、SELECT、STARTを押しながら、1PコントローラのSTARTを押すと、味方ユニット同士で戦えるモードに入ることができる。

★ Pureisutēshon-ban nomi ◇ batoru tesuto… hensei gamen de, 2 P kontorōra no L 1, L 2, R 1, R 2, serekuto, START o oshinagara, 1 P kontorōra no START o osu to, mikata yunitto dōshi de tatakaeru mōdo ni hairu koto ga dekiru.

**Translation: ★ PlayStation version only ◇ Battle test ... On the formation screen, hold down L1, L2, R1, R2, SELECT, START of the 2P controller and press START of the 1P controller to enter the mode in which allies can fight each other. **

I'd love to play with this, but I can't get it to work on either of my copies, Japanese or US. I feel like I've seen a video of this though. If you can figure out how to get it working, let me know!

There's also references to a lot of Saturn only content and items - and where to get them!

Finally I managed to find an absolutely bonkers Japanese Ogre Battle commercial:

I love it.

Edited by the author 2 years ago
United States

Cards Pulled from Jokers on SNES

I know @Spellzapp already tested this but given the new information on one of the older Japanese sites, I wanted to test the role of luck. From the Japanese Site:

//////////////////////////////////////////////////////////////////////// Tarot draw The same tarot card that was drawn last time will not appear when the city / church is released or when the "Joker's Fuda" is used.

The tarot cards drawn at release are not completely random and may only be redone once depending on the tarot card drawn and the LUK of the release unit leader.

Redraw when LUK is 51 or above Hungedman Death Temperance Devil Tower

Magician Priestess Empress Emperor Hierophant Lovers Chariot Strength Hermit Justice Star Judgment World

Probability of redrawing

(Absolute value of LUK-50) / 50

The tarot cards drawn when using "Joker's Fuda" are not originally intended to be redrawn, but due to a bug, a redraw judgment is made and the obtained tarot cards are biased.

////////////////////////////////////////////////////////////////////////

While it's a little poorly translated, as far as I can tell currently, this is accurate. And @Spellzapp is also correct, the cards are entirely deterministic and have an order seeded on the frame you load the game on, based entirely off of Timer 1. The order is designed so that you cannot get two of the same cards in a row. It also is designed to redraw certain "bad" cards and replace them with "good" ones at progressively higher luck values.

I'll need to script up a full test to be able confirm this next part, but from what I can see so far, at 100+ luck on the drawing leader you will never get Hangedman, Death, Temperance, Devil, or Tower card, even from Jokers.

@Dragondarch might be especially interested in this next part - given what we know, it's probably fairly simple to find an optimal pattern for particular cards or sets of cards. There's usually a two frame window on loading the save for getting any particular card (1 frame for a full pattern), and the RNG being based off of T1 means that there's at most only 256 possible patterns. It's likely for a given luck value and Card wanted that a metronome of sorts could be built that would help get the timing down. Perhaps right into LiveSplit or something.

That said, it's probably not feasible to try to get a bunch of a single card without a lot of saving and reloading. Maybe that would be faster over all? I'm really not sure.

Edited by the author 2 years ago
United States

Soooo, I believe this is RTA viable:

Assuming you fully manipulate Warren's Castle, the next drop in Sharom Border can get you a chime. Keep in mind you can send Warren out early and lose much less time here, you just have to account for his movement while mapping RNG. In battle movement changes the RNG in predictable ways.

After that, your chances of recruiting a level 8 bird are good if you use a chime in Warren's Castle. This should give you a decent advantage in the early game, but I'm not sure if it's worth it really. Charm, Crown, or others might be better and quicker in the long run.

Edited by the author 2 years ago
United States

Honestly, considering the Gryphon isn't really a main source of damage, the time spent re-entering Castle of Warren would probably negate any possible gains that would have.

A Crown I can't see being especially helpful either (at least in any%) due to the fact that if you're using a Princess for the extra round of attacks, you have to give up using the opinion leader, which would mean they'd fall very far behind on levels, which in turn would mean that Tarot cards would quickly become useless unless you wanted to stop and grind the OL up at some point.

A Crown might be useful for 100% though, since we give up on the OL about halfway through.

Charm I could see being useful as a replacement for a Fool or, weirdly enough, might actually be better used on Gilbert to steal a Wyrm.

Edit: Watched the video. The amount of setup required to even get those items is going to cost way more than the time they could possibly save. Even sending Warren out early, you'd need to have him ready to hit the boss right after you get the Chime (or the Charm from the 2nd fight), or else it'd be much too large of a time loss.

Also, doesn't this require that you have the correct seed going into the stage? Was this manip from a reset + load, or did you come straight from Castle of Warren?

Krayzar likes this
United States

You can go into the stage on a specific seed from the start of the game - that's how this one was done, so it's 1 frame perfect trick and 4-5 moderately precise movements. There's some leeway with how in battle movement affects things. You get confirmation of the seed on the card you draw from liberation, so only the final move into Warren and moving Warren's unit are "blind".

I have a setup for moving Warren's unit that would be almost instantly at the boss, skipping the other fight, but like you say, I'm doubtful it's useful in any% on the SNES. At just barely humanly possible speeds, it still wastes 20-30 seconds for little long term benefits.

I'm of the same opinion on the Crown, while it's interesting, I don't think it's useful for any%. Undead Staff might make sense in any%, but even that is iffy as to wether you'd actually get to use it and if it would really help.

And sadly, my own idea for trade tickets doesn't seem to work out. Luck doesn't seem to manipulate Tarot or items enough to make it worthwhile, and in fact does seem to cause your neutral encounter rate to go up, something we don't want.

Silly thing to note - you can get Wyrms in Warren's Castle, but they're in deep sea, and they share spawn chances with dragons! My real point to all of this was to try to get one as the damage output is way better, but it wastes even more time the chime way. Might be fun to test out charm on Gilbert's Wyrms though.

I think manipulating Jokers with saving/loading is more likely to save time overall.

That said, given the Res bugs in PS1, both charm and chimes would be more useful to grab early monsters with mid game res and I guess while the manipulations for PS1 are hard, they aren't completely terrible.

Edited by the author 2 years ago
United States

So... I've been testing manipulations for 100% and a possible All Stages run for SNES, and I've come to the conclusion that there's something fundamentally very wrong with how timing works for Ogre Battle under emulation, even under Bizhawk's BSNES core.

Emulation is two frames behind actual hardware on Warren's Tarot reading after timing a sampling of 30 runs. My interpretation - since manipulations for cards and items work accounting for this - is that the actual amount of lag under emulation is incorrect in many loading and high CPU situations.

This means currently that we can't trust item manipulations from units under emulation. As soon as there's enemies and multiple loads, things get very far away from hardware in my manual testing.

I've failed over 100 attempts at a chime manip just to see if this kind of thing is viable - and that's odd because I'm usually at least 1/10 on getting frame perfect stuff. So I manually timed some of the recorded failures and realized I definitely got every frame including the target on a 5 frame window. Without some automated way of testing manipulations consistently on real hardware, sadly a manipulation does not appear to currently be possible.

I do own a TAStm32 (TASbot basically) that I use to test some NES stuff for folks, and could possibly try to write something that tests all 255 possible drops from Sharom using @Dragondarch 's manipulation as a base, but unless you want to count chess games, I have had almost no luck with getting things to sync at all on my SNES consoles, and considering the precise timing required, I doubt this will be fruitful.

I'm going to reach out to some contacts in the emulation community and try to see why the lag frames aren't seemingly lining up. If anyone has any ideas, I'm all ears.

Spockrocket likes this