Blogs
Our community blogs
-
- 2
entries - 0
comments - 1030
views
Recent Entries
nuff said
- Read more...
- 0 comments
- 2
-
- 43
entries - 34
comments - 6972
views
Recent Entries
Latest Entry
Atari ST to Atari Jaguar Ports
I'm referring to physical releases here.
GAMES PORTED ALREADY
Chaos Engine, The
Custodian
Defender of the Crown
Fantasy World Dizzy
Gods
Head Over Heels
Speedball 2: Brutal Deluxe
Stormbringer
Treasure Island Dizzy
Xenon 2: Megablast
GAMES THAT WILL PROBABLY BE PORTED SOON (Or Eventually)Bubble Dizzy
Crystal Kingdom Dizzy
Dizzy Down the Rapids
Dizzy Panic aka Panic Dizzy
Dizzy Prince of the Yolkfolk
Fast Food aka Fast Food Dizzy
Kwik Snax (a Dizzy game)
Magicland Dizzy
Spellbound DizzyPORTS I'D LIKE TO SEE
Buggy Boy aka Speed Buggy
Gauntlet
Gauntlet II
Leisure Suit Larry
Leisure Suit Larry 2
Leisure Suit Larry 3
Lemmings
Lemmings 2: The Tribes
Pinball Wizard
Revenge of the Mutant Camels
Robotron: 2084- Read more...
- 0 comments
- 43
-
Got my last three carts from eBay vendors. Robot Tank, Starmaster and Megamania. Don't have natural light to take a picture of Megamania, so I'll provide it some other time.
Opening the Robot Tank cartridge, I found a surprise. It uses a new blob-type ROM chip with all epoxy. Of all the cartridges I opened in this project, this is the only one. So most likely this was a latter run of Activision cartridges. All the other ones had the larger chip.
Here is the new one on the left, and my original cart on the right. I ended up deciding that my original cart was going to be relabeled. The folding looked worse and the end label was ripped.
Here is Starmaster and Robot Tank with the new labels.
Here is the comparison with the original labels.
Starmaster looks "off" with the new label. The blue is a lot brighter and some of the stars in the screenshot are missing. I noticed that there are a couple more cartridges were things were a tad off. I will make a more detailed comparison in the near future.
Finally, here's a screenshot of the carts that I will most likely not relabel (except for Commando which I used my original cart to be relabeled, pictured here is the new one I got last week). My Double Dragon cartridge is in really poor shape; I'll make it my next task to find a better cartridge considering it's one of my favourite games. I only wish I had my original collection from the early 90s!!!
A few more lessons learned:
- Some cartridges are absolutely filthy. Over the 25 or so cartridges I opened to clean, I found dead bugs, substances I don't want to know about, rusty springs in the plastic prongs, and many times strong tobacco smell.
- If you place the new labels incorrectly, then there's not way to adjust it. I put my Megamania one slightly off and tried to re-apply it. It started to rip. No do-overs with these labels
- Many of the cartridges on eBay claimed to be "tested" didn't work without a proper clean or scrub. Megamania, River Raid, Kaboom, and Dolphin took ages to get working
- Surprisingly, my 7800 can play Robot Tank and Decathlon with no problems!
- Read more...
- 0 comments
-
- 49
entries - 84
comments - 12386
views
Recent Entries
Latest Entry
Custom Carol Conniptions
Following up on my last post, I did manage to finally fix and build the old Christmas Carol code. As expected, it only took me a couple of hours, maybe less, to get the code to assemble. That's with not fixing any of the old bugs -- I decided that for the sake of stability and expediency, I wouldn't mess with it.
As explained in the previous post, the issues had to do with the assembler changing behaviour. Normally this would be a bad thing to do for something already in production and in wide use. In practice, however, back then there were very few people using the assembler, and these were actual bugs that were fixed to improve its function.
There were two major bugs that tripped Christmas Carol:- QEQU directive uniqueness was fixed to be global
- NOT directive behaviour was changed from bitwise to logical
The first one is silly and it should have never been there. The QEQU directive (Quiet Equals, which assigns a global constant label without adding an entry in the symbol table), was always intended to be global, of course. However, it was given inadvertently the behaviour of the QSET directive (Quiet Set, which assigns a global variable label without adding an entry in the symbol table).
Consequently, a label defined with QEQU could change its value with multiple assignments throughout the code.
I had misunderstood this behaviour to be by design (don't ask ), thinking that the values were localized to modules or procedures. Thus, my entire codebase had a bunch of "constants" with the same label assigned different values in multiple procedures and library modules. Dozens of them. All over the place. Eek!
So you can imagine that as soon as I tried to assemble, I got dozens of errors, over a hundred of them! Fixing this was tedious, but very easy: just go one by one through all the QEQU directives in use and decide whether they were an actual constant which needed that constraint, or a re-usable label, in which case it should be changed to QSET.
Actually, it was easier than that. Assuming that the code had correct constants and variables in place, just not assigned with the correct directive -- and this is a safe assumption after all, since the game works and it's already out there -- I just changed all the QEQUs to QSETs. After doing that in a few seconds, I felt a bit dirty by doing it without thinking, so I went over them one by one anyway to review and put back a few QEQUs which were actual unique constant labels.
The second issue was a bit more subtle. Everything assembled by now, so I could run the game, but it sort of behave weirdly, and had some strange graphical glitches here and there, and occasionally crashed completely into the weeds.
It took me a few minutes to remember that several years ago, the behaviour of the NOT directive in the assembler was changed from bitwise (in which all bits in a value are flipped from 1s to 0s and vice versa, a one's complement) to logical (in which it would return 1 if the expression evaluates to zero, and 0 if it evaluates to non-zero).
This threw off all the bitwise masks composed in my code. All of a sudden, something like this:BTAB_COLOR_MSK QEQU $1007 .btab_mask QSET (NOT BTAB_COLOR_MSK)
which originally treated BTAB_COLOR_MSK as a bit-mask and then complemented its bits to set .btab_mask to 0xEFF8 (the 1s complement of 0x1007); it now treated it as a boolean value and set .btab_mask to 0x0000 (false) because the value of BTAB_COLOR_MSK evaluated to non-zero (true).
The result is all sorts of masks used to clear or set registers and variables getting corrupted with stupid wrong values. This caused the game to fail or misbehave in mysterious and seemingly random ways.
Anyway, once I remembered this change in the tool, it was simple and easy to know what was going on and fix it. I just did search-and-replace over everything that had a NOT directive in it, to use a new special "complement" macro I created, ~(). So this:.btab_mask QSET (NOT BTAB_COLOR_MSK)
became this:.btab_mask QSET ~(BTAB_COLOR_MSK)
I then just added the special macro to the already existing macro library:;; ======================================================================== ;; ;; ~(val) ;; ;; Implements a bitwise NOT operator that applies a One's Complement. This ;; ;; is useful for composing masks by negating bit fields. ;; ;; ;; ;; NOTE: The AS1600 assembler's behaviour was changed to treat NOT as a ;; ;; logical operator, so this is now required for One's Complement. ;; ;; ;; ;; ARGUMENTS ;; ;; val A value to complement. ;; ;; ======================================================================== ;; MACRO ~(val) ((%val%) XOR -1) ENDM
I had done this already in all my development branches of the game, in used for the "Special Edition" versions I made for contest winners and the like, but hadn't done it here. It worked like a charm.
OK, so after that, just a couple of hours later I had a valid source code that I could successfully assemble. Now it was time to actually do the customizations promised to CharonPDX for his charity event.
I made three simple customizations:-
Updated the "ROM-only splash" screen to mention the charity event:
-
Renamed the game in the "title" screen to "Cascadian Carol vs. The Ghost Of Christmas Presents" to reflect the gamer group to which CharonPDX belongs:
-
Added a new page to the "credits" sequence to dedicate the game:
And that's it. I just bundled that up into a ZIP archive and sent it over to CharonPDX. He's going to be playing an assortment of games, mostly Desert Bus, and perhaps a wee-bit of Christmas Carol, for charity during a 25 hour gaming marathon. So, don't forget to go visit his event page and post a donation. I did mine, where's yours? It's all for a good cause!
As the game says ...You're on a mission.The children of the world are counting on you.Can you save Christmas?
-dZ. - 49
-
- 8
entries - 5
comments - 6915
views
Recent Entries
Latest Entry
Almost have a 2708 dumper working
I have an interesting... thing... with a bunch of 2708 chips in it, and I want to read them. But I'm very wary, because I don't want to fry them.
The problem is that the 2708 needs extra supply voltages of -5 and +12 volts just to read a chip, but it also needs +26V for programming. The extra cost of all the extra voltages means almost zero programmers support it without extra hardware.
A few months ago, I tried to do the simple idea, add a socket board with some pins changed so that I could try to read it on a regular EPROM programmer as a 2716, but get the voltages from a couple of wall warts. I've heard that not having the -5 volts is crossing-the-streams-bad, so I put LEDs on both voltages. I had one other 2708 chip, and its contents were already known and it could be replaced with a 2716. It didn't go well. I got a few partial reads, then the chip died.
So on to version two. Start with making a Blue Pill board read a 2716 chip. It was not a fast process, made slower because I'm trying to break away from the mbed web site compiler. I tried to get the old version of mbed working offline, but crappiness related to Python 2 vs 3, and Apple change-protecting chunks of Python 2.7's package storage made it impossible on my laptop. And the current version of mbed is super bloated, it includes all sorts of crap that makes a minimal program be like 30-50K. Eventually I not only got my own code working, I also got gdb working in text screen (ncurses) mode... more or less, but enough to be better than printf debugging through a serial port that you don't have working yet.
(To make things even more fun, a USB serial adapter I got from Amazon seems to have a bug when its internal buffer overflows before opening up the serial port on your computer, then it spews everything forever. Sometimes it even barfs out garbage with debug symbols.)
Tonight I finally got it to dump a 2716 chip. I had been poking at the various pins, and nothing would output data. So I started a new breadboard with a bunch of LEDs and DIP switches. After more poking around, finally the LEDs come on, and I recognized the bytes at 0x000 and 0x0FF. Turns out that the pin 21 (Vpp on 2716) needs to be connected to +5V, not GND. Now I just need to set up the extra voltages and cross my fingers. Maybe tomorrow.
- 8
-
- 64
entries - 15
comments - 7267
views
Recent Entries
Latest Entry
Been Away a While
Hey all,
I've been away a while. I'll spare the details, but between family and work issues finding the time to work on anything like I did during the years of the pandemic isn't feasible for the foreseeable future. I wouldn't even be surprised if someone else built something along the lines of what I was trying to do in the meantime.
IDK, if anyone is still interested in the VCS modern controller adapter for classic systems, let me know. I might have time to get to it over the holidays. Currently, I'm between houses, and the place that where I'm currently living isn't conducive to having my electronics stuff out to work on.
Aaron
- Read more...
- 0 comments
- 64
-
- 4
entries - 14
comments - 2785
views
Recent Entries
Latest Entry
Atari 2600 Music Explorer
I've been working on a Javascript web app for exploring the Atari 2600 music palette. My goal is to provide musicians a way to visualize and identify in-tune notes and chords producible by the TIA chip. I felt frustrated looking at static diagrams with fixed tuning. I imagined better note relationships could be found if it was possible to tune the piano scale and make various adjustments.
My app overlays Atari notes onto piano notes by matching up their frequencies. The point is to tune the notes up and down for discovering relative tuning relationships. It also has a function for subdividing the piano into microtonal notes. If you have a digital piano that allows for adjusting the tuning, then you could actually play notes on the piano that are similar to the TIA note frequencies.
My app is in very early development so half the functionality isn't working. It's a 3rd version prototype, so the code is still rough. The UI will change as I figure out what the app is going to be. I'm building it in Javascript, because it's easy to build user interfaces in Javascript, and it's highly cross compatible. I'm hosting it on Github for reliable hosting that won't disappear.
I'm blogging about it to let people know what I'm working on and haven't fallen off the face of the Earth. It'd be nice to gather some friendly suggestions. It's tested in Chrome and untested in other browsers. It also requires a modern browser version. FYI: If you press UP/DOWN arrow keys in the A4 frequency field, the updating looks neat.
https://pizzatari.github.io/atari2600music/
Immediate TODO list:
- Add a circle of 5ths diagram and some geometry diagrams (updating)
- Finish the remaining options shown in the UI
- Fix the major chord detection routine
- Add detection for remaining chords
- Thoroughly validate my frequency and cent calculations are correct and use best known values
- Add a sound generator to play notes as a virtual piano
- Add an option to flip text vertically for printing the piano layout
- Think of more useful stuff to throw in
- Speed up the rendering (it's re-building everything on every change)
I got into this because I discovered a new interest in music theory and the piano after thinking about writing some Atari 2600 tunes. I had zero prior music experience, so I am still learning.
- 4
-
- 4
entries - 13
comments - 7094
views
Recent Entries
Latest Entry
Lesson 2: More fbForth 2.0 Fundamentals
This lesson will discuss more of the details of RAM organization, working with the stack and some minimal Forth programming.
The 32 KiB expansion RAM on the TI-99/4A is organized as follows in fbForth 2.0: The 8 KiB lower RAM (2000h – 3FFFh) contains four fbForth block buffers, low-level Assembly Language support, system global variables (termed “user variables”) and the return stack. You will notice here that hexadecimal numbers in this discussion (not in actual Forth code!) have a trailing ‘h’. The return stack starts at the top of this space at 3FFEh and grows downward toward the low-level support code, which currently ends at 3A03h. This allows 766 cells for address storage for deeply nested code. Colon ( : ), introduced in the last lesson, makes extensive use of the return stack. Your code can make use of the return stack as well; but, you must be very, very careful when you do, that you do not interfere with the return scheme of fbForth. In a later lesson we will discuss how to safely use the return stack because it certainly can be useful.
The 24 KiB upper RAM (A000h – FFFFh) is almost entirely free for your Forth programming pleasure. This is due to the fact that the entire resident dictionary of fbForth 2.0 resides in the 32 KiB ROM of the cartridge. The last word of the resident dictionary is TASK and resides at A000h for reasons that will be explained in a later lesson. The next available address is A00Ch. This is the beginning of the user-definable dictionary. Any words defined after this point are still part of the dictionary and, as a result, become part of the language. This is what makes Forth extensible.
The top of memory in the upper 24 KiB area contains the Terminal Input Buffer (TIB) and the base of the parameter stack at FFA0h. This means that all but 108 bytes of the upper 24 KiB area is available for your programming. This, of course, includes the parameter stack, which grows downward toward the dictionary, which grows upward toward the stack.
Now is a good time to elaborate on a comment Owen left on the last lesson, viz., verbalizing or pronouncing Forth words. Forth was intended to be a language you could speak. That is pretty much why Forth functions, routines, constants and variables are called “words”. I will try to remember to include the usual pronunciation of standard Forth words as we discuss them. A very good source for such pronunciations is Derick and Becker’s FORTH Encyclopedia: The Complete FORTH Programmer’s Manual, 2nd Edition. The words appear in ASCII order, so they are easy to find. Each of the entries includes the word’s pronunciation. An example from the last lesson is SP! , which is usually pronounced “S-P-store”. The “SP” part happens to refer to the stack pointer, which is why I had said “stack pointer store”. Another example, as Owen mentioned, is “dot-quote” for ." and “quote” for " .
Most words’ pronunciations are not difficult to figure out; but, there are a couple of heavily used words that are not obvious. One is @ , which is pronounced “fetch” because it pops an address from the stack and fetches its contents to the stack. Another is ! , which is pronounced “store”. It requires two numbers on the stack: the number to store and the address in which to store it. We will discuss these in greater detail ere long.
We turn our attention, now, to working with the stack. As mentioned last time, it operates in a LIFO mode. To show you how it works, we will use . and a new word, .S (pronounced “dot-S” and means “print stack”). .S will non-destructively print the stack contents from the bottom up (left to right), with ‘|’ representing the bottom of the stack. Recall that . pops the top number off the stack and prints it:
You will see that the system response of “ok:5” displayed after .S is executed shows the stack to have the same depth as before it was executed. Notice that the last of the five numbers entered is on top of the stack, that it is the first one popped and printed by . and that the system response shows the depth to be one less after each . . The last line demonstrates what happens when you execute a word requiring a number on the stack but with nothing on the stack. The number 11776 (2E00h) printed is significant because the bottom edge of the stack is the start of the TIB and the last thing entered at the terminal (console) was ‘ . ’, which has an ASCII code of 2Eh.
A Forth convention when defining or listing words is to show the state of the stack before and after the word executes. The stack effects (also, stack signature) are indicated by showing within parentheses what the word expects on top of the stack before it executes to the left of an em-dash (—) (or two or three dashes [--]) and what it leaves on the stack to the right. Also, the most accessible number is always on the right on either side of ‘--’, which represents execution of the word. For example:! ( n addr -- )
shows that the stack effects of ! , which requires the storage address addr to be on top of the stack and the number n, which will be stored at addr, below it. The absence of anything to the right of the execution indicator (--) shows that ! leaves nothing on the stack.
Let's do a little math with the stack. We will start with the basic four: addition, subtraction, multiplication and division. Here are those definitions with their stack effects:+ ( n1 n2 -- sum ) pronounced “plus” - ( n1 n2 -- diff ) pronounced “subtract” * ( n1 n2 -- prod ) pronounced “times” / ( n1 n2 -- quot ) pronounced “divide”
Each of these operators requires two numbers on the stack and leaves the result on the stack when it is done. Below are examples of each operation, showing the result printed with . :
As you type the above at the terminal, you will see that the operator is after the numbers it operates on. This is an example of postfix notation or RPN (Reverse Polish Notation). You are probably more familiar with infix (algebraic) notation:
1 + 2 = 3
where the operator is between the two numbers it operates on. The postfix nature of Forth is the highest hurdle you will likely need to get over. Words in Forth can certainly be defined in an infix way; but, postfix is more efficient and easier to implement.
An interesting bit of history regarding RPN: Reverse Polish Notation implies that there is a Polish Notation, which, of course, there is. Polish logician Jan Łukasiewic (yahn woo-kah-SHEH-vitch) invented prefix notation to simplify a branch of mathematical logic. The operator precedes its two operands in prefix notation. It became known as Polish Notation (PN) due to the nationality of Łukasiewic. Quite naturally, when postfix notation arrived on the scene with the exact opposite form, it became known as Reverse Polish Notation (RPN).
At the top of this lesson, we discussed memory organization, stating that virtually all of the available programming memory is one chunk between the top of the parameter stack and the most recently defined word in the dictionary. Each of these locations is readily available with resident fbForth 2.0 words:SP@ ( -- addr ) pronounced “S-P-fetch”; leaves on the stack the address of top of stack HERE ( -- addr ) pronounced “here”; leaves on the stack the address of next available dictionary location
The available RAM is the difference between these two addresses. Since the stack is at the higher address, we want to subtract HERE from the top-of-stack address:
We can make a couple of useful definitions from this:: SIZE ( -- n ) SP@ HERE - ; : .SIZE ( -- ) SIZE . ." bytes free" ;
The first one leaves the size in bytes of free RAM between the top of the stack and HERE . The second prints that number followed by “bytes free”. You may have noticed that I slipped in another word in the definitions above, viz., ( . Pronounced “left paren”, it begins a comment, which is terminated by ‘)’. Comments are ignored by the text interpreter. Obviously, the comments above are not necessary for the definitions to work. You can enter the above definitions without them. They help us to remember what the words do. We will make it a habit to include the stack effects in this way when we actually begin storing our new words in a blocks file a lesson or two hence.
We will conclude this lesson by defining one more useful word. CLS is a resident fbForth word that clears the screen but does not move the cursor. To also move the cursor to the top of the display screen, we will define PAGE for which we need another fbForth word that sets the cursor:
GOTOXY ( x y -- )
sets the cursor to the x-y coordinates on the stack. The upper left corner of the display screen is at x = 0, y = 0.
To show GOTOXY in action, we will place the cursor somewhere in the middle of the screen and print an ‘X’ there:
And, now, our definition of PAGE :
: PAGE ( -- ) CLS 0 0 GOTOXY ;
clears the screen and sets the cursor to the top left corner of the display screen.
Here is the screen after the definition and just before execution:
and after execution:
That’s it for this session. We will do more stack manipulation and programming next time. - 4
-
Latest Entry
Catalog of my current games.
I've made a catalog in .pdf form of all the available homebrew games I have for sale. (Added more games on 8-12-2022.)
Frankodragon Games Catalog_updated.pdf
-
- 4
entries - 0
comments - 2326
views
Recent Entries
(in the most scornful tone a rebellious youth could have) Yo.
It's me, Captain TOM. Syzygy1 forcefully pried me from my bodacious babe-bangin' and trapped me here on this dumb forum. They want me to ask you about your favourite Atari 2600 games. Look, I like Atari, but not the freakin' fantasy games. SwordQuest sucks. Centipede would be good if they quit the Smurf-wannabe "enchanted forest" bullcrap. So if you send me those kinds of games, then expect no response. Seriously.
Syzygy says their favourite is Fantastic Voyage. They're not even good at it! Why do they like it? They refuse to tell me, but judging about a post about Suicide Mission they made months ago, I think we all know why. Syzygy's a lunatic! Why do they even call themselves "non-binary?!" They look like a chick thru and thru! Her hair doesn't even look "boyish." Now, I love a good crazy chick, but Syzygy is ripshit bonkers! I wouldn't screw her, no matter how much she's attracted to me! She's got cooties! (Footnote: Cooties are a real menace. They're like, these bugs that live on robots, because we're glued together with library paste; I guess that attracts them or something. They itch. BAD.)
...So anyway, where were we? Oh. (sarcastic "talk-back" tone) If you have any favourite Atari games, then send them to Syzygy. (glares at the camera) And no fuckin' fanta-- (off my intimidation) ...sorry...
- Read more...
- 0 comments
- 4
-
- 3
entries - 0
comments - 601
views
Recent Entries
Latest Entry
2600 Cartridge Dumper - Menu-driven
I originally posted this in the forums quite a few years ago:
When, more recently, I revisited it to strip it down into separate roms each hard-coded for a single bankswitching type and transfer method, I also updated the original a bit.
The source is quite a mess, as I really have very little programming skills in general, and this one was actually one of my first attempts at coding in assembly, after learning it by reading the tutorials and programming threads here on AtariAge. Since I didn't really want to try to understand what my old messy menu code is doing, nor to redo it from scratch, I only hacked in a few changes and called it a day! ?
Most relevant changes (more details can be found in the source):
- removed a couple of bankswitching methods because, with the better knowledge I now have after over a decade on AA, I realized my original implementation for those couldn't actually work (I only have a small collection of carts, so I couldn't test all types).
- updated the serial output: I increased the baudrate, and also changed it to output raw binary data (previously it outputted ascii code that needed further conversion using an utility program). Now it takes about 1 second to send a 4k dump at the maximum speed (for comparison, using the audio method at the slowest speed, it takes 1 minute and a half!).
- added an output signal on the right controller port that can be used to automate the cart switching. The picture below shows the dumper I originally built (a pass-through eprom cartridge) modified with an additional 3.5mm jack: by connecting a standard male to male audio cable between it and with the matching jack on my Serial adapter/level converter (which in turn plugs into the right controller port), the dumper automatically enables the cartridge when needed. When nothing is plugged in the jack, I manually select the dumper or the cart using the switch on the side.
The menu is still the same flickering mess, with only minor changes. You're not supposed to look at it for very long, anyway, so I guess it's fine. You navigate the menu using the console switches and, optionally, a keyboard controller which is useful in "custom" mode to enter hex values directly. It used to support also a joystick controller, but I removed that when fixing the "debounce" of the switches which didn't work very well.
Here is the latest binary and the source.
And a pdf with basic instructions that I quickly put together:
Basically, after selecting the options using the menu, it works exactly like the separate versions posted in the previous blog entry. The conversion utility is the same too.
- Read more...
- 0 comments
- 3
-
- 15
entries - 25
comments - 2621
views
Recent Entries
Latest Entry
Sears Video Arcade II (Atari 2800-Japan) Restoration
I found a console only buy-it-now listing on eBay for $35 as an "untested for parts or repair only" and thought I'd get it for just the case shell to install a 7800 into it for what I think is a much classier and ageless aesthetic style case to the NTSC or PAL 7800 case styles. I thought this was the perfect candidate with a case in good, if grungy, condition. And when I opened her up, it was far worse looking on the inside with Mud Wasp nests and a good amount of rust all over the shielding and circuit board where the shielding is.
I purchased the controller separately for $20, to go with it planning to mod it into a 7800 compatible 2-button controller. I have a proper power supply already.
But for posterity I wanted to make sure that this was a board only good for some salvage, making the case free to me for hacking and modifying. Well, after thoroughly cleaning, first removing the mud nests and then using glass cleaner and a toothbrush I started scrubbing the case and motherboard inside and out, twice. Then I did the same thing again a third time on the motherboard, but with 97% Isopropyl alcohol and a toothbrush. I started to realize it was cleaning up quite nicely and !this might even be a working machine that I can restore to like-new working condition!
So my hacking and modifying the SVA2 case and a 7800 motherboard into a custom system is on hold indefinitely as I feel now I can have a pristine working Video Arcade II that I've saved instead of salvaged, something I feel my obligation to do if I can, as these vintage legacies become more and more rare because nobody bother to save them. I think this one made it out alive barely, being found, and by chance sold to the right type of person to save it.
Though it's all cleaned up now and ready to be tested to see if it's working, while cleaning the oscillator crystal broke off, I think it was about to go and my brush finished the job. But I need to replace the crystal now before I can test it and either start trouble-shooting if it doesn't work, or possibly wrapping this one up quickly as refurbish rather than full restoration. Since this baby, now that it's cleaned, is in excellent condition and really doesn't need any real "restoration" It was in a bad place and got all kinds of dirt and mud in every crevasse and rust build up around the shielding probably due to highly humid storage conditions.
Obviously was in excellent condition when it was first shoved where ever it was shoved, mostly likely a storage shed from the condition of it. And the neglect and storage conditions though purely inadequate, did keep it out of the way and from being physically damaged and to be a Diamond-in-the-rough. For $35 and a bit of elbow grease, I think I've got myself a console in excellent condition, worthy of display in a collection in full working order.
The first set of pictures below are "before" shots the second set are "after" shot once I cleaned it all up.
Before:
During cleaning process:
motherboard- 97% Isopropyl Alcohol used with a tooth brush. Cartridge slot- WD-40 used with PCB & microfiber cloth. Cart port cover repair- Loctite Superglue. RF shielding- Dremel with wire brush.
After cleaning:
Sears Video Arcade II case inside and out and console keys- Glass cleaner, toothbrush, cotton rag
Final finish restoration to plastic case (outer)- WD-40 rub down and wipe off. Full dissipation in 24 hours to original plastic sheen and luster.
Repair required: replace Oscillator crystal with broken "leg."
No photos yet
Final destination: On the Wall of Consoles (work in progress) below the Atari VCS and next to the Atari 7800.
- 15
-
- 235
entries - 1089
comments - 435573
views
Recent Entries
Latest Entry
Volleyball! (Magnavox Odyssey^2 1980)
Hi!
It's been 17 years since I started this blog! 17 years since June 12th, 2005. Can you believe it? I mean, the year 1989 was only 16 in 2005!
I'm going to try to switch to video but still type, because I love typing.
Actually I might do a subtitle file for the hell of it. Also make subtitles in Japanese (because my Japanese is absolutely horrible) and Spanish (because my Spanish is absolutely horrible and even worse than my Japanese.)
Something I do forget to mention in the video is how you "spike" the ball. I wasn't able to demonstrate it, but my computer opponent sure did. Repeatedly. When you're above the net, you move that top player closest to the net and hit the Action Button to make the ball move faster when you hit it over the net. I couldn't do that.
Also, in the video, I repeatedly mistakenly say "Magnavox Odyssey" when I should be saying "Magnavox Odyssey2" ("Magnavox Odyssey Squared" or, if superscript is unavailable, "Magnavox Odyssey Shift-6 two")
- Read more...
- 0 comments
- 235
-
- 22
entries - 17
comments - 18943
views
Recent Entries
Latest Entry
About Magic The Gathering
Hey all, it's been awhile for the old blog. I need to get some thoughts off my chest about a game that played a significant role in my life, just as much as video games have. That game is Magic: The Gathering. I was turned on to this game in 1994 by a friend, about when The Dark was released. I started off meeting more players and playing late nights at a local club, making some ever after life long friends from it.
As time went on, I began playing tournaments, mainly sealed deck tournaments, which is where I really enjoyed the challenge of building decks from random, limited card pools. I was ranked top 20 in the state of Indiana on the DCI tracked leaderboards at one time. Though, I never went to compete nationally or anything, but a player like me can build up a decent rank just through regular play and winning here and there.
By playing all these sealed deck tournaments, and purchasing booster boxes sometimes, and through lots of trading, I've managed to acquire a very nice and old collection. What I've been struggling with very recently is whether it's time to sell. The stuff is worth money, I will get thousands of dollars. How many thousands? I don't know, I would like $10,000 but unless I do all the legwork myself will have to settle for probably half that (or even less!).
My problem is that I still love to play this game! However, all of my 'Magic' friends sold their cards a long time ago, and that only leaves me with having to go back to the club to play. Do I want to start going to the club again to play Magic? Well, that means I'll want to start playing Sealed/Draft again, and that means spending money on the product, AGAIN. It's weird, but I feel like I could have 'one more run' in me before I divest myself of this collection. But, that one more run is just sinking money into the game when I should be spending that money here at home, on my home.
What is going on with me and Magic is that I feel like I have 'unfinished business' with the game, because I have constructed almost 20 decks for EDH/Commander and Casual that I just haven't had a chance to play against random opponents, or any of my friends. I want to play all these decks against people just to see if what I created with my brain was worth all the time I spent on it. Some of these decks I have played against people because they are older ones that I have developed over the course of 20 years, but some of them are new and I haven't had the opportunity.
I am extremely apprehensive about selling off my cherished Magic collection without fulfilling this need to play my decks. Once the stuff I have is gone, there is no getting it back, and there will forever be this urge I can't satisfy. I'm really struggling with it. I try to remember the negatives of the game too. I remember that along with making friends, there are a ton of annoying people that you meet as well. There are also extremely irritating rules to follow and frustrating games that are played. This is a tougher decision to make than deciding to sell video games, because cardboard Magic requires other humans to play.
I think maybe if I went to the club and found a way to play some games, perhaps I would find that I don't like the game anymore. Maybe I would find it too irritating and decide to sell after all. I don't know what to do. So usually, when I don't know what to do, I sit on it and think about it some more.
- Read more...
- 0 comments
- 22
-
Latest Entry
MY RETRO GAMING CORNER officially complete ! ???
I consider my RETRO GAMING CORNER officially complete ! ???includes 14inch TOSHIBA CRT / ColecoVision w/ AtariMax Flashcart / Retrobit SuperRetroTrio (nes, snes, genesis w/ Everdrives for each) / TG-16 w/Everdrive ??as well, I can hook up the 2600 module to ColecoVision or even play Master System using the Everdrive on the RetroTrio. Happy covering 7 platforms with 3 consoles. Wanted to cover as many platforms with what I already have in the space I am limited to.
-
- 313
entries - 824
comments - 64543
views
Recent Entries
Latest Entry
An Epic Writing Binge!
An epic writing binge?
An obsession?
Probably the latter.
Since December 12th I’ve been writing, writing an absolutely inordinate amount, an inordinate amount about something that nobody ought to care about.
Fanfic, the word of the Devil.
For the past two and some months I’ve been writing a fanfic, and I’ve finally begun to post it chapter by chapter on Ao3. The fandom in question is Warframe, a game I’ve put too many hours and too many dollars into over the past six years.
I’m posting a chapter every other day since I have a considerable backlog.
Actually considerable isn’t quite the right word for it… immense. Yeah.
As of right now I have 80 chapters written, coming to a dainty word count of a mere 230K.
If you’re interested in reading whatever the heck this is then I’ll put a link in somewhere. I tried to make the story fairly friendly to non-players but a quick trip to the wiki every so often will probably be needed.
Just a content warning though. I do not dance around most subjects, especially gore, violence, mental health problems, and suicide. This is not by any means an edgy story, but when those situations arise I don’t hold back.
- Read more...
- 0 comments
- 313
-
-
- 8
entries - 1
comment - 6135
views
Recent Entries
Latest Entry
Doom!!
I've gotten too darn deep into modding Doom levels! Geez......my brain is tired.
- Read more...
- 0 comments
- 8
-
Latest Entry
The 'Original'
While it might be called the 'Original' it certainly isn't an original 7800 by any means. It is just the name I've given to this one as it is my original childhood 7800 and is the only game console from my youth that I still own. It is largely still all stock but I did install Eckart's DevOS BIOS 1.0 back around 2004/2005 timeframe to help in providing new dumps of Activision and Absolute brand 7800 games that didn't have complete dumps previously. I believe those dumps are still here and are the ones currently available for download from the AtariAge database.
This 7800 as I would learn in much later years, appears to be somewhat of an Enigma. My parents gifted it to me for my birthday back in 1988. They bought it on (clearance sale?) for what looks to be only $59.99 at the time given the price tag on the box. Even though it was purchased in late '88 timeframe it actually contains one of the first revision mainboards and chips inside it that have '84 year date codes on them. It also has the expansion port as was common on the AT84 made units. It shows signs of factory hand soldering and other rework so I suspect this was a refurbished unit that was sold out as new or possibly one that was found laying around from old stock that initially didn't work and was repaired and then sold as new. Strange 7800 but I wouldn't want it any other way.
I also still have the original box for it although it has duct tape on it that I likely applied well over 20 years ago to keep the box held together. For over a decade the console was stored in a detached garage after I stopped playing it in 1990 sometime when we got our first 286 computer and my parents stored it away. The box is in good shape overall but is dented overall on the top causing it to not sit completely square and lift up as it were.
-
- 2
entries - 9
comments - 1623
views
Recent Entries
Latest Entry
The Retro Gaming Experience
Creating the Retro Gaming Experience
To me, sitting infront of a flat screen TV using some emulator and a wireless controller didn't really provide me with the best Retro Gaming experience. When I first tried playing the old games I used to love on emulation, it just felt empty and stale. I wasn't sure why at first, then it hit me.
When I was playing the games, I was looking for that nostalgic experience. I wanted to relive the memories of my youth. Unfortunately emulation wasn't sparking that nostalgic memory. I needed a true Retro Gaming experience.
I learned then, there was a difference between just playing a retro game at home and actually "experiencing" home retro gaming. I kinda compare it to the experience of playing one of the new Arcade One-Up machines in your house compared to actually going to a real (retro) arcade. Both experiences are extremely different even though you're playing the same game. So it's the atmosphere that plays a big part in contributing to the experience.
(I needed to bring the atomsphere back)
So a few years ago I decided to create my own Home Retro Gaming experience by creating a retro gaming nook. I had a small space in the corner of my garage to use as a template. This would take a lot of patience and hunting. Though I had plenty of Atari stuff in my collection, I still needed to hunt out the decor I needed for this retro nook.
To sit down somewhere and feel like I went back in time. The act of playing on a old CRT TV, being restricted by cords. The earthy tones of the wood paneling. The simplistic decor of the late 70s/early 80s of my youth. To design something that took me back in time would offer the true experience.
My first pick-up was this 1977 Sony Trinitron with matching TV Cart:
So during the next year-and-a-half I combed eBay, Facebook Marketplace, Craigslist, and local thrift stores. I not only needed the right decor, but I needed it cheap (I didn't really have much of a budget). Once I accumulated enough stuff to make my design reality, it was time to begin. I decided to dedicate a small corner of my garage for a retro corner.
I started with the wood paneling. Luckily, many of the home improvement stores still carries wood paneling for very cheap. After getting the wood paneling up, it was only a matter of laying the carpet down and putting the pieces in the place.
When all was said and done I only spent around $300 to complete this project. A lot of the cost savings came with patience. waiting to find the right stuff for the right price without overspending (For example, the TV and cart I was able to pick up for $30).
Here was the end result.
The final Retro Nook came out better than I imagined. Sitting in this corner playing my Atari, I almost thought I was back in 1983. Even the copper colored wing-back chair was the same chair we had a 1983 (my family never had the heart to get rid of it). People have to remember...... Back in the early 80s, most home decor were still from the 70s (unless they recently remodeled).
Add a little stale tobacco smoke to the nook to complete the Retro Gaming experience?.
For the rest of the year I often enjoyed disappearing in my little gaming area to relive some of my nostalgic memories. At times my kids even joined me. It was great to show my children how "dad" played games when he was a little boy.
During the next summer I decided to do a redesign of my retro corner. I wanted to make it a themed corner, as well as incorporate one of the old cabinet TVs that I have.
I have always been a fan of playing original hardware on original hardware. So I have multiple CRT TVs that my children and myself use. I do have a few cabinet TVs and I had one in particular I wanted to use for my new "themed" retro corner.
Here is a old cabinet TV I have in my bedroom. It's the TV I used most of the time before I designed my retro corner.
Anyways, since I wanted to redesign my retro corner I decided to do it themed design. I decided to go with a Q*Bert theme which was one of my favorite Retro Gaming characters.
It took a while to gather all the stuff I needed for the redesign. I already had an old 1970 zenith cabinet TV I wanted to use, but to find the right Q*Bert themed decor was a little challenging (more specifically the wall art). Then I found the perfect piece. A Q*Bert latch hook rug became available and I just had to have it. I was also able to acquire a orange wingback chair for $20.
Here is the final design......
This Q*Bert themed design I was extremely happy with. I decided to get rid of the table to bring back the good ole days of having to sit on the floor to play. Coincidentally enough, I finished this design right around Halloween.
I actually had a old early 80s Q*Bert costume (one of those old vinyl Collegeville costumes). My son decided to humor me and put the costume on so I could do a Halloween photo. I tried to use an aging filter to make the photo look a little less "high def". I'm not professional photographer so I did what I could with my cell phone, lol
Here was the end result.
MY 2020 DESIGN.....
In 2020 I decided to shrink up the design a little. To make something simpler, and to design a area that would mimic a image you would see on a Atari Ad. I used a different TV for this one (1984 Zenith). One of the best parts about having this retro corner is being able to spend time with my kids introducing them too the early gaming experience. Due to Covid-19 and spending a lot of time at home, we were able to spend a lot of time playing games together.
All in all, creating a authentic Retro Gaming experience is relatively inexpensive and you only need a very small space. Playing these games takes me back to a simpler time. For some reason I find it more enjoyable playing on my retro setups then I do behind a computer screen or on some other type of emulation.
The feel of the carpet, the act of inserting the cartridge, the smell of the TV tubes, the sight of the wood paneling, and being restricted to the limitations of technology all help contribute to the overall Retro Gaming experience.
This is what I remember, and I find myself actually enjoying playing these old games more as I disappear in my time machine.
COVID-19
The summer of 2020 I came across a old 1979 Sony Trinitron. I decided to do a very quick redesign to include that TV, as well as using my Space Invaders wall art I've been holding onto for a while. After I was done my children's school went to "virtual learning" due to the Coronavirus. My kids decided to turn my Retro Nook into a Virtual Learning Battle Station, (where old technology mixes with new technology..?).
My 2021 design
In 2021 I wanted to mess around with more themes within my design. I decided to start spring off right and go with a Easter theme. About 2 weeks before Easter, we got word that the Easter Bunny was going to visit our house on Easter morning. I wanted the Easter Bunny to feel welcome and it was a perfect opportunity to use my retro corner for my children to take photos with Easter Bunny. So I quickly put my Retro Corner together preparing for a special visitor.
After the visit from the Easter Bunny I want to create a ? Alien ? themed area. This is something I wanted to do for quite some time. I've always been a fan of sci-fi and I wanted this "Alien Abduction" type of feel for my 2021 design.
Green accent lights to give the whole corner a eerie glow
This alien design for a 2021 is really fun to work with and I'm constantly changing it a little. I recently got rid of the green lights and decided to give it more traditional lighting. The kids and I have a great time playing games in this area and I love the fact that my children enjoy having a little retro gaming time with their dad.
Ghostbusters Afterlife 2021
In October of 2021 I decided to change up the decorations in the room one last time in anticipation for the new Ghostbusters movie. Myself being a child of the '80s I have always loved the Ghostbusters franchise so I decided to give my retro Corner a Ghostbusters theme for the final design of 2021
2023 DESIGN
This Retro Gaming corner is just a temporary setup in my garage. I pack everything away for the winter time and then in the spring I set it up again.
One of the best parts of doing this, is that it gives me the opportunity to constantly change the design. And in 2023 I wanted to utilize this 1976 Zenith TV. I wanted to keep it a little simple this time around.
This TV was another free pick-up from someone who didn't want it anymore. I spent another year finding the right TV cart, Zenith rabbit ears, and 1976 Zenith radio. I absolutely loved how this TV set up turned out.
Here it is set up in my Retro Corner
It's been a blast having this little retro gaming corner. In the past 4 years I have been able to spend a lot of time in my retro corner playing my old Atari with my kids (and creating awesome memories). Hopefully someday I will be able to dedicate a entire room to the simplicity days before the internet. The days before the constant bombardment of social digital stress.
Thanks for reading my blog.
- 2
-
- 36
entries - 0
comments - 1227
views
Recent Entries
Latest Entry
My collection so far... 343...
River Raid II and Cosmic Commuter are on their ways... Shortlist: Still hoping for Tooth Protectors (almost had that one last sunday), Waterworld (someone beat me to it), Strawberry Shortcake (could have it but to ugly label), Missile Control (bought broken cart, still searching...) and Quadrun (maybe someone is willing to sell it to me).
Long list: too much to tell but still missing about 150...
- Read more...
- 0 comments
- 36
-
- 7
entries - 4
comments - 650
views
Recent Entries
Latest Entry
Current 2600 playlist
For anyone interested, this is my current Atari playlist for favorite single-player games that I'm playing often. There are still a lot more out there for me to explore, and I'm still seeing new things in many of these games. I keep finding more games that intrigue me.
- Read more...
- 0 comments
- 7
-
Like I mentioned in the status update, I was attempting to port WozMon to my 6502 computer, until I remembered something; I hadn't written a proper keyboard decoding routine! Well, this was mainly because I had no idea how to program something like this, and was trying to test every bit of the matrix manually to decode the key presses. That was obviously much too inefficient, and it didn't even work because there were so many lines of code, resulting in out of range branches. Not good.
To get an idea on how to write keyboard decoding routines, I took a peek into the C64 programming scene. Apparently the C64's keyboard is a pain in the ass to read without using the built in kernal routines, and I didn't understand much of the code I read. However, there was one thing I realized that had never occurred to me; I had to use tables. From here, I figured that if I could somehow have the computer calculate the X and Y coordinates of the pressed key on the matrix, I could use those values to find out which key was pressed with the table.
The first step was to draw the keyboard into an 8x8 matrix. This was trivial, as I'd originally designed the keyboard layout from an 8x8 matrix to begin with. Here's what I drew compared to the actual keyboard layout.
The number labels were later used for verifying that you could correctly calculate the memory address in which the character would be stored in using the x and y coordinate values.
Now I needed to write some code. My old non-working keyboard code had set each of the 8 "rows" high to calculate which row the pressed key was in, then cycled through each bit in that row to figure out precisely which key it was that was pressed. This time, not being an idiot, I used a counter (the X register) and some ROL instructions to cycle through each row. If the keyboard returned a value that wasn't zero, it would mean that a key in that row was pressed, so it stored the value that was returned by the keyboard and the row number (0-7) to a location in memory. Once it was done processing every row, It jumps to a subroutine that figures out what column the pressed key is in. It uses LSR instructions to send each bit to the carry, then uses BCS to test the bit. If carry is set, it jumps to a subroutine that saves the column number (0-7) to a location in memory. Once both the row and column numbers (X and Y coordinates) are calculated, the computer multiplies the row number by 8 then adds the column value to it. The computer saves that value to the X register, then loads a value from the key table, indexed by the X register. And just like that, the computer has figured out which key was pressed.
I haven't made the key table yet, so this code isn't quite functional yet. However, that's only because I don't know what kind of values the MC6847 wants for each character in its internal character ROM, and there seems to be no documentation on this anywhere (the datasheet simply says "6-bit ASCII", well, what the hell kind of 6-bit ASCII?) Once I get the video chip circuitry working (goddammit AliExpress, I want my inveters now!) in hardware I can figure it out manually, then I'll make the key table. I shall work tirelessly so I can feature the working keyboard and hopefully WozMon in the next blog entry. Before I end this entry however, here's the assembly code for the keyboard routines. (BEWARE of massive numbers of comments. I had to do this because I'd for sure forget what this code was doing within three days of not looking at it. Maybe this is overdoing it, but better safe than sorry.)
kbpreinput: LDA #%00000001 ; each bit will be set once to detect row LDX #$08 ; counter kbinput: DEX ; decrement X STA KBOUT ; send the row test bit to the keyboard matrix PHA ; the RTB needs to be reused so gotta be pushed to stack LDA KBIN ; load the response value from keyboard BNE kbrowtrue ; if value is not zero then key in that row was pressed PLA ; if not then load RTB to accumulator ROL ; rotate left to set next bit high CPX #$00 ; check if counter is zero BNE kbinput ; if it isn't, repeat loop LDX #$08 ; if it is, reset counter for next subroutine LDA KBSTORE ; load the row value (stored in following subroutine) JMP kbindex ; jump to keyboard index subroutine kbrowtrue: STA KBSTORE ; store row value STX KBROW ; store row number PLA ; restore RTB ROL ; rotate left to set next bit high DEX ; decrement counter CPX #$00 ; check if counter is zero BNE kbinput ; if it isn't, repeat loop LDX #$08 ; if it is, reset counter for next subroutine LDA KBSTORE ; load the row value kbindex: DEX ; decrement counter LSR ; test bit 7 (column 8) BCS kbcoltrue ; if it is 1, then key in that column was pressed CPX #$00 ; check if counter is zero BNE kbindex ; if it isn't, repeat loop kbcoltrue: STX KBCOL ; store column value kbpredecode: LDA KBROW ; load row number to calculate key location on table LDX #$08 ; set counter (multiply by 8 = add 8 times) kbdecode: DEX ; decrement counter ADC KBROW ; add row number (times 8) CPX #$00 ; check if counter is zero BNE kbdecode ; if it isn't, repeat subroutine ADC KBCOL ; if it is, then add the column value TAX ; transfer final value to X LDA keytable,X ; load the character corresponding to the calculated value from key table keytable: (insert table here)
I'll see ya in the next entry.
- Read more...
- 0 comments
-
Latest Entry
General Humpback
Disclaimer
I'm not responsible for possible data loss neither i'm responsible for how you will use what i post here.
Feel free to use it for your own pleasure, the hacks aren't meant to be unsporting - vice versa it is.
There is a good reason why i don't hack recent games they might be still further developed, thus you will find here only games from the era 1978 to 1990.
Sure the main reason is to add an extra life or two and some altering to the border color to mark the hacks as well adding of an extra title text string to differ the hacks already by their title screen.
If you are not interested in editing the config files then you can safely bypass this bla bla and scroll down to the first game "BUMP 'N' JUMP"
Before i post the hacks the things you will probably need and need to know to work with them.
Tools i use to edit text files and binaries:
and of course a calculator in programmer mode to work with the hexadecimal numbers (there is of course one in TinyHexer but it's not as comfortable to me, it overlays the editor window).
Notepad++ comes handy in all kind of situations apart from being a notepad (aha!) it is almost a developing environment, it understands quite a lot of scripting languages and can even help you to debug them.
Even if "unknown" like our .cfg files it is still fantastic for editing since you can mark, copy/cut, paste blocks of text (unrelated to line or column), simply press ALT to mark a free rectangular area (block) with the mouse in the text file. Using this it is a sneeze to i.e. copy a section out of a disassembled code, to copy snippets you probably put aside for a re-use - most what you need for a productive working.
Notepad++ doesn't forgets anything, you can have a power failure it will remember the last edit you made even without that you saved the work - isn't that cool?
One could teach notepad++ how to interpret the .cfg file and then even here comments and data, values, addresses could have different colors.
If there is interest i can see if i can make a template.
What you will often use is the dis1600.exe included in "SDK-1600" (or the complete jzIntv suite). I suggest to write a small batch like following on which you can simply drop the .bin to disassemble it (it must have the suffix .bin to be recognized).
dis1600 %1 %1.asm
The batch in this state will belong to "...\jzIntv\bin" and will output a file named as the input simply with .asm as suffix (after .bin, its a very simple batch but far enough for the purpose) but i assume it's the directory where you will edit your files (where else).
Notepad++ is familiar with the suffix .asm and will show the data in separate colors which makes reading it almost to a pleasure (what i haven't tried yet is to execute an .asm it should at least jump to the proper labels). Personally i keep the disassembled data and also all notes or code snippets in a special sub-directory to keep the dir "bin" neat. Finished projects i move completely out of sight to an archive where i keep all my inty games in separate zip files together with the additional material - whatever that might be from artwork to code.
The hex editor i use to search for values it is to me often more efficient to browse the .bin as to refer to the disassembled data, that is some i "smell" already only by looking at the code. Keep in mind that a decle equals to a 8bit word in length that means addresses in bytes shown in the editor must be divided by 2 to get the addresses in decles, i will refer here to decle if i write "word", i.e. "count 10 words back" means decles or words in length. Further i will mark decles with a $ sign and mark hex values with the usual 0x prefix. It becomes also handy if you like to extract a section of code i.e. the title code because you have to keep it for a new title or to extract a sfx or music data when you localized the address using the disassembled data.
Further it is a big help to write strings, just enter your text in the editor and receive the proper values they even can be copied to notepad++ (use the TinyHexer script "copy as formatted hex text" for this).
BUT
For a simple use of my already prepped .cfg files you won't need to know all this, it's just if you like to alter them. Unlike in my thread (gernot is a lame cheater) i will link here the complete stuff i have just all in zip files and not as code to be copied and pasted, means everyone should be able to use them together with the .bin and jzIntv (or bin2rom if you like to use them in a different emulator).
NOTE:
Posted .cfg files respectively "hacks" will usually come as four different files, one unaltered but with a probably altered title screen e.g. adding of a small sfx or tune, one which i label "advantage" this adds usually two lives to the usual amount as a little advantage and will have usually a blue text telling "advantage" and a blue border (if that was possible to hack), "lethal" tells what it is just a single life, personally i think this is the most interesting thing instead to hack countless lives just a single one, for certain games like "Astrosmash" or "Buzz Bombers" this makes no big difference since you get rewarded with countless lives in this games, "lethal" comes usually with red lettering and a crimson border and finally "trainer" for which i use the maximum amount of lives possible this isn't always 256, sometimes only 128, sometimes 99 in one case only 19 "Zaxxon", it depends on how much the game accepts, "Zaxxon" displays the ships and as soon as they overflow the screen it terminates since we have 20 characters for a line only 19 ships are possible here, "trainer" has usually a dark green text showing "trainer" and a dark green border, the colors might vary when it doesn't suits to the game but this is the rule i use. Sometimes i could not change the border color (yet) for all games i searched especially the "GAME OVER" string this will always receive a different color to mark a hacked game,but even this depends on if it was possible a few games are not to disassemble (i.e. Venture) it seems to be encrypted but at least i could a grip on the lives amount and the frickin' border color which has cost me some nerves.
Additional goodies to edit config files
First a quite handy text file where you can copy useful snippets from, i suggest to use it if you like to edit the linked config files and also to expand it by need.I use it very often especially the section with the values from 00 to ff for addressing, the method is to copy a desired section out of it and paste it to your project after mark again a block in front of them and enter
the base address plus parse command to it e.g. "p 60" you will receive a row of addresses to parse in this example from $6000 to end of the selection, it makes life much easier. The same you can apply when you inserted new text string sections, lengthen them or shorten them, just block mark a section to change and paste the new row of values over it. Try it out it sounds far more complicated as it is.
Spoilercopypaste.txt text snippets 61 ; a 61 ; a 6c ; l 74 ; t 63 ; c 64 ; d 72 ; r 65 ; e 72 ; r 75 ; u 76 ; v 63 ; c 74 ; t 61 ; a 73 ; s 61 ; a 61 ; a 68 ; h 69 ; i 74 ; t 6e ; n 64 ; d 61 ; a 6e ; n 6f ; o 74 ; t 65 ; e 6c ; l 65 ; e 6d ; m 61 ; a 72 ; r 67 ; g 65 ; e 49 ; I 59 ; Y 6e ; n 6F ; o 73 ; s 75 ; u 6f ; o 72 ; r 6d ; m 53 ; S 6e ; n 6F ; o 69 ; i 66 ; f 61 ; a 74 ; t 56 ; V 20 ; 69 ; i 55 ; U 73 ; s 6E ; n 69 ; i 6C ; l 6f ; o 69 ; i 6e ; n 6D ; m 69 ; i 74 ; t 65 ; e 64 ; d ------------------------------------------------------------------------------- header for text strings 0 ; (275 ;) only for first entry 2bc ; 200 ; position (0 characters from top left) 2bb ; 0 ; color (usually 0=black, 1=blue, 2=red, 3=tan, 4=d.green, 5=b.green, 6=yellow, 7=white) 4 ; 118 ; 7b ; ------------------------------------------------------------------------------- open screen in color... with border (if) in color... 1c0 ; 2b8 ; 0 ; bkg color (as text color plus 8=grey, 9=cyan, a=orange, b=olive, c=pink, d=violet, e=lime, f=crimson) 240 ; 2c ; border 240 ; 28 ; screen ------------------------------------------------------------------------------- # from 00 to ff (for addressing) 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f 80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 ba bb bc bd be bf c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 da db dc dd de df e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe ff
Further i offer you some snippets of sfx and simple music i extracted from a handful of games.
Copy paste them in the same manner as the snippets above to a row of to parse data (i suggest to copy paste such first and then to add the parse command and the addresses in length of the to parse data).
Feel free to experiment with them, for sfx it won't matter much if it's sfx one or two (0x4, 0x118, 0x3bb or 0x4, 0x118, 0x3be for either "sfx1" or "sfx2") sfx must end with 0xcf, 0x2cf, 0x3cf, for the simple use in the title this makes neither any difference as i found out.
NOTE that the "0x#cf" will end the whole process likewise a 0x2b7 exits, thus always position sfx as very last data in the altered title code.
For music i use the simple note players "mus1" and "mus2" (0x4, 0x118, 0x327 or 0x4, 0x118. 0x35b) "mus1" sounds more clear "mus2" has a distorted sound, the difference is like it is used for "White Water" (mus1) or "Donkey Kong Jr." (mus2). The note player just plays the notes on a single channel and does not respect timbre and plays the notes in a fixed speed, simple but effective. Music you can play backwards sfx not! (or not as easy as try it out).Spoiler4 ; tootingcommon laser 118 ; 3bb ; 229 ; 35 ; 3a5 ; 3ed ; 384 ; 180 ; f ; fe ; 1 ; 3e1 ; 8f ; 30 ; 2cf ; 0 ; 2b7 ; 4 ; fanfare 1 118 ; 35d ; f ; 6A ; 1d ; 6b ; 26 ; 6c ; 48 ; 2b ; 22 ; 2a ; 0 ; 2b7 ; 4 ; fanfare 1 reverse 118 ; 35d ; f ; 2a ; 22 ; 2b ; 48 ; 6c ; 26 ; 6b ; 1d ; 6A ; 0 ; 2b7 ; 4 ; Mario dies 118 ; 35d ; f ; 1a0 ; 200 ; 190 ; 1f0 ; 180 ; 1e0 ; 170 ; 1d0 ; 160 ; 1c0 ; 150 ; 1b0 ; 140 ; 1a0 ; 130 ; 190 ; 120 ; 180 ; 110 ; 170 ; 100 ; 160 ; f0 ; 0 ; 2b7 ; 4 ; Mario dies reverse 118 ; 35d ; f ; f0 ; 160 ; 100 ; 170 ; 110 ; 180 ; 120 ; 190 ; 130 ; 1a0 ; 140 ; 1b0 ; 150 ; 1c0 ; 160 ; 1d0 ; 170 ; 1e0 ; 180 ; 1f0 ; 190 ; 200 ; 1a0 ; 0 ; 2b7 ; 4 ; Mario level up 118 ; 35d ; f ; 18c ; 1ac ; 1de ; 1ac ; 18c ; 1ac ; aa ; c8 ; e8 ; f8 ; 118 ; 138 ; 158 ; 168 ; 0 ; 2b7 ; 4 ; Mario level up reverse 118 ; 35d ; f ; 168 ; 158 ; 138 ; 118 ; f8 ; e8 ; c8 ; aa ; 1ac ; 18c ; 1ac ; 1de ; 1ac ; 18c ; 0 ; 2b7 ; 4 ; math fun 118 ; 327 ; fc ; fc ; fc ; fc ; fe ; 3f2 ; fc ; c ; fc ; fc ; fc ; fc ; fc ; fc ; 14e ; 3f4 ; 13d ; c ; fc ; fc ; fc ; fc ; fc ; fc ; 18d ; 16c ; 18d ; 16c ; 16c ; 18c ; 16e ; 18d ; 16c ; 16c ; 14e ; 13e ; 3f4 ; ff ; 0 ; 2b7 ; 4 ; math fun reverse 118 ; 327 ; f ; ff ; 3f4 ; 13e ; 14e ; 16c ; 16c ; 18d ; 16e ; 18c ; 16c ; 16c ; 18d ; 16c ; 18d ; fc ; fc ; fc ; fc ; fc ; fc ; c ; 13d ; 3f4 ; 14e ; fc ; fc ; fc ; fc ; fc ; fc ; c ; fc ; 3f2 ; fe ; fc ; fc ; fc ; fc ; 0 ; 2b7 ; 4 ; prelude d-moll bwv565 (donkey kong jr.) 118 ; 327 ; f ; 230 ; 210 ; 3f2 ; 234 ; 1 ; 210 ; 1f0 ; 1e0 ; 1c0 ; 1b1 ; 1 ; 3f2 ; 1c6 ; 3f4 ; 4 ; 171 ; 151 ; 3f4 ; 173 ; 1 ; 121 ; 131 ; f1 ; 3f2 ; 106 ; 3f4 ; 4 ; 3f4 ; 40 ; 3f4 ; a0 ; 3f4 ; 100 ; 3f4 ; 160 ; 1c4 ; 1b4 ; 1c4 ; 1b4 ; 1c4 ; 1b4 ; 1c4 ; 1b4 ; 3f2 ; 1c6 ; 2 ; 0 ; 2b7 ; 004 ; prelude d-moll bwv565 reverse 118 ; 327 ; f ; 2 ; 1c6 ; 3f2 ; 1b4 ; 1c4 ; 1b4 ; 1c4 ; 1b4 ; 1c4 ; 1b4 ; 1c4 ; 160 ; 3f4 ; 100 ; 3f4 ; a0 ; 3f4 ; 40 ; 3f4 ; 4 ; 3f4 ; 106 ; 3f2 ; f1 ; 131 ; 121 ; 1 ; 173 ; 3f4 ; 151 ; 171 ; 4 ; 3f4 ; 1c6 ; 3f2 ; 1 ; 1b1 ; 1c0 ; 1e0 ; 1f0 ; 210 ; 1 ; 234 ; 3f2 ; 210 ; 230 ; 0 ; 2b7 ; 4 ; White Water Intro 118 ; 327 ; 191 ; 1da ; 19a ; 20a ; 14a ; 18a ; 14a ; 19a ; da ; 11a ; da ; f2 ; 114 ; 124 ; 14a ; 12a ; 11a ; da ; 14f ; 0 ; 2b7 ; 4 ; White Water Intro reverse 118 ; 327 ; 14f ; da ; 11a ; 12a ; 14a ; 124 ; 114 ; f2 ; da ; 11a ; da ; 19a ; 14a ; 18a ; 14a ; 20a ; 19a ; 1da ; 191 ; 0 ; 2b7 ; 4 ; sub hunt torpedo 118 ; 3bb ; 3f9 ; 8f ; 25 ; 79 ; 2f5 ; 3 ; 4 ; 375 ; 3 ; 4 ; 3f5 ; 3fe ; 4f ; 28 ; 30d ; 7 ; 43 ; 3f0 ; 2cf ; 0 ; 2b7 ; 004 ; spacebattle fanfare (partially) 118 ; 3bb ; 3e9 ; 3c0 ; 200 ; 1 ; 3e0 ; 8f ; 1f ; 1 ; 8f ; 8b ; 1 ; 40 ; 3f2 ; 8f ; 3f ; 3f9 ; 23 ; 3f4 ; 275 ; 94 ; 200 ; 6 ; 275 ; 2f9 ; 7 ; 28c ; 339 ; 7 ; 4 ; 154 ; 227 ; 2a0 ; 378 ; 204 ; 52 ; 4 ; 154 ; 201 ; 271 ; 2a0 ; 4c ; 41 ; 4 ; 114 ; 357 ; 064 ; 4 ; 114 ; 229 ; 2b1 ; 2f9 ; 4 ; 248 ; 2f9 ; 2 ; 2a0 ; 4 ; 114 ; 268 ; 80 ; 20d ; 5 ; 20 ; 10 ; 248 ; 200 ; 20 ; 248 ; 2a0 ; 48 ; 4c ; 2f9 ; 6 ; 248 ; 339 ; 4 ; 2a0 ; 4 ; 154 ; 201 ; 339 ; 8 ; 288 ; 3f8 ; 8 ; 248 ; 4 ; 154 ; 250 ; 2f9 ; 7 ; 24c ; 4 ; 114 ; 366 ; 4 ; 114 ; 1c ; 2b7 ; 339 ; 6 ; 379 ; 33d ; 22c ; 12 ; 2f9 ; 8 ; 288 ; 1 ; 3b8 ; e7 ; 248 ; 339 ; 8 ; 220 ; 1e ; 4 ; 114 ; 366 ; 1 ; 2f8 ; a4 ; 1 ; 82 ; 2b8 ; 2 ; 250 ; 2b7 ; 275 ; 272 ; 82 ; 3ba ; f ; 2f9 ; 5 ; 24a ; 339 ; 4 ; 64 ; 64 ; 82 ; 48 ; 4c ; 110 ; 1 ; 2f8 ; b6 ; 54 ; 248 ; 11 ; 2a0 ; 40 ; 60 ; 3c8 ; 1 ; 88 ; 3f ; 3c8 ; 1 ; 0 ; 2cf ; 2b7 ; 4 ; ad&d growl 1 118 ; 3be ; 6f ; 319 ; 30d ; 248 ; 2f0 ; 244 ; 320 ; c5 ; 1db ; 01 ; 33 ; 4e ; 31d ; 77 ; f1 ; 62 ; 2b ; 319 ; 23 ; 3e4 ; f ; 3fd ; 3fe ; 12 ; 01 ; 43 ; 17b ; 53 ; a4 ; 77 ; f1 ; 62 ; 2b ; 319 ; 23 ; 3e4 ; 379 ; e ; 117 ; 0 ; 3e2 ; d7 ; c0 ; 2cf ; 4 ; 118 ; 3be ; astrosmash expl 229 ; 2 ; 2 ; 2 ; a ; b ; c ; 30 ; 3c ; 3a0 ; b7 ; 3ed ; 2 ; 8f ; 14 ; 2 ; 8f ; a ; 2 ; 2cf ; 4 ; bump n jump fanfare 118 ; 327 ; d ; 137 ; 13e ; 15c ; 13c ; 11c ; 13b ; 10c ; 11c ; 15c ; 13c ; 11c ; 137 ; 137 ; 13c ; 0 ; 2b7 ; exit 4 ; bump n jump jump sfx 118 ; 3be ; 32 ; 389 ; 4f ; c ; 240 ; 7d ; 6b ; 345 ; 77 ; 99 ; d0 ; 43 ; 3dc ; 300 ; 29 ; 6b ; 300 ; 61 ; 6b ; 240 ; 7d ; 6b ; 2c0 ; 4c ; 6b ; 240 ; 7d ; 6b ; 280 ; 53 ; 6b ; 240 ; 7d ; 6b ; 240 ; 3e ; 6b ; 200 ; 30 ; 6b ; 1c0 ; 22 ; 6b ; 100 ; 0 ; 2eb ; 19d ; 240 ; 7d ; 6b ; 300 ; 5a ; 6b ; 240 ; 7d ; 6b ; 300 ; 53 ; 6b ; 240 ; 7d ; 6b ; 300 ; 4c ; 6b ; 240 ; 7d ; 6b ; 300 ; 45 ; 6b ; 43 ; 398 ; 399 ; 3cf ; 4 ; bnj tune 118 ; 327 ; a ; 10c ; 10c ; cc ; cc ; ec ; ec ; 11e ; 10c ; 10c ; cc ; cc ; ec ; ec ; 7e ; 10c ; 10c ; cc ; cc ; ec ; ec ; 10c ; 11c ; 13c ; 13c ; 18c ; 13c ; 10c ; 13c ; 18e ; 18c ; 15e ; 11c ; 17c ; 13e ; 10c ; 15c ; 11e ; ec ; 13c ; 10e ; cc ; cc ; 10c ; 13c ; 13c ; ec ; 11c ; 15c ; 15c ; 13c ; 17c ; 1ac ; 1cc ; 18f ; 18a ; 178 ; 11e ; 17a ; 158 ; 10e ; 10a ; 118 ; 13e ; 48 ; 58 ; 78 ; 98 ; b8 ; c8 ; e8 ; 108 ; 11a ; 138 ; 15e ; 58 ; 78 ; 98 ; b8 ; c8 ; e8 ; 108 ; 118 ; 10c ; 10c ; 11c ; 11c ; 13c ; 13c ; ce ; 10c ; cc ; ec ; 11c ; 10c ; ec ; ce ; 10c ; 108 ; 108 ; cc ; c8 ; c8 ; 11c ; 10c ; 0ee ; 10c ; 108 ; 108 ; cc ; c8 ; c8 ; 10c ; ec ; ce ; 10c ; 108 ; 108 ; cc ; c8 ; c8 ; e8 ; 108 ; 118 ; 138 ; 17e ; 10c ; 108 ; 108 ; cc ; c8 ; c8 ; 11c ; 10c ; ee ; 10c ; 108 ; 108 ; cc ; c8 ; c8 ; b8 ; 98 ; b8 ; c8 ; ee ; 10c ; 108 ; 108 ; cc ; c8 ; c8 ; e8 ; 108 ; 118 ; 138 ; 15e ; 17c ; 178 ; 178 ; 13c ; 138 ; 138 ; 188 ; 178 ; 158 ; 178 ; 18e ; 18c ; 15c ; 11c ; 13c ; 17c ; 13c ; 10c ; 11c ; 15c ; 11c ; ec ; 10c ; 13c ; 10c ; ce ; 18e ; 15c ; 11c ; 17c ; 17c ; 13c ; 10c ; 15e ; 11c ; ec ; 13c ; 13c ; 10c ; c0 ; 0 ; 4 ; brickout blip 118 ; 3bb ; 40 ; 40 ; 48 ; 80 ; 44 ; 40 ; 31 ; 3b1 ; 389 ; 1c ; 0 ; 0b ; 3cf ; 4 ; brickout popp 118 ; 3bb ; 58 ; 40 ; 359 ; ad ; c ; 340 ; 1b7 ; b ; 3cf ; 4 ; burger ingrediens 118 ; 3be ; 14 ; 3e9 ; 35 ; 2b ; 340 ; 6b ; 6b ; 05 ; 2b ; 340 ; 71 ; 6b ; 5 ; 2b ; 340 ; 78 ; 6b ; 5 ; 2b ; 340 ; 7f ; 6b ; 5 ; 2b ; 340 ; 87 ; 6b ; 5 ; 2b ; 340 ; 8f ; 6b ; 5 ; 2b ; 340 ; 97 ; 6b ; 5 ; 2b ; 340 ; a0 ; 6b ; 5 ; 2b ; 340 ; aa ; 6b ; 5 ; 2b ; 340 ; b4 ; 6b ; 5 ; 2b ; 340 ; 0be ; 6b ; 5 ; 2b ; 340 ; ca ; 6b ; 5 ; 2b ; 340 ; d7 ; 6b ; 5 ; 2b ; 3f9 ; cf ; 4 ; burger peter dies 118 ; 3be ; 24 ; 3c9 ; 35 ; 6b ; 380 ; 140 ; 6b ; 6b ; 308 ; 140 ; ab ; 5 ; 6b ; 380 ; fe ; 6b ; 25 ; 6b ; 308 ; 140 ; ab ; 5 ; 6b ; 380 ; d7 ; 6b ; 25 ; 6b ; 308 ; 140 ; ab ; 5 ; 6b ; 380 ; a0 ; 6b ; 25 ; 6b ; 308 ; 140 ; ab ; 5 ; 6b ; 380 ; d7 ; 6b ; 25 ; 6b ; 308 ; 140 ; ab ; 5 ; 6b ; 380 ; fe ; 6b ; 25 ; 6b ; 308 ; 140 ; 0ab ; 5 ; 6b ; 380 ; 140 ; 6b ; 25 ; 6b ; 308 ; 140 ; ab ; 5 ; 6b ; 380 ; fe ; 6b ; 25 ; 6b ; 308 ; 140 ; ab ; 05 ; 6b ; 380 ; d7 ; 6b ; 25 ; 6b ; 308 ; 140 ; ab ; 5 ; 6b ; 380 ; a0 ; 6b ; 25 ; 6b ; 308 ; 140 ; ab ; 6b ; 35 ; 6b ; 3f9 ; 2cf ; 4 ; burger intro jingle 118 ; 3be ; 24 ; 3c9 ; 35 ; 6b ; 380 ; e2 ; 348 ; 23b ; 26b ; 5 ; 25 ; 6b ; 380 ; be ; 348 ; 1c5 ; 26b ; 5 ; 25 ; 6b ; 380 ; be ; 348 ; 17d ; 26b ; 5 ; 25 ; 6b ; 380 ; d7 ; 8 ; 0 ; eb ; 5 ; 6b ; 380 ; e2 ; eb ; 5 ; 25 ; 6b ; 380 ; d7 ; 348 ; 1fc ; 26b ; 5 ; 25 ; 6b ; 380 ; aa ; 348 ; 1ac ; 26b ; 5 ; 25 ; 6b ; 380 ; aa ; 348 ; 153 ; 26b ; 5 ; 25 ; 6b ; 380 ; be ; 8 ; 0 ; eb ; 5 ; 6b ; 380 ; d7 ; eb ; 5 ; 25 ; 6b ; 380 ; be ; 348 ; 12e ; 26b ; 5 ; 25 ; 6b ; 380 ; 97 ; 348 ; 17d ; 26b ; 5 ; 25 ; 6b ; 380 ; 97 ; 348 ; 153 ; 26b ; 5 ; 25 ; 6b ; 380 ; aa ; 348 ; 12e ; eb ; 5 ; 6b ; 380 ; 97 ; eb ; 5 ; 25 ; 6b ; 380 ; 8f ; 348 ; 11d ; 26b ; 5 ; 25 ; 6b ; 380 ; aa ; 348 ; 153 ; 26b ; 5 ; 25 ; 6b ; 380 ; be ; 348 ; 17d ; 26b ; 25 ; 6b ; 26b ; 5 ; 6b ; 3f9 ; cf ; 4 ; bt finito 118 ; 3bb ; 3c9 ; 35 ; 6b ; 380 ; e2 ; 348 ; 1c5 ; 2eb ; 25 ; 6b ; 348 ; 23b ; 2eb ; 35 ; 6b ; 380 ; d7 ; 348 ; 1fc ; 2eb ; 35 ; 6b ; 380 ; e2 ; 348 ; 1c5 ; 2eb ; 35 ; 6b ; 380 ; fe ; 348 ; 1ac ; 2eb ; 25 ; 6b ; 348 ; 1ac ; 2eb ; 35 ; 6b ; 380 ; aa ; 348 ; 1ac ; 2eb ; 35 ; 6b ; 380 ; be ; 348 ; 1ac ; 12b ; 5 ; 6b ; 380 ; d7 ; 12b ; 35 ; 6b ; 380 ; e2 ; 348 ; 1c5 ; 2eb ; 35 ; 6b ; 380 ; be ; 348 ; 1c5 ; 2eb ; 35 ; 6b ; 380 ; aa ; 348 ; 1fc ; 2eb ; 35 ; 6b ; 380 ; 97 ; 348 ; 1fc ; 2eb ; 35 ; 6b ; 380 ; 8f ; 348 ; 23b ; 1eb ; 380 ; be ; eb ; 35 ; 6b ; 380 ; 97 ; 2eb ; 5 ; 6b ; 380 ; 8f ; 8f ; 19 ; 5 ; 6b ; 3f9 ; 2cf ; 4 ; bt music (loop) 118 ; 3be ; 1 ; 7d ; 77 ; 2 ; 6f ; 3c9 ; 17d ; 35 ; ab ; 280 ; 8f ; 248 ; 1ac ; ab ; 35 ; ab ; 280 ; 6b ; ab ; 35 ; ab ; 280 ; 71 ; 248 ; 17d ; ab ; 35 ; ab ; 280 ; 7f ; ab ; 35 ; ab ; 280 ; 8f ; 248 ; 153 ; ab ; 35 ; ab ; 280 ; 97 ; 248 ; 17d ; ab ; 35 ; ab ; 280 ; 8f ; 248 ; 153 ; ab ; 35 ; ab ; 280 ; 97 ; 248 ; 17d ; ab ; 35 ; ab ; 280 ; 8f ; 248 ; 153 ; 16b ; 25 ; ab ; 5 ; ab ; 280 ; 6b ; ab ; 25 ; ab ; 248 ; 153 ; ab ; 35 ; ab ; 280 ; 8f ; 248 ; 153 ; 16b ; 25 ; ab ; 5 ; ab ; 280 ; 6b ; 16b ; 25 ; ab ; 35 ; ab ; 77 ; 2 ; 6f ; 2cf ; 4 ; carnival music 118 ; 327 ; 151 ; 144 ; 154 ; 184 ; 1D1 ; 1C4 ; 1D4 ; 1F4 ; 1D4 ; 1C4 ; 1D4 ; 154 ; 184 ; 1C7 ; 1A1 ; 134 ; 164 ; 1A4 ; 181 ; 164 ; 154 ; 134 ; 114 ; 104 ; 134 ; 181 ; 1D4 ; 0 ; 4 ; carnival music reverse 118 ; 327 ; 1D4 ; 181 ; 134 ; 104 ; 114 ; 134 ; 154 ; 164 ; 181 ; 1A4 ; 164 ; 134 ; 1A1 ; 1C7 ; 184 ; 154 ; 1D4 ; 1C4 ; 1D4 ; 1F4 ; 1D4 ; 1C4 ; 1D1 ; 184 ; 154 ; 144 ; 0 ;
Assumed you like to loop a sfx (except this can loop for itself check "burgertime loop" it loops without any advice to loop, how that works i don't know yet) or a music you can use following simple advice:
0x220, 0x"number of to step back words", also simple and efficient. The count of words is inclusive the 0x220 command and must point exactly to the start of the sfx or music inclusive heading command.
Check as example the script(s) for "Bump 'n' Jump". If you like to add a short pause in a music (this method won't work for sfx) insert at desired position a value between 0x1 and 0xf to reach this.
To reverse a row of data (the section between start and end of the music without the leading command and ending) i can offer you following batch proggie (32bit DOS shell but probably also powershell):Spoilerrem typeback.bat @echo off&setlocal enabledelayedexpansion set "file=tmp.txt" for /f "delims=] tokens=1*" %%a in ('type "%file%"^|find /v /n ""^&type nul^>"%file%"') do ( set /a counter+=1 set "array!counter!=%%b" ) for /l %%a in (%counter%,-1,1) do echo:!array%%a!>>"%file%" endlocal
I suggest to copy this to a file named "typeback.bat" and place it somewhere you can find it easy i.e.: C:\temp.
NOTE: The batch will write the data in reverse order to the same file!
One could replace the given 'set "file=tmp.txt" ' which expects that a file "tmp.txt" is present in the same directory as the batch with %1 to use the first variable after the call for the batch but this will make this simple batch unsafe and no matter what will be dropped on it or executed with it will be reversed or even worse.
Be careful this batch really doesn't checks anything executes with whatever is set as "file" and will corrupt binary files if applied to them.
I will see if i find a macro for notepad++ or if not to create one since notepad++ only offers to sort alphanumerical but we like to reverse the row and not sort it alphanumerical.
(There is a DOS command "SORT" but what do you expect for the option /R(EVERSE), reverse? no for sure not it sorts alphanumerical, heck and the option is /R(EVERSE) how stupid!
Next time you shift in the gear "R" expect that your car will - whatever but not drive back, maybe drive a zig-zag course sorted alphanumerical by street names, but for sure not reverse, lol)
MATTEL ELECTRONICS
AD&D CLOUDY MOUNTAIN
This is gonna be a short entry (time is tight)
Most of the content of this hack and of "Astromashup" belongs to Midnight Blue International (Zendocon), i mostly only added a new title screen and allowed to alter some of the graphics.
As you can see the screenshot is from "Adventure" which is exactly the same game except for the shortened title string.
In the zip you will find both versions of the game one unaltered and one set to easy mode (overall 4).
A further addition is that i used the growl sfx of this game in the title.
ASTROSMASH (ASTROMASHUP)
Exactly like AD&D the content of this hack is mostly the work of Zendocon (Midnight Blue International).
The most interesting of these hacks is that the title will reflect proper the name of the game.
As for "Cloudy Mountain" it opens the possibility to change some of the gram cards and the design of the cannon/ship (which i slightly altered for "Astromashup" for the Meteor ship).
The hacks are fixed to reflect the slight differences in addressing of the three version "Astrosmash", "Astrosmash - Meteor" and "Astrosmash Competition".
A second "Lethal" version of each game starts with a single ship, still you get easy, to easy to a lot of reserve ships, probably i can change this in future to give bonus ships every 5'000 or 10'000 (it didn't worked out yet).
Even here i added a sfx to the title, for the "Astrosmash" hacks the explosion sfx (because i liked to keep the original size) and for "Astromashup" an excerpt of... i won't tell.
Perhaps i will work further on it to alter even the MOB gfx, that means the appearance of the Meteors in the game or the UFO.
BUMP 'N' JUMP
I already posted this i know but like i said here you will receive the finished .cfg files which you don't have to edit the zip will contain .cfg files for a "Bump 'n' Jump" with added title music (no gameplay relevant hacks), an "advantage" version which gives you 7 cars, a "lethal" variation with a single life and a "trainer" with 99 cars more this game doesn't accepts (even here the cars will be all displayed they overflow the screen several times before the program is dissatisfied).
The color code is as described, blue for "advantage", crimson/red for "lethal" and dark green for "trainer".
NOTE: the set color stack fg/bg (1) only allows uppercase letters for a string in the title screen.
Just that you get an idea a (very) short clip.
BREAKOUT!
(BRICKOUT!)
Rather a coincidence but a funny one, if you look at the data of "Brickout!" in a hex editor following jumps in your eye:
P n P IS P & P (50006E005000CC00530023005000260050) not exactly but it is very close and of course since 50 is interpreted as "P" it isn't uncommon for real, nonetheless i thought "hmmm... interesting, plug 'n play is plug & play" yes it is! And Brickout! is a game which i start to really like as simple as it is.
There wasn't much i could change for this game, the amount of balls which i reduced instead to increase 15 are fairly enough (instead of 20) also i changed the trigger values for the rating it is now:
< 250, "NO COMMENT"
< 500, "TRY CARDS"
< 750, "FAIR"
< 1000, "GOOD"
< 1250, "VERY GOOD" (prev. < 1125)
< 1500, "EXCELLENT" (prev. < 1175)
< 1750, "DANGEROUS" (prev. < 1195)
< 2000, "CLASSIFIED" (prev. < 1200)
>= 2000, "ACE" (prev >= 1200)
That means you have to play good in this a little random game in results (which makes it so addictive to me you never know how good you will play), 2000 points are to reach with 20 balls and it should be also to reach in a very good play with only 15 balls. With the old rating i always ended up as "ACE" which isn't challenging but 2000 points aren't easy to reach. Further "DANGEROUS" and "CLASSIFIED" are so close together that you will almost never end up as "CLASSIFIED" or "DANGEROUS" five points (resp. 20 points) difference is a nothing or in other terms three bricks which equals 6 points (or 10 bricks which is even a nothing).
Further i changed the title from "Brickout!" to "Breakout!" what it is, fixed the copyright for this game and it shows now an additional line "Copr @ 1976 ATARI", the '80s are fortunately a long time past.
Plus that it will greet you with the typical "Pong bleep" when you start the game (reset).
Yes indeed if you stay up to long (48h and more) you will start to hallucinate...
"InsomniaVision"
While i'm not sleepless as soon as i pull the blanket over my head i sleep, no matter when or under which conditions and sometimes i take a nap after three hours if i feel exhausted or can't find a proper solution for a problem, a nap can untie a knot in your mind. "It's all in your mind" it's a question of mind setting as i guess, if you guess to have problems to find sleep you will have for sure.
Additionally included in the zip will be the revealed "Time Baum Dept. presents" variation for this game for which i changed nothing else as the flag to show the hidden string.
Because it was little work i also made a useless German translation for the classifications, usually i don't play games in German.
NOTE: the memory mapping shortens the rom if converted with bin2rom to 4kB which won't matter, a) there is still a lot of NIL present and b) it' won't matter if it is not a physical ROM.
NEW VERSION 20210727!
A short clip (1minute) which shows the changes i made somewhat better.
Changes:
New title screen using the GRAM font from "VECTRON", the font is also used to display rating and score. Unlike before i kept the GROM positions in GRAM for numbers and letters thus a program can use it as common. What i do not understand yet is the swapping of even and odd numbers for the background colors.
The lower shot shows a translation of the rating to german language for such and to probably use own expressions (like "frickin' lazy bastard") i left a whole line (20 characters) of space for the string. Further you can see that i changed the paddle color from blue to bright green, it is imho better to play with a brighter colored paddle. The 20 characters long empty strings have the positive effect to blank the probably underlying leftover bricks. Position for "GAME OVER" and "RATING:" is shifted up and contains additional lines to blank the screen between the lines.
Intentionally i would have liked to outsource the strings and use the a PRINT expression which calls an address but it didn't worked out as intended (not yet), but this is as good as.
Additionally i used a coloring for the rating (red=low, orange=medium, yellow=good, bright green=very good, cyan=excellent, ace) and added a sfx for the rating ("yer out" from BASEBALL for the lowest three and a cheer sfx in advancing duration for the rest of rating). The version "Vectronized" contains a few additional comments i.e. to how i (ab)used the GRAM init sequence, usually one would set couples of 8 characters (or less) and set the next 8 characters, this is also understood well by the disassembler but one could theoretically set all 64 GRAM carts at once which confuses the disassembler but works very well on the hardware or emulated.
The zip file contains versions using different fonts, one which still uses the GROM font, one which uses the font from "VECTRON" (which i also used for the translated version) and the one from "SOLAR SAILER".
I also included the version "Fatfont" which uses a own created font which i didn't like to well but feel free to create a own font (the 8x8 space per cart limits this a lot). To create GRAM carts JzIntv offers some handy tools mainly "frombit.exe" which converts a binary bitmap to hex values you can use in your script. To create such a bitmap in a comfortable manner i suggest again to use "Notepad++" because you can simply design the carts using symbols like . for 0 and X for 1 and then replace the symbols which make the graphic more visible with 0 and 1. After you can feed this script to "frombit". Use # to mark comments e.g. to separate the "....XXX" from "00001111" else frombit will be confused by other values as 0 or 1. For a quick edit i suggest to use a value editor like you find it in "TinyHexer" it lets you toggle bits and to create or edit a single cart this is faster as the processing further a use of the value editor let's you understand in which manner bytes are coded and probably after a while you know the hex value just by looking at the bitmap. One i like much and know by heart is 01100110 which results in 0x66.
The bitmap i used for Fatfont:
Spoiler#FAT FONT 00011000 #...XX... 00011000 #...XX... 00011000 #...XX... 00011000 #...XX... 00011000 #...XX... 00000000 #........ 00011000 #...XX... 00000000 #........ 00111100 #..XXXX.. 01100010 #.XX...X. 01101010 #.XX.X.X. 01101010 #.XX.X.X. 01101010 #.XX.X.X. 01100010 #.XX...X. 00111100 #..XXXX.. 00000000 #........ 00011000 #...XX... 00111000 #..XXX... 00011000 #...XX... 00011000 #...XX... 00011000 #...XX... 00011000 #...XX... 00011000 #...XX... 00000000 #........ 00111100 #..XXXX.. 01000110 #.X...XX. 00000110 #.....XX. 00011100 #...XXX.. 00110000 #..XX.... 01100000 #.XX..... 01111110 #.XXXXXX. 00000000 #........ 00111100 #..XXXX.. 01000110 #.X...XX. 00000110 #.....XX. 00011100 #...XXX.. 00000110 #.....XX. 01000110 #.X...XX. 00111100 #..XXXX.. 00000000 #........ 00110000 #..XX.... 01100000 #.XX..... 01100000 #.XX..... 01101100 #.XX.XX.. 01111110 #.XXXXXX. 00001100 #....XX.. 00001100 #....XX.. 00000000 #........ 01111110 #.XXXXXX. 01100000 #.XX..... 01100000 #.XX..... 01111100 #.XXXXX.. 00000110 #.....XX. 01100110 #.XX..XX. 00111100 #..XXXX.. 00000000 #........ 00111100 #..XXXX.. 01100000 #.XX..... 01100000 #.XX..... 01111100 #.XXXXX.. 01100110 #.XX..XX. 01100110 #.XX..XX. 00111100 #..XXXX.. 00000000 #........ 01111110 #.XXXXXX. 00000110 #.....XX. 00001100 #....XX.. 00011000 #...XX... 00011000 #...XX... 00011000 #...XX... 00011000 #...XX... 00000000 #........ 00111100 #..XXXX.. 01100110 #.XX..XX. 01100110 #.XX..XX. 00111100 #..XXXX.. 01100110 #.XX..XX. 01100110 #.XX..XX. 00111100 #..XXXX.. 00000000 #........ 00111100 #..XXXX.. 01100110 #.XX..XX. 01100110 #.XX..XX. 00111110 #..XXXXX. 00000110 #.....XX. 00000110 #.....XX. 00111100 #..XXXX.. 00000000 #........ 00111100 #..XXXX.. 01000110 #.X...XX. 00001100 #....XX.. 00011000 #...XX... 00011000 #...XX... 00000000 #........ 00011000 #...XX... 00000000 #........ 01111100 #.XXXXX.. 10000010 #X.....X. 10111010 #X.XXX.X. 10100010 #X.X...X. 10111010 #X.XXX.X. 10000010 #X.....X. 01111100 #.XXXXX.. 00000000 #........ 00111100 #..XXXX.. 01100110 #.XX..XX. 01100110 #.XX..XX. 01111110 #.XXXXXX. 01100110 #.XX..XX. 01100110 #.XX..XX. 01100110 #.XX..XX. 00000000 #........ 01111100 #.XXXXX.. 01100110 #.XX..XX. 01100110 #.XX..XX. 01111100 #.XXXXX.. 01100110 #.XX..XX. 01100110 #.XX..XX. 01111100 #.XXXXX.. 00000000 #........ 00111100 #..XXXX.. 01100010 #.XX...X. 01100000 #.XX..... 01100000 #.XX..... 01100000 #.XX..... 01100010 #.XX...X. 00111100 #..XXXX.. 00000000 #........ 01111100 #.XXXXX.. 01100010 #.XX...X. 01100010 #.XX...X. 01100010 #.XX...X. 01100010 #.XX...X. 01100010 #.XX...X. 01111100 #.XXXXX.. 00000000 #........ 01111110 #.XXXXXX. 01100000 #.XX..... 01100000 #.XX..... 01111000 #.XXXX... 01100000 #.XX..... 01100000 #.XX..... 01111110 #.XXXXXX. 00000000 #........ 01111110 #.XXXXXX. 01100000 #.XX..... 01100000 #.XX..... 01111000 #.XXXX... 01100000 #.XX..... 01100000 #.XX..... 01100000 #.XX..... 00000000 #........ 00111100 #..XXXX.. 01100010 #.XX...X. 01100000 #.XX..... 01101110 #.XX.XXX. 01100110 #.XX..XX. 01100110 #.XX..XX. 00111100 #..XXXX.. 00000000 #........ 01100110 #.XX..XX. 01100110 #.XX..XX. 01100110 #.XX..XX. 01111110 #.XXXXXX. 01100110 #.XX..XX. 01100110 #.XX..XX. 01100110 #.XX..XX. 00000000 #........ 00111100 #..XXXX.. 00011000 #...XX... 00011000 #...XX... 00011000 #...XX... 00011000 #...XX... 00011000 #...XX... 00111100 #..XXXX.. 00000000 #........ 00011110 #...XXXX. 00000110 #.....XX. 00000110 #.....XX. 00000110 #.....XX. 00000110 #.....XX. 01100110 #.XX..XX. 00111100 #..XXXX.. 00000000 #........ 01100110 #.XX..XX. 01101100 #.XX.XX.. 01111000 #.XXXX... 01110000 #.XXX.... 01111000 #.XXXX... 01101100 #.XX.XX.. 01100110 #.XX..XX. 00000000 #........ 01100000 #.XX..... 01100000 #.XX..... 01100000 #.XX..... 01100000 #.XX..... 01100000 #.XX..... 01100000 #.XX..... 01111110 #.XXXXXX. 00000000 #........ 01101100 #.XX.XX.. 11111110 #XXXXXXX. 11010110 #XX.X.XX. 11010110 #XX.X.XX. 11000110 #XX...XX. 11000110 #XX...XX. 11000110 #XX...XX. 00000000 #........ 11000110 #XX...XX. 11100110 #XXX..XX. 11110110 #XXXX.XX. 11011110 #XX.XXXX. 11001110 #XX..XXX. 11000110 #XX...XX. 11000110 #XX...XX. 00000000 #........ 01111100 #.XXXXX.. 11000110 #XX...XX. 11000110 #XX...XX. 11000110 #XX...XX. 11000110 #XX...XX. 11000110 #XX...XX. 01111100 #.XXXXX.. 00000000 #........ 01111100 #.XXXXX.. 01100110 #.XX..XX. 01100110 #.XX..XX. 01111100 #.XXXXX.. 01100000 #.XX..... 01100000 #.XX..... 01100000 #.XX..... 00000000 #........ 01111100 #.XXXXX.. 11000110 #XX...XX. 11000110 #XX...XX. 11000110 #XX...XX. 11000110 #XX...XX. 11000110 #XX...XX. 01111100 #.XXXXX.. 00000110 #.....XX. 01111100 #.XXXXX.. 01100110 #.XX..XX. 01100110 #.XX..XX. 01111100 #.XXXXX.. 01100110 #.XX..XX. 01100010 #.XX..XX. 01100010 #.XX..XX. 00000000 #........ 00111110 #..XXXXX. 01100000 #.XX..... 01100000 #.XX..... 00111100 #..XXXX.. 00000110 #.....XX. 00000110 #.....XX. 01111100 #.XXXXX.. 00000000 #........ 01111110 #.XXXXXX. 00011000 #...XX... 00011000 #...XX... 00011000 #...XX... 00011000 #...XX... 00011000 #...XX... 00011000 #...XX... 00000000 #........ 01100110 #.XX..XX. 01100110 #.XX..XX. 01100110 #.XX..XX. 01100110 #.XX..XX. 01100110 #.XX..XX. 01100110 #.XX..XX. 00111100 #..XXXX.. 00000000 #........ 01100010 #.XX...X. 01100010 #.XX...X. 01100010 #.XX...X. 01100110 #.XX..XX. 01101100 #.XX.XX.. 01111000 #.XXXX... 01110000 #.XXX.... 00000000 #........ 11000110 #XX...XX. 11000110 #XX...XX. 11000110 #XX...XX. 11010110 #XX.X.XX. 11010110 #XX.X.XX. 11111110 #XXXXXXX. 01101100 #.XX.XX.. 00000000 #........ 11000110 #XX...XX. 11000110 #XX...XX. 01101100 #.XX.XX.. 00111000 #..XXX... 01101100 #.XX.XX.. 11000110 #XX...XX. 11000110 #XX...XX. 00000000 #........ 11000110 #XX...XX. 11000110 #XX...XX. 01101100 #.XX.XX.. 00111000 #..XXX... 00110000 #..XX.... 00110000 #..XX.... 00110000 #..XX.... 00000000 #........ 01111110 #.XXXXXX. 00000110 #.....XX. 00001100 #....XX.. 00011000 #...XX... 00110000 #..XX.... 01100000 #.XX..... 01111110 #.XXXXXX. 00000000 #........ 00111100 #..XXXX.. finally the extremely complicated color bar ;) 00111100 #..XXXX.. 00111100 #..XXXX.. 00111100 #..XXXX.. 00111100 #..XXXX.. 00111100 #..XXXX.. 00111100 #..XXXX.. 00111100 #..XXXX..
The final "Fatfont" you find in the variation "Fatfont".
The output of "frombit" is meant to be used "as it is" and is a piece of hex code, to use it in a parsing script you need to line them up and address each word, a bit a boring procedure.
Otherwise of course it is possible to copy this into or onto the image you like to alter and to determine the starting address in it in your parsing script, i didn't used this method since i like to publish the edits and this would mean to publish the binary image of the game.
Fatfont is really just an example it is occasionally very close to Joe's MiniGROM font, an 8x8 bitmap doesn't leaves many possibilities.
---
Bits in bytes can be used for various things, David Braben who developed "Frontier - Elite2" used it to store weapon classes, hyperdrive classes, medals and permissions. A single byte can hold a lot of information.
BURGERTIME
(Cook Race, Beef Drop, whatever)
BurgertTime! (and Bump 'n' Jump) wasn't easy to hack and to keep the title screen (especially Bump 'n' Jump), i had to copy the complete title code to make the infused string work and visible in the animated title of the game. BurgerTime! at least left me more options where to place the string while for "BnJ" i had only two options, the topmost line and one of the two last lines which contain the copyright notice any else disturbs the animation. The topmost is annoying because it strips the animation by this line if i could have used an inverted cyan (sky blue) i would have taken it but it didn't looks good with a blue bar and an alternative text on the very top that's why i decided to mover both copyright notes to the lowest line and to compress them in length by removing some blank spaces, it wasn't easy at all to find the graphics for
this graphical font but in the end it worked out well. BurgerTime! was less difficult and i made this hack previous to "BnJ", apart from copying the whole title code for it there is no special limitation where to position an additional line of text, in fact i opened two but finally used only one line. Sure again you can set the amount of Cooks for this game, the crux within is that you can only set spare lives and pepper together, means what you enter for reserve Peters will be the amount of Peppers you have - unfortunately because for the lethal mod i would have liked to keep the 4 Peppers and same for the advantage mod. But since i only give you two additional cooks for advantage this isn't a big problem, only the lethal hack which offers only a single life would have profit of a Pepper or two more. The maximum for Peter is 128 here else the game gets confused and you will always start as player two while a second player won't appear (respectively first) for a two player game, if you play only alone 256 would work but it breaks the game that's why i say 128 is the maximum.
Sure the special thing (apart from hacking the amount of Peters) is again that i used the intro jingle and in game music for the title, in unlike for "BnJ" this is a sfx and sounds due to this in the title exactly the same as in the game (for the BnJ music i used the simple note player and not the advanced stuff you find in the code thus it fluctuates in volume, expression and it is slightly faster). A must for lovers of the BurgerTime! smash hit just start the game and enjoy the ear piercing chip tune.
Further the hack comes quite handy to label possible hacks made with Arnauld Chevallier's level editor, in my own case i used blatantly the example levels made by David Harley (that's why i unfortunately assumed it is his editor). In my case i named David's new levels "Beef Drop", the code is apart for the infused new levels the same after a editing which means you can use exactly the same script to modify the title as for BurgerTime! Yes i do attempted once (in fact twice) to create new levels with it. Since there seems to be interest in this i will see what i can achieve in a real attempt, in my opinion the editor is pretty easy to understand and i even thought about additional levels but this is future music.
Alternative title for David Harley's levels (20210616)
I made some small changes to the scripts apart from changing the title to "Beef Drop" (instead of Peter's Nightmare), that is mainly that i stripped the second custom text line from both projects and that i added a comment "custom text" to those fields which i suggest are to edit (if at all) it should make more obvious which section of the script can be edited safely, space i left exactly as much that it won't interfere with the title graphics.
BUZZ BOMBERS
I'm aware it's no big deal, but if i made them a little harder like for "Brickout" it gives you the opportunity to fit the game to your skill, if you are really good set the limits higher if not set them lower.
It can increase fun especially for such a single player game, personally i would like to make a game like Astrosmash much harder, i played it far to often in my youth and it's almost like sleepwalking.
Seen from this ward i prefer to play "Space C*nt" because of the larger objects it's somewhat harder as Astrosmash. But still i find it lame that you receive for every thousand pts. a ship, i liked to alter this but haven't found the proper hook yet else i would have for sure presented it. "Buzz Bombers" is not as easy but even here you receive a lot of cans if you play good, it would even profit of a limitation or higher score to be rewarded with an extra spray can. Perhaps together with "Smash" i will see, recently i only have the obvious three to offer, Advantage which adds two cans, Lethal which starts with a single can and the "useless" (in my humble opinion useless) Trainer which gifts you in this case 256 Cans. It's really sad that you only have to finish a level and receive an extra can, it would be much more fun to start with a single one and get rewarded every 10'000 pts. It wasn't hard to alter the few colors and mostly it is again differed by the border color in the (for me) common scheme, blue, crimson, green. The border color was like for most Mattel games no problem only the text string in the animated title was a bit difficult to reach. Music we have already in "attract mode", to call it this, thus i don't had to add a single byte to the original. Yes i like the game, it's obviously an Astrosmash clone in some sort of manner, and yes it's not very nice to spray bees, but who cares it's a game and we neither battle with tanks in real life or do we? I never would burn the ass of my Scots piloting friend but would love it in a game and i know she as well as me. Unfortunately my budget is to low to buy me a machine good enough to play "Elite4". However "Buzz Bombers" is the topic, to compensate the violence against bees in this game i suggest to buy a "bee hotel" they are of importance for our wild bees their population is in danger. As i see right now not all are really useful for bees, i guess what has to be respected most is that the (mostly Bamboo) tubes must be closed on the back end and that it protects good against rain (while this might be even up to where you place them). Don't spend to much money for them most are made in the so called second market which means that the employees receive no salary and if then from society. Who cares for bees as long as some shareholders can brutally grin and get to the money in your wallet. That's the real problem in our world and cause for most bad things - beans and beans counters without a brain.
What about SHARK! SHARK!
Yes i'm aware Zendocon cared already much for it, but what i can offer is let's say a cosmetic hack (perhaps in a future release i will implement some little things he mentioned in "Orbit Theory").
Foremost it fixes a little issue on my PAL Intellivision the wrong olive (brown) title screen, it should fix this also for the Sears as far as jzIntv and MAME let me judge this.
It further adds the ending music to the title, just because it's such a snappy tune and opens you the possibility to translate "GAME OVER" to something 18 (19 because of the Border size 1, 18 because of the bubbles which strike out one character) characters long of your choice (i.e. Juego Terminado).
SpoilerIf one takes himself a little time he can use the config file to alter some of the static (partially even animated) graphics of the game because i had to implement this to the titlecode to enable the YourSoft Smiley, the copyright symbol and centered color bar, the conversion in human readable symbols was for pure curiosity and already with the intention to let the user customize the game, all in all it's "YourSoft" that is my intention behind all here. To edit i suggest a HexEditor which includes a binary value editor like TinyHexer, as long as you don't like to edit the whole content of GRAM. Just type anything into the editor of one word length mark it and open the value editor enter then either the hex value to see the binary code or enter the binary code by the given scheme to see the hex value for it, "lismete" it's a knitting layout and "." is for 0, "X" stands for 1, for conversions of many carts or fonts i suggest to use the tools from jzIntv like "frombit", (rtfm). No gfx of the game so far have been changed it isn't at all needed to do so but perhaps someone has a brilliant idea what to do with the bubbles. When i started out it should just fix the title screen color issue but it didn't worked out, this snippet of code is sensitive to hierarchy, Sears likes it on top of the hierarchy my PAL inty at end of it and the optimum is somewhere between, somewhere which is to determine for each game separate, that sounds still weird to me but i can't help it is how it is. The short titlecode of the original at least has a lot of problems to set the screen proper to cyan. Enlarged to show the altered title it's fine to find a fitting lot for it. Honestly i would have liked to fix only the color issue and to add the melody - but the evil lord shark didn't let me. Of course you can use your own title or change it to a lookalike of the original. If you like to make the original color bar visible delete the section with my own color bar (of course re-address the mess) and enter to the clear screen section (cls) to "startpos" the value 228 (40 characters to start in the third line with blanking) and subtract from "#characters" the 40 characters (0xf0 = 240 total characters to display. 0xf0 - 0x28 = 0xc8 or 200) this lets the color bar appear. Of course you need to lower "pos" (line, character) for the text strings by one or two lines.
The following clip didn't shows my cabin this rather looks like after an alien attack what you see it's my moms flat, i just liked to show that i'm a honest cheater, no - that it really fixes the issue.
(Turn the volume up the sound is very weak, that it is only 83% of speed is caused by the 60Hz/50Hz difference in grid frequency)
Doesn't this smiley equal all evil in this world?
And how it looks emulated
My own voice? Maybe to a much more important topic as hacking games.
U.S. SKI TEAM SKIING, ALPINE SKIING
(SKI ALPIN)
A rather useless one.
I made this hack a few weeks ago and forgot to post it, It didn't changes many things except for a new bright blue title for "ALPINE SKIING" and that i outsourced all strings to translate them like i did for "SKI ALPIN" (german translation). Additionally the easter egg is hacked and it will show "YOURSOFT" on the finish-line banner instead of "PENDRAGON" (note that 8 characters is the ideal length). For "U.S. SKI TEAM SKIING" i kept all except that it will show "U.S. SKI TEAM SKIING" in the title instead of just "SKIING".
(text and no config files?)
ATARI SOFT
CENTIPEDE
(doo-dah blaster)
The Atari weirdness is a bit a challenge to hack, however i reached here what is the goal, custom amount of lives and a different border color, one could even change the screen color to dark green or olive the sad thing is that even in single player mode the counter for player two is spared out and that looks shitty else a dark green Centipede would be an option (or a blue one and you have to guess the location of centipede).
Strange-wisely i never was good in this shooter it was to find on every corner in every bar or mall, if i'm right it was a trackball game it really suited to the giant trackball back then. This feel you won't get on any console except you would have a trackball, a large beefy one. I even reached to hack the inevitable "advantage", "lethal" and "trainer" in a more or less pleasing way in the title screen, this i fixed right today before i wrote it over the copyright on bottom, but i finally found a few unused decles in the title code where i could hack this in. Unfortunately i can't make here a sfx or a little jingle work in the title, it would be nice but that won't work, it will be interpreted as graphic since the title is a sort of bitmap graphic, sort of but however everything i type in here is interpreted as graphic (text is graphic to and an own character set, the Atari games don't use a single byte of the grom i assume, which somehow together with the fact that it contains a lot of useless junk apart from a large credits section explains why the graphics are so limited leave the over-dimensional title away and all the junk text and the game would be an 8k game).
It took me a while to understand how the lettering works but once you have nailed down one you will understand the rest.
Ha, i nearly forgot to attach the file, lol.
Just for completeness and out of respect and the fact that we players haven't seen all this for at least a decade or two i post here all the "junk text" in Centipede.
To start off you get kicked in the ass:
"Why are you diassembling this code? That isn't nice!" note that the wrong spelling is present as shown.
over the whole program follows a sort of joke:
"Joe: Knock knock!"
"Moe: who's there?"
"Joe: Santa!"
"Moe: Santa who!"
"Joe: Santapede is comin' to town!!!"
"Programmed by Mark Kennedy Graphics by Eric Wels Sounds by Russel Haft. Greetings from ATARI!!!"
The title code is at least 1200k, make your own guess.
It would be possible to hide instructions in something that looks like text, guess of the spelling error because i think that was not unintentional, but of course such is very limited but would be possible.
If you wonder how i find values in something a disassembler only spits out a lot of junk or a blank file i do it exactly by such abnormalities, "that looks somehow suspicious" and to recognize a bitmap in a binary isn't so hard you can almost see the bitmap at least you see that it must be one. "Strange repetive use of same glyph - let's see - ahhh... text".
I guess the ideais obvious, as i posted for "Brickout!" sure it could be a bare coincidence since most in a common header points to an address in range 50## which results in a letter P viewed in the editor, but i stumbled over a second one almost as weird as the "P n P IS P & P" - "Tee n P P" it is with a very high chance a coincidence but on the other hand since this is the result of "pointer start of game" and "pointer date/title" it could be arranged quite easy intentional, in limited range but i guess you get the idea.
QuoteFullers Law of Cosmic Irreversibility:
1 Pot T equals 1 Pot P
1 Pot P unequals 1 Pot T
R BUCKMINSTER FULLER
DEFENDER
This game gave me some headache, but at least could change the amount of ships and smart bombs and as a minimum the score is in different colors. It wasn't such a problem to alter the string in the title (to add one there is no space in this title but i couldn't find any way to change the border color for this game, the score is the only thing with which i can differ it from the original. I guess it's at least the third attempt i tried to like to change the frickin' border color. Not even the "GAME OVER" is written in the same manner as the copyright notice in the title, at least even this i liked to change in color but i can't find it.
The colors in the title are limited to blue, yellow, red and yellow on red, that's all you can use here for the lettering.
Sure i could move the identifier "lethal" i.e. to the upper right, but the problem is that i haven't enough free space in the code for the additional text here, thus i had to ovrwrite either "atari" or "williams", i liked to stuff all in the lowest line it works if i write all in one line without spaces and strip the "19" (it would show 80/83WILLIAMSATARI) but that looks shit.
COLECO
For all Coleco releases i removed the "Coleco" copyright notice.
CARNIVAL
For this game i did not made any trainer just the title screen playing the game music, i could change the amount of ammunition if that is wanted.
I would have liked to use a own font for the title string "CARNIVAL" (like for the other Coleco releases below) but i have no cards left for this.
Of course it would be possible to change some of the graphics for this game, note that you need to change the graphics for the running game in the original gfx list, to get to the address of the original gfx list disassemble the .bin (using dis1600 from jzIntv) and overwrite the gfx with yours (check Astromashup as example).
The config files allow to run the game on an Intellivision II (if it runs on the hardware i don't know but with MAME intv2 it works), some Coleco games should already work on an Intellivision II.
LTO Flash! corrects this error but maybe it is of interest for users of the cuttle cart and an Intellivision II.
Carnival_20210830.zip (obsolete)
Alternative box art
I'm aware that Donkey Kong is obsolete nonetheless some trainer versions for this game (advantage 7 men, lethal 1 man, trainer 256 men) of course you can change them to your need.
Likewise for "Carnival" the config files allow to run this game on an Intellivision II.
This game uses very little gram cards but you could change the appearance of Kong (refer to Astromashup).
The versions are color coded as usual, standard=black border, advantage=blue border, lethal=magenta border, trainer=dark green border.
As always the config files are very similar and only the amount of men and the border color changes you might like to use only one (standard) and alter the amount of men in this by choice.
I added the level up tune to the title screen.
DonkeyKong_20210830.zip (obsolete)
Alternative box art
In general the same as for "Donkey Kong", this one won't need a title music/sfx it already plays a stumped down version of the toccata from BWV565.
The altered config files don't respect the level you set which means the amount of men is equal (except for the standard config).
This game should run anyway on an Intellivision II.
DonkeyKongJr_20210830.zip (obsolete)
Alternative box art
I put a lot of effort in the title string but i couldn't get any grip on the amount of bugs you have that's sad and that's why this is only a hacked title playing an opening fanfare.
Intellivision II proof (MAME). Still i haven't found the initial amount lives.
LadyBug_20210830.zip (obsolete)
Alternative box art
This config files come as standard, advantage, lethal and trainer in common color code, the game music playes continous in the title.
Again you could alter a lot of the gfx of the game (refer to Astromashup, you need to change the cards at the original addresses for the MOB gfx).
Runs on Intellivision II (MAME).
This game has as "standard" only 4 mice instead of 6 and as "advantage" 6 mice.
MouseTrap_20210830.zip (obsolete)
Alternative box art
Since you have no lifes in this game i hacked the lap time for this game, as standard you have 99 sec., advantage 133 sec. and trainer 256 sec. per lap.
The game is quite difficult to play emulated since the steering depends on the Intellivision handcontroller, in an emulated play you never know if your car will move left or right.
Plays the reversed title melody of "White Water" as opening fanfare.
Works with Intellivision II (MAME).
Turbo_20210830.zip (obsolete)
Alternative box art
This is one of my favorite games i liked it 1982 and i still like it, the gfx are as low as they are quite close to the original arcade game (since they are very primitive to).
Again it comes as standard, advantage, lethal and trainer in the known color code.
Intellivision II tested (MAME).
It plays the "William Tell" overture in the title.
Since i had a lot of spare gram cards i used them up for a slightly altered "Tower" font.
This game is altered for the border color original would be a yellow border in the setup and inter-level screen and a bright green in the game screen, the setup screen and inter-level screens are now black while the levels are coded in standard=black, advantage=blue, lethal=magenta and trainer=dark green. The border size is opened so that the border won't leap into the screen as in the original note that for standard you can't see the border but you will be warned with a buzz sound anyway.
Also "Venture" offers only 3 men for "standard" instead of 5 and 5men for "advantage"
Venture_20210830.zip (obsolete)
Alternative box art
The last (in alphabetical order) of the coleco releases but it was the first where i changed the the title string to use own gfx.
Standard, advantage, lethal and trainer in common color code, note that the trainer offers only 19 ships because more fighter plane symbols as 19 will crash the game (they would leap out of the screen).
Works with Intellivision II (MAME).
It plays a short section of the end game fanfare of "Space Battle" in the title.
Even "Zaxxon" has only 3 ships as "standard" instead of 5 and 5 ships for "advantage".
Zaxxon_20210830.zip (obsolete)
Alternative box art
PARKER BROTHERS
The first of my newly released hacks had a major bug in the hack and couldn't be started with the right controller it is fixed now plus that i added a new title screen. No "Parker Brothers" copyright notice.
"Frogger" has only 3 frogs for "standard" instead of 5 frogs while advantage offers the 5 frogs.
"Star Wars - The Empire Strikes Back" lurked a long time around because i could not alter the border color unless now. As one can see i removed the "Parker Brothers" copyright and added the credit for "Lucasfilms".
"Standard" offers only 3 ships instead of 5 ships therefore "advantage" offers 5 ships.
Tutankham comes in the usual four versions standard, advantage, lethal and trainer, since i can't change the border color in the levels i had to use a different color code to differ the variations. The standard version only changes the title screen and adds the end level tune to the title screen the levels are colored as in the original, 1=blue, 2=blue, 3=olive, 4=black, "PLAYER", "GAME OVER" and score are in original colors. For all other versions "PLAYER" and "GAME OVER" are in red and score is in yellow. For the advantage version all levels have a blue background, for the lethal hack all levels have a black background and for the trainer all levels are dark green, this is meant to differ by a screenshot which version was running the red "GAME OVER" already will tell that it has more or less men for the game. This game heavy uses the gram cards fortunately enough was left to add the YourSoft logo and the Tunakham font.
No changes to default amount of men.
Tutankham_20210831.zip (obsolete)
-
- 4
entries - 2
comments - 650
views
Recent Entries
Latest Entry
Day 6
I haven't been actively doing this as much recently, I've had the sudden urge to play some Sonic, and, well, you know how that goes..
But yeah, at this point I've learned the majority of the bit-specific instructions. The ones I've learned over the last few days are:
or eor bset bclr bchg
I'll briefly go over each of them.
The "or" instruction is similar to the "and" instruction I talked about last time. What it does is compare the bits of the source and destination operand. If the bits of each are either both 1, or one of them is 1, then the result will be "set" for that bit. "eor" (written as "xor" in most other assemblers) stands for "exclusive or". It works the same way as OR, except, the result will only be 1 if either the destination or source has a 1 for that bit. Unlike OR, it can't be both.
bset, blcr, and bchg all follow the same overall rules apart from the function they serve.
As you may know, there are two different states a bit can be in:
0 = clear 1 = set
As such, these three instructions are pretty self explanatory. What they do is modify the state of a bit that you've specified. They can be used on data registers, and directly into memory addresses. They however, CANNOT be used directly on address registers, but they can be used on the data contained in the offest of an address register.
Let's say you wanted to "clear" a bit in data register 0. Well, for starters, the 68000 has data and address registers which contain a long-word of space. Meaning, you have 32 bits to work with. Now that we know that, the next bit of code should be more clear:
bclr.l #$1F,d0
This will clear the bit 1F (31 in decimal) in data register 0.
Lets say you wanted to clear a bit directly in memory. This is just as simple, except, you can only specify a byte of data. Meaning, you can only change the state of 1 out of 8 bits at once:
bclr.b #$07,$0000002A
This will clear the 07th (8th) bit held at offset 0000002A. Let's pretend that address contains the byte "FF". In binary, that's 1111 1111. Because we've cleared bit 07, that gives us 0111 1111. Which equals 7F. Offset 0000002A now contains 7F.
To clarify, the "bchg" instruction works just like bclr and bset. What it does is reverse the bit specified. For example, if a bit is clear, bchg will make it set, and vice versa. All other rules apply.
That's all for today. I'll have more content soon.
- Read more...
- 0 comments
- 4
-
Recently Browsing 0 members
- No registered users viewing this page.