Discussion:
Has anyone created a new Silverball Mania ROM?
(too old to reply)
High Noon
2011-08-22 17:47:21 UTC
Permalink
Searching through past RGP posts, I've found a lot of discussion on ho
much better SBM would be if the center loop didn't spot a letter. Ha
anyone developed a new ROM that would do this?

--Luk

--
High Noo
This USENET post sent from http://rgparchive.co
seymour.shabow
2011-08-22 18:25:56 UTC
Permalink
Searching through past RGP posts, I've found a lot of discussion on how
much better SBM would be if the center loop didn't spot a letter. Has
anyone developed a new ROM that would do this?
It would be amazingly trivial to do this.

u1 offset a8: change 8d 1c 8d to: 20 02 14

no more spot from horseshoe
High Noon
2011-08-22 19:02:19 UTC
Permalink
Thanks Scott! I'm impressed...how did you know that specific cod
seemingly off the top of your head? Or even better, if I didn't hav
your help, what resources would I use to find that out?

I've recently started collecting some classic Sterns and Ballys and
thought it would be fun write some custom ROMS for them, starting wit
the Silverball Mania. I've been writing code for a long time, but thi
is my first exposure to assembly. Also, I've been reading Oliver'
site:

http://www.pinball4you.ch/okaegi/pro_pck.html

Thanks,
Luke
Post by seymour.shabow
Post by High Noon
Searching through past RGP posts, I've found a lot of discussion o
how
Post by High Noon
much better SBM would be if the center loop didn't spot a letter.
Has
Post by High Noon
anyone developed a new ROM that would do this?
It would be amazingly trivial to do this.
u1 offset a8: change 8d 1c 8d to: 20 02 14
no more spot from horsesho
--
High Noo
This USENET post sent from http://rgparchive.co
KenH
2011-08-22 20:51:47 UTC
Permalink
Thanks Scott!  I'm impressed...how did you know that specific code
seemingly off the top of your head?  Or even better, if I didn't have
your help, what resources would I use to find that out?
I've recently started collecting some classic Sterns and Ballys and I
thought it would be fun write some custom ROMS for them, starting with
the Silverball Mania.  I've been writing code for a long time, but this
is my first exposure to assembly.  Also, I've been reading Oliver's
http://www.pinball4you.ch/okaegi/pro_pck.html
Thanks,
Luke
Post by seymour.shabow
Post by High Noon
Searching through past RGP posts, I've found a lot of discussion on
how
Post by High Noon
much better SBM would be if the center loop didn't spot a letter.
Has
Post by High Noon
anyone developed a new ROM that would do this?
It would be amazingly trivial to do this.
u1 offset a8: change 8d 1c 8d to: 20 02 14
no more spot from horseshoe
--
High Noon
This USENET post sent from  http://rgparchive.com
If you're interested, I wrote a program that does the patching for
you, all you have to do (like it is no small feat) is write the ASM
code with ORG statements (lets the assembler know where to put the
patch). I have only written a few small patches, that change how the
score is displayed, turn a light on or off, and so on--so nowhere near
Scott's level of recompiling whole roms from scratch. But the program
makes writing and testing/debugging small patches easier than doing it
manually with a hex editor. It may have bugs, with different systems/
rom configurations, since I've only tested it on a few Bally games.

You can download it here:

http://members.cox.net/k.huber/gameroom/projects.htm
High Noon
2011-08-22 21:05:57 UTC
Permalink
Post by KenH
If you're interested, I wrote a program that does the patching for
you, all you have to do (like it is no small feat) is write the ASM
code with ORG statements (lets the assembler know where to put the
patch). I have only written a few small patches, that change how the
score is displayed, turn a light on or off, and so on--so nowhere near
Scott's level of recompiling whole roms from scratch. But the program
makes writing and testing/debugging small patches easier than doing it
manually with a hex editor. It may have bugs, with different systems/
rom configurations, since I've only tested it on a few Bally games.
http://members.cox.net/k.huber/gameroom/projects.htm
Thanks Ken! I guess what I'm still struggling with is, for any specifi
change that I want to make on a given game, how would I know wha
location in the code needs to be patched and what the patch should be?
Sorry if these are stupid questions, but I'd like to learn. I'm willin
to put in the time needed to learn, but I'm having trouble findin
references for these kind of things.

--Luk

--
High Noo
This USENET post sent from http://rgparchive.co
KenH
2011-08-23 13:43:58 UTC
Permalink
Thanks Ken!  I guess what I'm still struggling with is, for any specific
change that I want to make on a given game, how would I know what
location in the code needs to be patched and what the patch should be?
Sorry if these are stupid questions, but I'd like to learn.  I'm willing
to put in the time needed to learn, but I'm having trouble finding
references for these kind of things.
--Luke
--
High Noon
This USENET post sent from  http://rgparchive.com
These ARE NOT stupid questions, and exactly what I was trying to
figure out, when I wanted to modify the code to display the replay
scores during attract. With some help from Scott, I was able to
figure out where certain things were in code, and how to find things
using pinmame debug. I think I'm going to write a tutorial on my web
site that explains the basics--getting started with pindebug, how to
read the memory locations, 6800 code references, and so on. Check
back on the my projects page. I'll try to get something up in the
next few days.
High Noon
2011-08-23 14:37:56 UTC
Permalink
Post by KenH
These ARE NOT stupid questions, and exactly what I was trying to
figure out, when I wanted to modify the code to display the replay
scores during attract. With some help from Scott, I was able to
figure out where certain things were in code, and how to find things
using pinmame debug. I think I'm going to write a tutorial on my web
site that explains the basics--getting started with pindebug, how to
read the memory locations, 6800 code references, and so on. Check
back on the my projects page. I'll try to get something up in the
next few days.
Thanks Ken...that would be great! If I use your tool to change th
code, do I have to worry about checksum corrections? Also, can you pos
an example using your tool (I'm struggling with how to write the AS
patches to tell the assembler where to put the code snippet)?

I've been digging into the ROM code using a disassembler and I've bee
reading up on 6800 assembly language, I think I'm missing the final ste
of putting it all back together. I'm going to dig into the code usin
pinmame in debug mode (as Scott suggested) tonight.

--Luk

--
High Noo
This USENET post sent from http://rgparchive.co
seymour.shabow
2011-08-23 15:01:56 UTC
Permalink
Post by KenH
These ARE NOT stupid questions, and exactly what I was trying to
figure out, when I wanted to modify the code to display the replay
scores during attract. With some help from Scott, I was able to
figure out where certain things were in code, and how to find things
using pinmame debug. I think I'm going to write a tutorial on my web
site that explains the basics--getting started with pindebug, how to
read the memory locations, 6800 code references, and so on. Check
back on the my projects page. I'll try to get something up in the
next few days.
Thanks Ken...that would be great! If I use your tool to change the
code, do I have to worry about checksum corrections? Also, can you post
an example using your tool (I'm struggling with how to write the ASM
patches to tell the assembler where to put the code snippet)?
http://frhed.sourceforge.net/en/

All you need for small assembly patches.

As for checksums, when developing hacks I remove the checksum
calculation (well, it's still there, it just doesn't react to a bad
checksum)

code snippet from Stern Flight 2000 (others similar)
You see the line where I replaced an infinite loop with 2x nop's?
That's the checksum bad calculation.


L1F1F: ;rom checksum
clra
L1F20:
ldx #$1000
L1F23:
adda $00,x
L1F25:
inx
L1F26:
cpx #$2000
L1F29:
bne L1F23
L1F2B:
ldx #$5000
L1F2E:
adda $00,x
L1F30:
inx
L1F31:
cpx #$6000
L1F34:
bne L1F2E
L1F36:
tsta
L1F37:
; bne L1F37 ;checksum bad

nop
nop

L1F39:
bsr L1F88 ;checksum good, flash LED, ding
KenH
2011-08-23 16:08:46 UTC
Permalink
Post by KenH
These ARE NOT stupid questions, and exactly what I was trying to
figure out, when I wanted to modify the code to display the replay
scores during attract.  With some help from Scott, I was able to
figure out where certain things were in code, and how to find things
using pinmame debug.  I think I'm going to write a tutorial on my web
site that explains the basics--getting started with pindebug, how to
read the memory locations, 6800 code references, and so on.  Check
back on the my projects page.  I'll try to get something up in the
next few days.
Thanks Ken...that would be great!  If I use your tool to change the
code, do I have to worry about checksum corrections?  Also, can you post
an example using your tool (I'm struggling with how to write the ASM
patches to tell the assembler where to put the code snippet)?
I've been digging into the ROM code using a disassembler and I've been
reading up on 6800 assembly language, I think I'm missing the final step
of putting it all back together.  I'm going to dig into the code using
pinmame in debug mode (as Scott suggested) tonight.
--Luke
--
High Noon
This USENET post sent from  http://rgparchive.com
I'll put a simple example on my site showing how to patch using only
Frhed, then how to do it using my program.

--Ken
High Noon
2011-08-23 16:38:25 UTC
Permalink
Post by KenH
I'll put a simple example on my site showing how to patch using only
Frhed, then how to do it using my program.
--Ken
Great! Thanks a lot for your help Ken.

--Luk

--
High Noo
This USENET post sent from http://rgparchive.co
seymour.shabow
2011-08-23 17:08:50 UTC
Permalink
Post by High Noon
Post by KenH
I'll put a simple example on my site showing how to patch using only
Frhed, then how to do it using my program.
--Ken
Great! Thanks a lot for your help Ken.
--Luke
I'll add that while Ken's program is great I'm just so used to the way
I've been doing it that I use my method. Games that get extensive
modifications (flight 2000 for instance) I have the source codebase in a
format that will compile cleanly, enabling me to roll an entire new
assembly at will. (For any serious modifications you don't want to keep
interrupting routines with a jmp->somewhere->jmp back somewhere -
spaghetti code gets sloppy quick. Too many jump points to modify by
hand......)

-scott CARGPB#29
High Noon
2011-08-23 17:09:18 UTC
Permalink
Post by seymour.shabow
I'll add that while Ken's program is great I'm just so used to the way
I've been doing it that I use my method. Games that get extensive
modifications (flight 2000 for instance) I have the source codebase in
format that will compile cleanly, enabling me to roll an entire new
assembly at will. (For any serious modifications you don't want to kee
interrupting routines with a jmp->somewhere->jmp back somewhere -
spaghetti code gets sloppy quick. Too many jump points to modify by
hand......)
-scott CARGPB#29
So when you work on a game that you're going to change a lot of thing
(Flight 2000 in your example), where do you get the clean sourcecode?
Do you have a source (no pun intended) for the original, or do yo
disassemble the ROM, or do you start from scratch using something lik
Oliver's tools, or something else?

--Luk

--
High Noo
This USENET post sent from http://rgparchive.co
David Gersic
2011-08-23 18:16:47 UTC
Permalink
So when you work on a game that you're going to change a lot of things
(Flight 2000 in your example), where do you get the clean sourcecode?
DASMx is a pretty good place to start, if you're going to disassemble
ROMs.
--
| David Gersic http://www.zaccaria-pinball.com |
| Bad or missing mouse - boot the Cat (Y/n)? |
| Email address is a spam trap. Visit the web site for contact info. |
High Noon
2011-08-23 18:22:54 UTC
Permalink
Post by David Gersic
DASMx is a pretty good place to start, if you're going to disassemble
ROMs.
--
| David Gersic
http://www.zaccaria-pinball.com |
| Bad or missing mouse - boot the Cat (Y/n)?
|
| Email address is a spam trap. Visit the web site for contact info.
|
Thanks David. I've been using DASMx...I just didn't know if there was
better source for the sourcecode, so to speak, than disassembly.

--Luk

--
High Noo
This USENET post sent from http://rgparchive.co
seymour.shabow
2011-08-23 23:06:59 UTC
Permalink
Post by David Gersic
DASMx is a pretty good place to start, if you're going to disassemble
ROMs.
--
| David Gersic
http://www.zaccaria-pinball.com |
| Bad or missing mouse - boot the Cat (Y/n)?
|
| Email address is a spam trap. Visit the web site for contact info.
|
Thanks David. I've been using DASMx...I just didn't know if there was a
better source for the sourcecode, so to speak, than disassembly.
--Luke
I use the disassembler built into pinmame debug. And manually fix the
source so it recompiles correctly, with comments added.

It can be tedious, but I've learned a lot more about 6800 programming by
studying the ways they did it.
High Noon
2011-08-24 18:55:29 UTC
Permalink
Success! I was able to change the ROM to get my little hack into SB
and everything works great in Visual Pinball. Thanks so much to Scot
and Ken for getting me started. Now I need to start thinking up som
bigger hacks to tackle.

Thanks again!
--Luk

--
High Noo
This USENET post sent from http://rgparchive.co
sk8ball
2011-08-24 21:58:25 UTC
Permalink
Success!  I was able to change the ROM to get my little hack into SBM
and everything works great in Visual Pinball.  Thanks so much to Scott
and Ken for getting me started.  Now I need to start thinking up some
bigger hacks to tackle.
Such as a multiball rule for Embryon?
seymour.shabow
2011-08-25 13:54:36 UTC
Permalink
Post by sk8ball
Success! I was able to change the ROM to get my little hack into SBM
and everything works great in Visual Pinball. Thanks so much to Scott
and Ken for getting me started. Now I need to start thinking up some
bigger hacks to tackle.
Such as a multiball rule for Embryon?
Like 2x scoring during multiball?
KenH
2011-08-23 21:47:30 UTC
Permalink
Post by KenH
I'll put a simple example on my site showing how to patch using only
Frhed, then how to do it using my program.
--Ken
Great!  Thanks a lot for your help Ken.
--Luke
--
High Noon
This USENET post sent from  http://rgparchive.com
Tutorial is up.

http://members.cox.net/k.huber/coder/
High Noon
2011-08-23 22:26:06 UTC
Permalink
Post by KenH
Tutorial is up.
http://members.cox.net/k.huber/coder/
Excellent tutorial Ken! I can't wait to give it all a try.

--Luk

--
High Noo
This USENET post sent from http://rgparchive.co
seymour.shabow
2011-08-22 22:01:37 UTC
Permalink
Thanks Scott! I'm impressed...how did you know that specific code
seemingly off the top of your head? Or even better, if I didn't have
your help, what resources would I use to find that out?
pinmame debug is all you need, available on Oliver's site.

It took me about 10 minutes total from when you posted and I saw it to
my reply, but it helps that I know the stern architecture intimately.

Compared code for the top rollovers (that can spot a letter - they will
still do so) to the code for the horseshoe lane - one subroutine does it
all. branch over subroutine and adjust checksum

20 02 is bra 2 steps forward.... 14 is the checksum correction.


Now that I think of it, the patch will crash if you have the dip set to
award 1 letter instead of 2.

correction for that:

offset A6: 01 01 20 02 3e

01 is NOP
3e is the new corrected checksum
High Noon
2011-08-22 22:01:37 UTC
Permalink
Post by seymour.shabow
pinmame debug is all you need, available on Oliver's site.
It took me about 10 minutes total from when you posted and I saw it to
my reply, but it helps that I know the stern architecture intimately.
Compared code for the top rollovers (that can spot a letter - they wil
still do so) to the code for the horseshoe lane - one subroutine does i
all. branch over subroutine and adjust checksum
20 02 is bra 2 steps forward.... 14 is the checksum correction.
Now that I think of it, the patch will crash if you have the dip set t
award 1 letter instead of 2.
offset A6: 01 01 20 02 3e
01 is NOP
3e is the new corrected checksum
Excellent! Thanks Scott...I can see it all coming together in my min
now. I will give it a try!

--Luk

--
High Noo
This USENET post sent from http://rgparchive.co
SDFpinhead
2011-08-23 01:06:20 UTC
Permalink
I don't know crap about ROMs but will be restoring a SBM when CP
playfields come out.. I would be interested in purchasing one if you ge
it figured out

--
SDFpinhea
This USENET post sent from http://rgparchive.co
High Noon
2011-08-23 14:32:16 UTC
Permalink
Post by seymour.shabow
pinmame debug is all you need, available on Oliver's site.
It took me about 10 minutes total from when you posted and I saw it to
my reply, but it helps that I know the stern architecture intimately.
Compared code for the top rollovers (that can spot a letter - they wil
still do so) to the code for the horseshoe lane - one subroutine does i
all. branch over subroutine and adjust checksum
20 02 is bra 2 steps forward.... 14 is the checksum correction.
Now that I think of it, the patch will crash if you have the dip set t
award 1 letter instead of 2.
offset A6: 01 01 20 02 3e
01 is NOP
3e is the new corrected checksum
Scott, are you using a hex editor to actually make the code change? I
so, how does the checksum correction fit in?

--Luk

--
High Noo
This USENET post sent from http://rgparchive.co
seymour.shabow
2011-08-23 15:07:45 UTC
Permalink
Post by seymour.shabow
pinmame debug is all you need, available on Oliver's site.
It took me about 10 minutes total from when you posted and I saw it to
my reply, but it helps that I know the stern architecture intimately.
Compared code for the top rollovers (that can spot a letter - they will
still do so) to the code for the horseshoe lane - one subroutine does it
all. branch over subroutine and adjust checksum
20 02 is bra 2 steps forward.... 14 is the checksum correction.
Now that I think of it, the patch will crash if you have the dip set to
award 1 letter instead of 2.
offset A6: 01 01 20 02 3e
01 is NOP
3e is the new corrected checksum
Scott, are you using a hex editor to actually make the code change? If
so, how does the checksum correction fit in?
Yes, I use http://frhed.sourceforge.net/en/ - the 3e in the recent
example is the checksum correction (as opposed to an assembly hexcode)
-it doesn't matter where the checksum ends up being, as long as it's in
the $400 byte block of code (for bally) or somewhere (anywhere) for
Stern. The bally ones are pretty easy to figure out in pinmame - start
pinmame, let it fail the checksum (no first flash) - go into pinmame, x
register will be the $400 block's start you have to correct, and the A
accumulator will be the checksum correction.

Stern games you have to figure out what to sum it to for correction -
whatever the A accumulator is set to, do a $100 - A to get the
correction. (Or just do a COMplement A)

Since the code to spot a letter is never used (above) I just put the
checksum "right there" instead, after setting the byte I was going to
use for it to 00.
High Noon
2011-08-23 15:23:27 UTC
Permalink
Post by seymour.shabow
Yes, I use http://frhed.sourceforge.net/en/ - the 3e in the recent
example is the checksum correction (as opposed to an assembly hexcode)
-it doesn't matter where the checksum ends up being, as long as it's i
the $400 byte block of code (for bally) or somewhere (anywhere) for
Stern. The bally ones are pretty easy to figure out in pinmame - star
pinmame, let it fail the checksum (no first flash) - go into pinmame,
register will be the $400 block's start you have to correct, and the A
accumulator will be the checksum correction.
Stern games you have to figure out what to sum it to for correction -
whatever the A accumulator is set to, do a $100 - A to get the
correction. (Or just do a COMplement A)
Since the code to spot a letter is never used (above) I just put the
checksum "right there" instead, after setting the byte I was going to
use for it to 00.
Thanks a lot for your help...I'll give it a go tonight.

--Luk

--
High Noo
This USENET post sent from http://rgparchive.co
homebrood
2011-08-23 17:21:57 UTC
Permalink
Searching through past RGP posts, I've found a lot of discussion on how
much better SBM would be if the center loop didn't spot a letter.  Has
anyone developed a new ROM that would do this?
--Luke
--
High Noon
This USENET post sent from  http://rgparchive.com
Even when it does spot a letter I find this game plenty hard as long
as you don't have thos tiny posts in the center loop, and replace them
with full size posts. That loop is way too easy with the mini posts in
there. I'm not a really good player though, just average, for better
players I can see why you might want the option...

Tom
High Noon
2011-08-23 17:29:23 UTC
Permalink
Post by homebrood
Even when it does spot a letter I find this game plenty hard as long
as you don't have thos tiny posts in the center loop, and replace them
with full size posts. That loop is way too easy with the mini posts in
there. I'm not a really good player though, just average, for better
players I can see why you might want the option...
Tom
Thanks for the input, Tom. I just picked up my SBM so I'll have t
check what kind of posts are in there and maybe replace them. I'm no
that good of a player either, so maybe just doing that will be enoug
for me. To be honest though, I wanted to learn how to modif
Bally/Stern ROMs and I thought this would be an easy first project.

--Luk

--
High Noo
This USENET post sent from http://rgparchive.co
BigBird0000
2012-10-25 23:29:51 UTC
Permalink
Has anyone disassembled the code for this game w/comment
(3 MPU chips + 1 Sound) that they are willing to share

Does anyone want to share some modified code

TI

This is to bump this thread also

--
BigBird000
This USENET post sent from http://rgparchive.co
j***@gmail.com
2015-11-23 17:53:37 UTC
Permalink
Searching through past RGP posts, I've found a lot of discussion on how
much better SBM would be if the center loop didn't spot a letter. Has
anyone developed a new ROM that would do this?
--Luke
--
High Noon
This USENET post sent from http://rgparchive.com
Bumping this old post! Has anyone done a Silverball Mania ROM?

Thanks, Joe

Loading...