Mopple Posted April 2 Posted April 2 (edited) First, I would hope that I'm not the only one who has thought about that: Wouldn't it be great to implement Lane Change into all the late 70s and early 80s tables before "Firepower"? I played "Gorgar" a lot lately and every time the ball is about to go through the top lanes I automatically push the right flipper button to change the lanes - alas... I don't know much about the actual programming necessary but would it be a big thing to implement that? IMHO it would make the table (and all the others from that time span) feel and play so much more modern! Any chance maybe? Edited April 5 by Mopple
MauiPunter Posted April 2 Posted April 2 It's definately a cool idea, and someone could make a mod like that. I do know, many people like authenticity, but I dont see why this could not be an option for those who want it. Maybe you could research a little into how the sausages are made and see if you could create such a mod. Sounds like a simple but wonderful opportunity to learn about how VPX works.
deadmanworking Posted April 3 Posted April 3 (edited) Probably doable but would need quite a bit of code, since the rom controls everything you'd need to bypass it and feed your own status back. You'd probably write a new routine to change the lane lights with the flippers, and deactivate the real switches in the lanes, then in case the lit up lane is triggered, feed back the value of a "virtual" switch back to the rom as if the original switch was pressed. Yes like @MauiPunter says why don't you try it yourself, using Claude Code you'd probably have it up an running after a few passes. Edited April 3 by deadmanworking
Mopple Posted April 3 Author Posted April 3 (edited) But what's the difference between the rom data and the vbs script found in the table vpx file? I can't change the rom data obviously so what would have to be changed? Could AI be trained to detect and know which part of the code has to be modified? Edited April 3 by Mopple
deadmanworking Posted April 3 Posted April 3 The table just represents a frontend that tells the rom emulator what's happening (which switches are hit for example) and in turn interprets what it receives from the rom as states (for example, light up a lamp). The table is "dumb" so it does not know what state it is in, it's more or less a switchboard. I already told you what needs to be changed in the other post and that you could use Claude Code to research and implement those changes.
Mopple Posted April 4 Author Posted April 4 The unzipped rom files of a table (flashgdn.zip as an example) are named something like this: 834-18_5.532 720-52_6.732 What program would I use to open these files so that i could think of changing any lines or code in them? A google search yielded no results, not even AI. Thanks in advance!
Cliffy Posted April 4 Posted April 4 16 minutes ago, Mopple said: The unzipped rom files of a table (flashgdn.zip as an example) are named something like this: 834-18_5.532 720-52_6.732 What program would I use to open these files so that i could think of changing any lines or code in them? A google search yielded no results, not even AI. Thanks in advance! did you search for williams system 6 pinball programming? https://pinside.com/pinball/forum/topic/7eleven-tools-for-disassembling-and-compiling-system-6-11-games
Mopple Posted April 5 Author Posted April 5 (edited) I would like to share with you, if you're interested, my little conversation with ChatGPT I just had about writing new code for older solid state pinball tables...: Q: We're talking "virtual pinball" here. My question: Is there a way to re-program or modify the code used in those game roms to implement the "lane change" feature, which was introduced in 1980's "Firepower"? The late 70s solid-state pinball tables have fixed lanes so when the ball rolls over a top lane contact (typically A, B and C lanes) it lites up the corresponding lamp. You have to roll over every top lane to lite all the A, B and C lamps. With the "lane change" feature you can switch the lane that is to be lit. A: Short answer: yes, but not in any simple or “drop-in” way—and for late-70s solid-state games it’s usually much harder than it sounds, especially if you’re trying to retrofit something like lane change into ROMs that were never designed for it. Let’s break it down in practical terms. 🧠 How “lane change” actually works On Firepower, lane change isn’t just a lamp trick—it’s a software-controlled feature tied to the flipper input. The right flipper button is read by the CPU The program rotates which top lane lamp is lit The lamp matrix is updated dynamically each time you press the button (Wikipedia) So the key difference vs late-70s games: 👉 Earlier games = hardwired or simple state logic 👉 Firepower-era = CPU-managed state machine with input-triggered lamp cycling ⚙️ Can you modify older ROMs to add it? ✔️ In theory: yes You can: Dump the ROM Disassemble the code (6800/6808 assembly typically) Add logic to: Track lane state Hook into flipper switch input Rewrite lamp control routines Reassemble and burn a new EPROM People do modify ROMs and burn custom EPROMs for these machines (Robert Winter's Twisted Place) ❗ In practice: extremely difficult 1. ROM space is tiny These games often had very limited memory Even Firepower needed extra ROM capacity compared to earlier machines (pinrepair.com) 👉 Adding a whole new feature may mean: Rewriting large parts of the code Or removing existing features to make space 2. Code is assembly + highly optimized Written in tight 8-bit assembly Often uses: shared routines lookup tables bit-packed lamp matrices From community experience: “You’d have to be really good at decompiling ROMs and assembly… ROM is pretty packed.” (Reddit) 3. Hardware expectations differ Late-70s games often: Don’t poll flipper buttons the same way May not have software control over those lamps at all (or only limited) So you might also need to: Rework switch scanning logic Reassign lamp matrix behavior 4. Checksums & boot validation Many ROMs include checksum routines If you change code → must fix checksum or game won’t boot 🧩 Easier alternatives (what people actually do) Option 1 — Rewrite the game logic (modern approach) Using replacement controller boards (e.g. Arduino/P-ROC style systems): You ignore the original ROM entirely Reimplement rules in modern code This is often easier than patching original ROMs Option 2 — Use a later ROM/game as a base Because: Lane change requires architectural support It’s easier to start from a system that already has it (System 6+) Option 3 — Virtual Pinball (your context) In Visual Pinball / VPinMAME: You usually cannot easily change ROM behavior But you can: Script around it in the table (limited) Or use a different ROM that already has the feature ROM logic itself is still “black box” unless you go full reverse-engineering 🧠 Bottom line ✔️ Technically possible to add lane change to older ROMs ❌ Not practical unless you’re comfortable with: 6800 assembly ROM disassembly/reassembly hardware-level constraints 👉 The reason lane change “appears” in 1980 isn’t just an idea—it’s because the hardware + ROM architecture finally made it feasible. If you want, I can walk you through what a minimal “lane change” routine would look like in pseudo-assembly or how you’d hack it into a System 6 ROM—that’s where it gets really interesting. ------------------------------------------------------ Q: OK, so far so good. But can you do that? I mean the following of your suggestions: ------- Option 1 — Rewrite the game logic (modern approach) You ignore the original ROM entirely Reimplement rules in modern code --------- Could you write or design a new game code that would work for a VPX pinball table ? What would you need for that? The complete ruleset of a given game, eg.1979's GORGAR? Could you then include the lane change feature into it? A: Yes — I can absolutely help you do that 👍What you’re describing is actually one of the cleanest and most flexible approaches in virtual pinball. Short version: 👉 Instead of fighting the ROM, we replace it with a scripted “software brain” inside VPX (Visual Pinball X) 👉 And yes, that means we can add lane change (or anything else) even to older games like Gorgar 🧠 What this approach really is In VPX, you can run a table in two ways: 1. ROM-driven (VPinMAME) Emulates original hardware + ROM Hard to modify behavior 2. Script-driven (what you want) The VBScript in the table becomes the game logic You control: scoring lamps sounds modes rules 👉 This is how original tables, originals, and “fantasy mods” are made ✅ Can I design that for you? Yes — I can: Recreate a ruleset (e.g. Gorgar) Build a VPX script skeleton Add modern features like lane change Help structure the code so it’s maintainable 📦 What I would need from you To do it properly, I’d ask for: 1. Target table Example: Gorgar (1979) Or: are you modifying an existing VPX table? 2. Ruleset detail level Choose one: A. Faithful recreation Match original scoring/rules exactly Then layer lane change on top B. “Enhanced remake” Keep theme Improve gameplay (recommended) 3. Table assets (optional but helpful) VPX table file (.vpx) if you already have one Or just confirmation we’re building logic only 4. Desired lane change behavior Because we can go beyond Firepower: Options: Classic: flipper rotates A → B → C Both flippers trigger? Timed auto-rotate? Memory between balls? 🧩 What I would build Core systems (all in script) 🔹 Switch handling Sub LeftFlipper_KeyDown() LaneChange End Sub 🔹 Lane state Dim LaneState ' 0=A, 1=B, 2=C 🔹 Lane change logic Sub LaneChange() LaneState = (LaneState + 1) Mod 3 UpdateLaneLights End Sub 🔹 Lamp control Sub UpdateLaneLights() LightA.State = (LaneState = 0) LightB.State = (LaneState = 1) LightC.State = (LaneState = 2) End Sub 🔥 Add Gorgar-style rules on top For Gorgar specifically: We’d recreate: “Gorgar speaks” progression heartbeat speed increases drop targets multipliers bonus logic Then integrate: 👉 lane change affects: top rollover completion bonus multipliers progression ⚠️ Reality check (important) This approach is: ✔️ Powerful You can add anything (multiball, modes, modern rules) ✔️ Easier than ROM hacking No assembly No ROM limits ❗ But requires full logic rebuild You’re basically writing a pinball game engine for that table 🚀 What I can do next If you want, I can: Option 1 — Starter template Give you a ready-to-drop VPX script framework: ball handling scoring switches lamps lane change already working Option 2 — Gorgar remake (recommended) Build: full ruleset recreation lane change integrated cleanly Option 3 — Incremental We build it piece by piece: Lane system Switches Scoring Modes 💡 My suggestion Start with: 👉 “Gorgar-style remake with lane change” Because: Simple enough ruleset Very noticeable improvement from lane change Great learning project If you’re up for it, tell me: 👉 “faithful” or “enhanced”? 👉 and whether you already have a VPX table file …and I’ll start writing the actual working script structure for you. ------------------------ To be honest I didn't expect anything remotely detailed (but maybe I'm still working not enough with AI) but doesn't that sound at least promising or to put it better, absolutely freaking exciting?! I don't have the time right now to delve deeper into that but I definitely will, maybe even in the next few days. But since it's not my personal AI anybody could do that! From what I see the possibilities with AI for virtual pinball are still not even remotely explored... Edited April 5 by Mopple
Mopple Posted April 5 Author Posted April 5 To round that one off: Q: I must say this sounds extremely exciting. Since I don't have the time right now I'll get back to you! Does that sound good? A: That sounds perfect 👍 — honestly, this is exactly the kind of project that’s better to come back to when you have time to enjoy it. When you return, we can pick it up cleanly and build something really cool—whether it’s a faithful recreation of Gorgar or a modernized version with lane change and other enhancements. And the nice thing is: 👉 nothing here is time-sensitive 👉 we can go step-by-step at your pace 👉 I can keep things as simple or as deep as you want (from “just works” to full-blown system design) When you’re ready, just drop back in and say something like: “Let’s start the VPX script” …and we’ll jump straight into it. Looking forward to it — this is going to be a fun build 🎯
deadmanworking Posted April 5 Posted April 5 (edited) @Mopple yes but .. don't try to alter the ROM and don't try to fully rescript the table, both methods would really be shooting sparrows with cannons, when you can do it with just a few routines in the script. Also Chatgpt will give you a lot of blabla (and a lot of pointless emojis) so the better approach is: Download and install Claude for Desktop and switch to Code tab, select a folder where Claude can work in; Copy the vbs script from the table into a .vbs file names like the table and put it together with the table vpx file into that folder. Now state your task to Claude and approve their plan and approvals, after about 10 minutes you'll have the first implemenation done, and can test it by double clicking the table file (it will automatically use the script in the edited .vbs file.) It will not run immediately, you'll need to feedback any error messages back into Code and also what's working and what not, but you'll probably build this in one hour. I gave it a short go and it did already a few script alterations, I didn't persue this any further but as you can see with the right tools this is not so hard. Edited April 5 by deadmanworking
deadmanworking Posted April 5 Posted April 5 (edited) Ok so I fiddled around a bit more here and after around 10 more prompts the lane change is now working, the full table script with it implemented is attached. Just drop it next to the current table, or import it into the VPX editor. The biggest struggle was to not count switches and award points twice or thrice but managed to troubleshoot correctly after a few tries. I'd estimate this used around 80k tokens so maybe 3/4 of a session, which I'd consider a very easy and fast mod. If you want to adapt this to other tables i can get you a distilled markdown for Claude of what was done here, should be very easy to mod similar tables in the same manner. Gorgar (Williams 1979) v.2.0.vbs Edited April 5 by deadmanworking
Mopple Posted April 5 Author Posted April 5 @deadmanworking, I'm flabbergasted. This is simply unbelievable. As I said, at the moment I barely have time to read this, but thank you so incredibly much so far! I will look at it deeper in the following days hopefully, and I also know that AI answers often sound almost too promising or convincing, too good to be true. Everybody who's reading this, I say let's hear your suggestions, ideas and comments on this! Thanks again so far and see you soon
Mopple Posted April 6 Author Posted April 6 OK, I tried it, I put the file next to the table but upon launching the following script error comes up: line 370 Variable is undefined 'LaneChangeTimer' Any suggestions, maybe? Still thank you so very much for your work!
deadmanworking Posted April 6 Posted April 6 I 100% agree with you I'm by no means a coder but using the new tools made it finally accessible and - actually fun to implement stuff. I will be compiling this down so other people can use it on other tables as a self-contained Claude skill. (in the meantime I found that there's actually a modded Ron for Gorgar in the Rom section here, so we kinda reinvented the wheel, but it will still be valuable as a code base to easily mod other tables.) Regarding your error, yes you're right I forgot that there's one change to be done in the table file itself, let me check that again and get it to you later today.
deadmanworking Posted April 6 Posted April 6 Ok turns out it's possible to do this without altering the table in editor, here's a new updated vbs file you can try. Gorgar (Williams 1979) v.2.0.vbs
Mopple Posted April 6 Author Posted April 6 There it is: Gorgar with Lane Change - I don't believe it! Thank you, thank you, thank you. Just a couple things: *I definitely want to be able to do that myself so I'll look into that as soon as I find the time ("Claude Skills"). *I already tried to locate the apron image but no luck so far (it should be somewhere in the Image Manager (I guess!). Why does this have to be so difficult and hidden? I just want to change the text on the right side of the apron from "Flipper Button" to "Lane Change". Any idea here, maybe? *Apart from trying to implement Lane Change on tables like FLASH, my next (and probably only) step for GORGAR would be to put in a two-ball multiball, and I thought of it something like this: You have to get 3x multiplier, then shoot the ball in the captive hole on the left (where it stays), and in order to get the two-ball multiball you have to then shoot the second ball in the upper left corner into the "Pit" and then the multiball starts. Would Claude understand that in plain language? Anyway, deadmanworking, I bow my head in respect and gratitude, for the Lane Change but also for introducing me to Claude Code (of which I hadn't heard before), because this seems to be a game changer, to say the least, if not a small revolution in coding. But how would I implement the Lane Change into other tables now? I guess just copying the code lines in the new VBS script and pasting it into other scripts doesn't do the trick... Happy Easter Monday! NB: I'll have to look up that modded GORGAR rom you mentionend! Does it do the same thing already?
Thalamus Posted April 6 Posted April 6 @Mopple : If you think that you can get Claude or who ever to implement anything more advanced than a lane change ... forget it. Doing stuff like this, is kind of the same thing we've done for years. Deleting balls and adding them somewhere else. Typical drain. Only small things like this can make the game confused. For what you mention you would have to hack the rom itself and that requires real skills. And I really doubt you can get any AI to do that for you. Btw. playing Gorgar - forget lane changes, it is non essential. What you want to learn on that machine is to "shatz". Shooting very very late the ball to the opposite lane change. That is where the big score really is hidden.
deadmanworking Posted April 6 Posted April 6 @Mopple attached you will find a self-enclosed Claude skill that should be able to implement the lane change into other tables as well. Set up the Code environment as I described above, extract the contents of the zip file there (folder vpx_mod_lanechange), and then you only need to drop the vpx file in the same folder and tell Claude in the Code tab to run the prompt in the enclosed txt file that's called run_this_prompt .. don't expect this to work out of the box, it will probably need 3 to 4 test runs to work but a lot of the knowledge is already in the markdown files there. And yes this is running completely in plain speech, in fact i copied your original post as a starting point and went on from there with around 15 further prompts (error messages or behavior i observed when testing the table).. attaching an example prompt here, this implemented removing the lights flashing after finishing all 3 lanes from ROM control to being triggered by the script (I later changed this from 4 to 6 flashes to match with the original sequence.) As for implementing completely new modes, you need to keep in mind that you can do a lot in script (light lights, trigger switches after a certain number of times etc.) but feeding this back to the rom for persistant states or additional scoring will always have to be within the frame of what's defined in the rom. For example if you would like to award 10k points for a new mode you added in the script, you'll have to find a mode or switch that scores 10k in the base game. (Or as a workaround, find a trigger that awards 1k points like the top lanes and trigger it 10 times in super short time.) So for anything you are trying to envision you'll have to get creative with what's defined in the table, but you won't be able to add new scoring, multiplier conditions or full modes or conditions besides what's already in the the rom without modding that. But figuring out what's possible within these confines is certainly a great way to learn and improve. vpx_mod_lanechange.zip
Mopple Posted April 6 Author Posted April 6 Again, this will surely take some time for me since time is limited at the moment but what can I say? Just a deep and heartfelt thank you, you are really a great and most helpful guy! Regarding what you can or cannot do within the confines of the original rom or its scoring rules, have you played or at least read through Retronimbus' GORGAR mod? https://vpuniverse.com/forums/topic/7407-new-vpx-alertgorgar-mod-by-nitronimbus/ I wrote to him asking what methods he used to accomplish all these new or extra features, like ball-save timer or "battle the Hell Bat (black ball) or a Gorgar Demon (red ball)" but he hasn't answered yet. Pretty impressive, don't you think?! I'll keep you posted of course, and should you have been bitten by the bug yourself regarding new or altered features of any kind or any table let me know! Bye for now, THANK YOU AGAIN and see you!
deadmanworking Posted April 6 Posted April 6 Thanks, will check out the mod and have a look see what's been done there. In fact I'm currently working on a mod of Attack from Mars that will be Rom-based but completely modify audio, visual and DMD and also add some modes that are not covered by the Rom, so I'm always up for flexing the muscles on table scripts to gain more experience.. Let me know when you have time to try out the Claude skills.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now