Post Atdur5NsE6pcUlc9zM by foone@digipres.club
(DIR) More posts by foone@digipres.club
(DIR) Post #AtdnTir97S0uHqDdB2 by foone@digipres.club
2025-05-01T05:56:03Z
0 likes, 0 repeats
I need a way to run NES games FASTER
(DIR) Post #AtdnjCxjT1hI0GgRiy by foone@digipres.club
2025-05-01T05:58:52Z
0 likes, 0 repeats
or maybe just more in parallel.it's taking 15 seconds to run this TAS, with unthrottled/no-display bizhawk. I have half a million runs to do
(DIR) Post #Atdnt9W58NBqDBUZmq by foone@digipres.club
2025-05-01T06:00:37Z
0 likes, 0 repeats
I switched to a computer that's less in my lap, but that's still ~7s a run. 40 days?
(DIR) Post #AtdoUr14Mja7q2xp2m by bytex64@awesome.garden
2025-05-01T06:07:25Z
0 likes, 0 repeats
@foone Sounds like you need more computers. Is bizhawk single-threaded?
(DIR) Post #AtdpwFdf1nPVybdtcO by foone@digipres.club
2025-05-01T06:23:36Z
0 likes, 0 repeats
maybe I should just set up some kind of orchestration so I can run it on all my spare computing power. just a lot of simultaneous NES TASes running everywhere
(DIR) Post #AtdqHp5YQB920HyYDY by foone@digipres.club
2025-05-01T06:27:31Z
0 likes, 0 repeats
or I could get smarter. I don't want to do that. but it's an option
(DIR) Post #Atds4rScUTwnVJiAuO by foone@digipres.club
2025-05-01T06:47:36Z
0 likes, 0 repeats
it turns out being smarter also involves waiting for several hundred NES TASes to finish
(DIR) Post #AtdsT1Hlc5LqvS9ey0 by foone@digipres.club
2025-05-01T06:51:57Z
0 likes, 0 repeats
@bytex64 I don't think it is, no. Maybe running multiple copies at once is the key? That might be tricky, though, because of Filesystems
(DIR) Post #AtdsWKL3EOmmt0Gg2y by foone@digipres.club
2025-05-01T06:52:32Z
0 likes, 0 repeats
@niarbeht I know, right?I guess I could stuff a headless NES emulator in a docker container and run that, but... that'd require money or free access to a cluster somewhere, neither of which I have
(DIR) Post #AtdsaMY8x5nuu0JfA8 by foone@digipres.club
2025-05-01T06:52:57Z
0 likes, 0 repeats
man either this game is very resilient to corruption or my script isn't working and I'm corrupting nothing.
(DIR) Post #AtdsaNDGUChIxXYVG4 by foone@digipres.club
2025-05-01T06:53:02Z
0 likes, 0 repeats
or both
(DIR) Post #Atdt0bxEIhbcCxZAeG by foone@digipres.club
2025-05-01T06:58:01Z
0 likes, 0 repeats
the files are identical.MOTHERFUCKER
(DIR) Post #AtdtG1bJEK6s5ofACu by foone@digipres.club
2025-05-01T07:00:46Z
0 likes, 0 repeats
yeah I left in one line from an earlier version which broke it. it was carefully calculating the corrupted ROM and then it overwrote the in-memory copy with the original ROM, then wrote that out as the corrupted version
(DIR) Post #AtdtuBx2AP0BmFyflg by foone@digipres.club
2025-05-01T07:07:57Z
0 likes, 0 repeats
@yakmoose which isn't what I wanted! I wanted them to CHANGE
(DIR) Post #AtduGSHI93B6mi4Kw4 by foone@digipres.club
2025-05-01T07:12:03Z
0 likes, 0 repeats
so my plan is that I'm taking an NES ROM and corrupting a kilobyte of it at a time. I'm then running it to a set point, and taking a screenshot.Every 1k chunk that results in the same screenshot? is uninteresting to my corruption. Everything that breaks or changes? interesting.Then I'll go through and randomly corrupt those 1k chunks that were found in the interesting pass
(DIR) Post #AtduJLnkgGVBZDdHsm by bytex64@awesome.garden
2025-05-01T07:12:31Z
0 likes, 0 repeats
@foone Yeah, no doubt there will be some tricky state management.
(DIR) Post #AtduLqpuGVK8OmphGC by foone@digipres.club
2025-05-01T07:12:28Z
0 likes, 0 repeats
the idea is to skip corrupting any chunk that I know can't affect the screen I'm looking at
(DIR) Post #AtdueBUGDyaveuRxsO by jbqueru@floss.social
2025-05-01T07:16:21Z
0 likes, 0 repeats
@foone Always a tradeoff of latency vs throughput. You could put some effort in getting this finished eariler, but that would take some efforts from other tasks you could otherwise accomplish in parallel. You can't win on both fronts. I know you know that, but I always like to express it as throughput vs latency.
(DIR) Post #Atdur5NsE6pcUlc9zM by foone@digipres.club
2025-05-01T07:18:42Z
0 likes, 1 repeats
https://github.com/fhoedemakers/pico-infonesPlushmmm. NES emulator for the Pico. I have like 10-15 picos. I could parallelize this and build a dedicated NES emulation cluster
(DIR) Post #AtduxwjAoFOfftqfh2 by bytex64@awesome.garden
2025-05-01T07:19:57Z
0 likes, 0 repeats
@foone Maybe a bisection approach would be faster? Probably still start with the 1K chunks, but then progressively subdivide the corruption region to zero in on the interesting bits faster. But I dunno exactly what you’re looking for.
(DIR) Post #Atdv0NXM6UfJOyTrjk by foone@digipres.club
2025-05-01T07:20:08Z
0 likes, 0 repeats
yeah that looks like an Interesting chunk.
(DIR) Post #AtdvFcLfJjohgNHNDM by foone@digipres.club
2025-05-01T07:23:10Z
0 likes, 0 repeats
@bytex64 possibly, but I'd have to write it, and I'm disinclined to do that when my stupider approach is already running.as for what I'm looking for: the bytes that determine which portrait gets picked in the dialogue screen of Clash at Demon Head
(DIR) Post #AtdvwvIIklVQtTM6F6 by foone@digipres.club
2025-05-01T07:30:57Z
0 likes, 0 repeats
These two even moreso
(DIR) Post #AtdwGScN547BkP3j9c by foone@digipres.club
2025-05-01T07:34:30Z
0 likes, 0 repeats
I should automate this completely.just randomly pick NES roms, figure out how much of them is PRG vs CHR, then randomly corrupt the PRG and take screenshots. if the screenshot doesn't match an unmodified screenshot, post it somewhere
(DIR) Post #AtdwJskAP0JjdyKwjo by foone@digipres.club
2025-05-01T07:34:58Z
0 likes, 0 repeats
@faux that sounds hard and it would need me to be smart. I like computers because they're so fast I don't have to be smart
(DIR) Post #AtdwPyiT6pYluARvZQ by foone@digipres.club
2025-05-01T07:36:11Z
0 likes, 0 repeats
the real trick would be to figure out how to do it to DOS games.
(DIR) Post #AtdwXStrHkN5XrLZk8 by foone@digipres.club
2025-05-01T07:37:34Z
0 likes, 0 repeats
lemme see if TASVideos has a better solution for a DOS emulator since I last did a TAS 15 years ago...
(DIR) Post #AtdwbaQzDNO44Ro8HY by foone@digipres.club
2025-05-01T07:37:37Z
0 likes, 0 repeats
nope
(DIR) Post #AtdwbfYy97k9yea4v2 by foone@digipres.club
2025-05-01T07:37:58Z
0 likes, 0 repeats
(technically not true: they now also support using libtas+PCem! A horrible hack that scares me!)
(DIR) Post #Atdwkpi9miaY3dFR68 by foone@digipres.club
2025-05-01T07:39:36Z
0 likes, 1 repeats
I think I made the game orgasm
(DIR) Post #Ate9WA9qmUWSX3XJmC by Andrew@mnstdn.monster
2025-05-01T10:02:52Z
0 likes, 0 repeats
@foone this could make for an amazing art installation, especially if it could generate corrupted screenshots or gameplay in real time
(DIR) Post #AteEOeWIVlmE9WH3TM by foone@digipres.club
2025-05-01T10:57:39Z
0 likes, 0 repeats
I found that if you change byte 50647 to 97 in the ROM, bizhawk gets confused and tries to load it as a Playstation ISO
(DIR) Post #AteHWjB5NRbimHtWVc by futurebird@sauropods.win
2025-05-01T11:33:06Z
0 likes, 0 repeats
@foone ees yesyees!yess!The ground is very affirmative and enthusiastic.
(DIR) Post #AteOpydkoOf5umQi5g by jrsharp@mastodon.sdf.org
2025-05-01T12:55:02Z
0 likes, 0 repeats
@foone yes. Do that. :)
(DIR) Post #AteWyt5Rcz6Ivm8qKu by bcasiello@floss.social
2025-05-01T14:25:44Z
0 likes, 0 repeats
@foone "I'll have what she's running."
(DIR) Post #AtelaU7wH5f1sk88si by jackemled@furry.engineer
2025-05-01T17:09:33Z
0 likes, 0 repeats
@foone fuck the 6502, put a Ryzen 9 in that bitch
(DIR) Post #AterzKrMT1GE6WbpZY by foone@digipres.club
2025-05-01T18:21:10Z
0 likes, 0 repeats
@jackemled if I had a ryzen 9, I'd happily use it for NES emulation!
(DIR) Post #Ath7dcvu9cRD0rzUky by foone@digipres.club
2025-05-02T20:25:47Z
0 likes, 0 repeats
2048 gibberishings later and I think these two are the closest I got to a useful result
(DIR) Post #Ath8OQCXJASt8X5EwK by foone@digipres.club
2025-05-02T20:34:27Z
0 likes, 0 repeats
automating windows programs is always a nightmare. what does your command line tool do when the command line program calls MessageBox?
(DIR) Post #Ath8btfT3ykYI42dSi by foone@digipres.club
2025-05-02T20:36:58Z
0 likes, 0 repeats
when I was automating some visual studio build machines a decade ago I had some code that checked every 60 seconds for unexpected dialog boxes being open, and if found it spammed ESC on the keyboard to close them.
(DIR) Post #Ath8gw9jEwLBSGbCwi by foone@digipres.club
2025-05-02T20:37:52Z
0 likes, 0 repeats
okay out of 2048 gibberishings on the target chunk (1 kilobyte) I got 166 examples of changes that made a visual difference
(DIR) Post #Ath8ndZyhovJrr4Wye by foone@digipres.club
2025-05-02T20:39:05Z
0 likes, 0 repeats
none of which are useful
(DIR) Post #Ath8qQRnzCBC0bZwky by foone@digipres.club
2025-05-02T20:39:18Z
0 likes, 0 repeats
I already knew I wasn't smart enough to hack this game, but apparently I'm not studio enough either
(DIR) Post #Ath8zSbPLMbRIYNWTI by foone@digipres.club
2025-05-02T20:39:55Z
0 likes, 0 repeats
@CowboyWho Clash at Demonhead
(DIR) Post #Ath92fRi325U06N5U0 by habbie@fosstodon.org
2025-05-02T20:41:45Z
0 likes, 0 repeats
@foone you had me trying to figure out what "studio enough" meant
(DIR) Post #Ath9C8BMZmnTjOEp04 by foone@digipres.club
2025-05-02T20:43:33Z
0 likes, 0 repeats
@habbie I'm all too stupid to spell correctly
(DIR) Post #Ath9c6v5tO0lLS14nw by gunstick@mastodon.opencloud.lu
2025-05-02T20:48:06Z
0 likes, 0 repeats
@foone I used xdotool and ran the program in wine. Then automating it was so easy.
(DIR) Post #AthAUBcwbgmra8JQWm by habbie@fosstodon.org
2025-05-02T20:57:56Z
0 likes, 0 repeats
@foone nah, just not studio enough
(DIR) Post #AthBTbKrdcyIyn8l1s by foone@digipres.club
2025-05-02T21:08:56Z
0 likes, 0 repeats
maybe I can make a bot to play the game for me and just make it exhaustively check every possible route
(DIR) Post #AthBnOIpnrPULocxiS by foone@digipres.club
2025-05-02T21:12:40Z
0 likes, 0 repeats
you know a project is serious when you need two different hex editors
(DIR) Post #AthBwDGGDzMwiEd89A by atrus@toot.cafe
2025-05-02T21:14:13Z
0 likes, 0 repeats
@foone I feel this one, minus the context.
(DIR) Post #AthC3JWnK82EAvkY0O by cr1901@mastodon.social
2025-05-02T21:15:31Z
0 likes, 0 repeats
@foone I have 2 hex editors... I like HxD's UI more, but ImHex binary format descriptions are also valuable.
(DIR) Post #AthCB2ijhHCUMg1LcW by foone@digipres.club
2025-05-02T21:16:55Z
0 likes, 0 repeats
@cr1901 yeah! I use HxD as my main one, but I use WindHex as my backup because HxD doesn't have TBL support
(DIR) Post #AthCDuUijnknikpfUG by foone@digipres.club
2025-05-02T21:17:14Z
0 likes, 0 repeats
@cr1901 I tried to load ImHex once and it hurt my eyes. I'm on a high-DPI screen (against my will) and ImHex doesn't like it
(DIR) Post #AthCH5q90mwdmFN3jM by cr1901@mastodon.social
2025-05-02T21:18:01Z
0 likes, 0 repeats
@foone What's TBL? :o
(DIR) Post #AthDCQ1ks6eN7o6elk by foone@digipres.club
2025-05-02T21:28:23Z
0 likes, 0 repeats
@cr1901 translation tables. useful for NES games and such, which don't use ASCII
(DIR) Post #AthHOBStEufHFhfEUy by argenis@mastodon.online
2025-05-02T22:15:14Z
0 likes, 0 repeats
@foone I need this script, I’ll bake it into everything. It is still a problem today, some websites have been known to defeat the browser defenses against pop-ups, not sure if with delays or what but it’s annoying.
(DIR) Post #AthIEGxM4GeJLFkemW by cerement@social.targaryen.house
2025-05-02T22:24:41Z
0 likes, 0 repeats
@foone (Windows 7 opening blocking dialog boxes »behind« every other window)
(DIR) Post #AthIHAX0PcWcHeo9hY by solemnwarning@fosstodon.org
2025-05-02T22:24:42Z
0 likes, 0 repeats
@foone @cr1901 plugging my own project here... have you tried https://github.com/solemnwarning/rehex ?I don't have a high DPI screen, but I'm told it scales fine on them.
(DIR) Post #AthPntrm5nztpk4q2K by j0hnnyxm4s@infosec.exchange
2025-05-02T23:49:33Z
0 likes, 0 repeats
@foone you’re literally describing The Travelling Salesman computational problem
(DIR) Post #AthaV1cm7hDbt9GOi8 by Laukidh@infosec.exchange
2025-05-03T01:38:12Z
0 likes, 0 repeats
@foone maybe you can get it running on a Boinc client like seti at home
(DIR) Post #Aw2n8TsGWKJJrNpOfw by foone@digipres.club
2025-07-12T03:04:02Z
0 likes, 0 repeats
huh. Clash at Demonhead uses an encoding with a funny property:characters "A" through "F" are encoded as themselves.0A="A"0B="B"...0F="F"10="G"etc
(DIR) Post #Aw2pDnCgHXCbAI2P2G by foone@digipres.club
2025-07-12T03:27:31Z
0 likes, 0 repeats
It's gonna take 51 minutes to extract all 256 variations of this font? Good lord. This isn't a fast way to do this.
(DIR) Post #Aw2pHyTeJBfVHuy6wS by foone@digipres.club
2025-07-12T03:28:17Z
0 likes, 0 repeats
Have you ever noticed that the way I deal with long processing times is by posting about them on social media? I've done this for so many death generator threads!
(DIR) Post #Aw2q69siBLDZ8XcYQC by BRicker@fosstodon.org
2025-07-12T03:37:20Z
0 likes, 0 repeats
@foone 5 font variants per minute seems pretty fast
(DIR) Post #Aw2qMdt4OAl6pbeGrw by drwho@masto.hackers.town
2025-07-12T03:40:18Z
0 likes, 0 repeats
@foone Clash at Demonhead!
(DIR) Post #Aw32c3t3ChETGHl5jk by foone@digipres.club
2025-07-12T05:57:26Z
0 likes, 0 repeats
I'm always saying this!
(DIR) Post #Aw37SQdiFrQMhcoIqm by dave_cochran@infosec.exchange
2025-07-12T06:51:46Z
0 likes, 0 repeats
@foone just-flirted-with-trans-girls be like😁
(DIR) Post #Aw38MylkY53alpXE8G by foone@digipres.club
2025-07-12T07:02:04Z
0 likes, 0 repeats
I found one byte that seems to be half of the pointer I'm looking for but I bet they're doing that 6502 trick where you have a table of 2 byte addresses but you store it as all the first bytes and then all the second bytes.which makes finding the other half real annoying
(DIR) Post #Aw38dtvxmNWYhHNhBo by mkoek@mastodon.nl
2025-07-12T07:05:05Z
0 likes, 0 repeats
@foone weird - why do they do that?
(DIR) Post #Aw397xjKEIyH9rnvHM by brouhaha@mastodon.social
2025-07-12T07:10:29Z
0 likes, 0 repeats
@foone@digipres.club Boss: "Did you obfuscate the code like I asked?"Me: "Yes, I wrote it in 6502 assembly language. Only people like @Foone will be able to reverse-engineer it."
(DIR) Post #Aw3CRWe0wWZwo8L8wy by foone@digipres.club
2025-07-12T07:47:44Z
0 likes, 0 repeats
@mkoek I don't recall exactly, I think it's something to do with the 6502 not having a load-16bit instruction (since it's got an 8bit bus), so it's easier to do an indexed reference into two separate 8bit lists than one single 16bit list?
(DIR) Post #Aw3FQMA8jE0ts6V6Qq by foone@digipres.club
2025-07-12T08:21:08Z
0 likes, 0 repeats
nope, found it. it's just little-endian.
(DIR) Post #Aw3O4nTbOWUtniOlm4 by foone@digipres.club
2025-07-12T09:58:01Z
0 likes, 0 repeats
so I have figured out where 1 pointer to 1 dialogue is. that's progress, technically!
(DIR) Post #Aw3O7lCcJ0ExcJrnqS by foone@digipres.club
2025-07-12T09:58:14Z
0 likes, 0 repeats
I have been trying (and failing) to hack this game for YEARS at this point
(DIR) Post #Aw3TitRJ8vzHeIGQkK by geoffl@mastodon.me.uk
2025-07-12T11:01:12Z
0 likes, 0 repeats
@foone So someone needs to create a NESlij like beebjit. How hard coukd it be, they're both 6502 based."In some tests, beebjit has run the 2MHz 6502 CPU at an effective speed of well over 10GHz, although 3GHz might be more typical when running a game with full accuracy."https://github.com/scarybeasts/beebjit
(DIR) Post #Aw3XqjDxPIEO6G0k8O by oblomov@sociale.network
2025-07-12T11:47:27Z
0 likes, 0 repeats
@foone it's your white whale at this point
(DIR) Post #Aw3i2PKUCS17PkGxdY by deater78@mastodon.social
2025-07-12T13:41:40Z
0 likes, 0 repeats
@foone @mkoek yes on 6502 it's much easier splitting pointer tables (I was just writing code like that today)you can only load in 8-bit chunks, and if you store 16-but pointer values together you need to multiply the index by 2 and then add 1 to get the low/high pointer values from a 16-bit table, which is extra work compared to just using the plain index on two tablesalso if the pointers are to small objects (fitting in a 256 byte page) you can save space by dropping the high-byte table
(DIR) Post #Aw4CpwOD4Lr8lLY8jQ by foone@digipres.club
2025-07-12T19:26:50Z
0 likes, 0 repeats
@deater78 @mkoek thanks for explaining!
(DIR) Post #Aw5F6UjZXSyeypWU3U by foone@digipres.club
2025-07-13T07:26:54Z
0 likes, 0 repeats
I should collect my raspberry pis together and build a redundant array of inexpensive NES emulators
(DIR) Post #Aw5F93aWvHDfepW0XI by foone@digipres.club
2025-07-13T07:27:16Z
0 likes, 0 repeats
gotta build an NES Command & Control system
(DIR) Post #Aw5FHHhaKdtbkOjqL2 by foone@digipres.club
2025-07-13T07:28:55Z
0 likes, 0 repeats
I just set up a job definition and it get automatically farmed out to all the available nodes to run a couple thousand NES roms, however many in parallel it can manage
(DIR) Post #Aw5FMYtFr0WoVHiHQW by otte_homan@theblower.au
2025-07-13T07:29:50Z
0 likes, 0 repeats
@foone kubernetes and NES emulators "at scale". Need to weasel in the word "AI" but otherwise this is a winner.
(DIR) Post #Aw5FPMywaKT0RJiHS4 by foone@digipres.club
2025-07-13T07:30:11Z
0 likes, 0 repeats
lemme see if any of the cloud providers can do 6502 VMs
(DIR) Post #Aw5FXvH0yRq36qFCCW by foone@digipres.club
2025-07-13T07:31:58Z
0 likes, 0 repeats
@otte_homan I have a policy against doing kubernetes unless I'm being paid, but otherwise yeah
(DIR) Post #Aw5FlhnTsLExMq0BN2 by blami@mastodon.online
2025-07-13T07:34:20Z
0 likes, 0 repeats
@foone OMG don’t give them too much ideas. Can’t wait for dishwasher and washing machine makers to offload EOLd Z80 to the cloud instances to keep production going.
(DIR) Post #Aw5GbIB8MyM8yHfEES by foone@digipres.club
2025-07-13T07:43:42Z
0 likes, 0 repeats
@soviut both
(DIR) Post #Aw5HrUe9sgAaECWrXk by brouhaha@mastodon.social
2025-07-13T07:57:52Z
0 likes, 0 repeats
@foone What hardware do you want it to have?I think I'd want 64K RAM, less a tiny block of MMIO just under the vectors. UART-like console in and out, custom block-oriented mass storage interface. Or maybe an interface to a filesystem?Oh, and a TCP interface, of course.
(DIR) Post #Aw5U1AWMlGte9gGRs0 by foone@digipres.club
2025-07-13T10:14:05Z
0 likes, 0 repeats
OK I've figured out some bytes that set the palette and portrait, but separately. only 16 of the values are valid, which seems low. I think I'm gonna have to do more processing of the ROM to figure out all dialog box instructions, and what they set the portraits to
(DIR) Post #Aw6WBjZ7iRh4o1gCBc by duncanlock@cosocial.ca
2025-07-13T22:13:04Z
0 likes, 0 repeats
@fooneRetro AWS! "These are our 8 bit datacenters"That would be pretty great.
(DIR) Post #Aw6hcXwg7sTo56gX8S by foone@digipres.club
2025-07-14T00:20:59Z
0 likes, 0 repeats
okay so there's a 4 byte (at least?) dialogue pointer, which has a byte for palette, portrait, and offset to the text. I've manually searched the ROM and found 195 dialogue lines in the game. of those, I can find 23 of the pointers to them.I think the reason is bankswitching. the pointers aren't universal, they're within the currently loaded banks, which changes depending on which banks are loaded
(DIR) Post #Aw7iT228SvJ51Uf5qS by foone@digipres.club
2025-07-14T04:21:48Z
0 likes, 0 repeats
>python dialogue.pystart_offset=50315,is_bottom=False,palette=4,portrait=48,address=51121YOU'RE NOTA QUITTER,ARE YOU!?WHERE'S YOUR CAMP?start_offset=50319,is_bottom=True,palette=0,portrait=144,address=51172HEH, HEH, HEHYOU HAVEN'T GOTA CHANCE OFGETTING TO CAMPWITHOUT THE ROYALMEDALLIONS OF THESEVEN GOVERNORSstart_offset=50323,is_bottom=True,palette=0,portrait=144,address=51286I'M TOM GUYCOT,THE CHIEF OFGOVERNORS, ANDI'LL BE WAITINGFOR YOU IN MYDESERT FORTRESSON ROUTE 33!
(DIR) Post #Aw7iT3DW460Kh4zhDs by foone@digipres.club
2025-07-14T04:21:52Z
0 likes, 0 repeats
start_offset=50327,is_bottom=True,palette=127,portrait=128,address=64864[End of Dialogue]
(DIR) Post #Aw7iT4QfYg7USA9iMa by foone@digipres.club
2025-07-14T06:13:27Z
0 likes, 0 repeats
switched to an emulator with more debugger (Mesen) and found the code that parses the dialogue entries
(DIR) Post #Aw8Lvn9Om70XTVlPlY by SvenGeier@mathstodon.xyz
2025-07-14T19:27:28Z
0 likes, 0 repeats
@foone Hah!