MULTICOLOR CONVERTER Memory usage: Converter $1001 GG decompress ml - $1900 RBSAVE ml - $1992 CK compress ml - $1A00 Xfer ml - $1A5E (graphic to be converted) $2000 > $4710 BASIC - $5101 > $5FFF Menu ml - $6000 > $6A9A (converted graphic) $7800 > $a000 Basically, we're LOADing the multicolor graphic to be converted into $2000 and the finished TED multicolor will be found at $7800 to $a000. The conversion process is automatic and only takes a few seconds. Each byte of the C64 multicolor map is examined and changed, by a table, to the proper Plus/4 value... more on that later. When you are into the converter, you are able to change a number of parameters, to suit you. They are all defaulted and will work out, in most cases, good the way it is set up. On the converter screen: SIZE Plus/4 C-64 x,y Start : 00,00 ff15:* d020:0 x,y End : 27,18 ff16:* d021:0 Original graphic Converted graphic Data :2000 Data :8000 Color :3f40 Color:7800 Color3:4328 /D800 Data/ C-64 Color : 0 1 2 3 4 5 6 7 Plus/4 Color: 00 71 32 43 44 45 16 67 Change Color: * * * * * * * * 8 9 a b c d e f 38 09 4b 21 31 6f 36 41 * * * * * * * * PRESS ESC You will note that as you cursor on the screen, the cursor will jump to the various parameter settings. You may change some... but some will not allow you to change. Those are ones that need to be left where they are set. The first parameter, Size, is the beginning and ending of the screen co-ordinates. The default will give you a full screen multicolor conversion. The parameters to the right are for the $ff15 and $ff16 color values. As they are set, the default is 00 (black). If, when you convert a multicolor graphic, you find that the background color2 obviously should be, say white, then you'd change the "0" following the "d020" on the screen to a 1. Then just reconvert: ff15:* d020:0 ff16:* d021:1 I had to do this on a graphic called "LEO LION" as the default caused the eyes to be black. Usually, as I said, the default values will be okay. The asteriks (*) can be changed to, say, 0 and the particular parameter will not be converted. This holds true with the color table at the bottom. Those values are the ones that match the colors, on the Plus/4, that are used in a Koala graphic. You may even change the memory locations by typing the value over the current one. Just be careful... they are set to the proper values, now. You won't be allowed to change them to really illegal values. The multicolor file will LOAD, then it will SYS to the converter and the above screen. If you decide to accept the defaults (try it that way the first time) just press the ESCape key to start the process. The converter will go to work. After a few seconds, your converted picture will be on the screen. While you are looking at the graphic, you can press the "" key to toggle the border color. While the black default border is okay on most pictures, being able to change it is nice. I put a "double-action" click on the keys, as ml is pretty fast on key detection. Hold the key down to cycle quickly. Press a couple of times to cycle each color value. The color that you decide on, will be saved with the final file. The value of $4B (K) will be SAVEd into the file at $1BFB and $1FFB as a flag to indicate that it is a converter Koala. It will also indicate, in the case of other formats, that it was converted from a C64 graphic file. This is necessary, because the colors in a converted C64 graphic come from a different table of values. To exit the graphic, just press the Spacebar. I built an RBSAVE (Relocating BSAVE) routine into this version. It will automatically switch out ROM, to SAVE the graphic in RAM (under the ROM). It will also change the address of the file to $1800 as it is SAVEd. Also of interest: $10b6 is the double key press $139b holds the displayed color table values $1429 holds the displayed memory values the value for $ff19 is at $1bfd & $1ffd in the graphic file the value for $ff16 is at $1bfe & $1ffe in the graphic file the value for $ff15 is at $1bff & $1fff in the graphic file NOTE!: I haven't had any problem using a 1581 drive as both the source and destination drives, with this program. The only quirk is that, if you stop the program and swap to another disk of graphics, then reRUN it... it won't pick up the new directory. It will go to the "Ready" screen. It isn't a simple matter of initializing the disk. The way to handle this, if it happens, is to press the F3 key (directory) and when the directory listing is done, just type RUN. The proper values that are automatically inserted into the DATA, COLOR and COLOR3 columns for various formats: MICRO ILLUSTRATOR(C64) BLAZING PADDLES KOALA DATA:27E4 (8384bm) DATA:2000 (40960bm) DATA:2000 (24576bm) COLOR:2014 (6384cm) COLOR:4000 (49152cm) COLOR:3F40 (32576cm) COLOR3:23FC (7384sm) COLOR3:4400 (50176sm) COLOR3:4328 (33576sm) ADV.ART STUDIO(OCP) ARTIST 64 (MULTI) DATA:2000 (8192bm) DATA:2000 (16384bm) COLOR:3F40 (16192cm) COLOR:4000 (24576cm) COLOR3:4338 (17208sm) COLOR3:4400 (25600sm) You can add values for virtually ANY additional format, manually: FLYING COLORS(C64) RAINBOW PAINT DATA:2800 (6144bm) DATA:2400 (24576bm) COLOR:2400 (7168cm) COLOR:2000 (23552cm) COLOR3:2000 (8192sm) COLOR3:4340 (32576sm) It will require a bit of simple calculation, on your part. If you know the area of memory that your graphic uses, or you can find it, then the necessary calculations are pretty easy. Of course, it helps if you use a decimal/hex hand calculator! Using the Koala format for example: Koala format: Bitmap: $6000(24576) Color memory: $7F40(32576) Screen memory: $8328(33576) The bitmap is at $6000, so you'd subtract $4000 from it, to place it at $2000. This is your first value that follows the "DATA:". The color information starts at $7F40, so you'd again subtract $4000 from the value, giving a value of $3F40. This is the value that will be entered, following the "COLOR:". The screen memory (used in creating the luminance table on the Plus/4) is located at $8328. Subtracting $4000 will give you a value of $4328. Place this value after the "COLOR3:". IMPORTANT! NEVER allow your values to go below $2000. Otherwise, you will be reading the ML, of the converter, instead of the information that you want. The format for RAINBOW PAINT is an example of this. Instead of the bitmap being first, in memory, the color data is first: RAINBOW PAINT format: WRONG VALUES! RIGHT VALUES! Color memory: $5C00(23552) DATA:2000 (bm) DATA:2400 (bm) Bitmap: $6000(24576) >COLOR:1400 (cm) COLOR:2000 (cm) Screen memory: $7F40(32576) COLOR3:3F40 (sm) COLOR3:4340 (sm) If you'll give the above example a bit of thought, you'll see a pattern to it. The "DATA:" is ALWAYS the bitmap, the "COLOR:" is ALWAYS the color memory and "COLOR3:" is ALWAYS the screen memory of your C64 graphic format. Since the graphic file will be LOADed into memory, by the converter, with the beginning of the file at $2000... it doesn't matter in what order the various parts of the format are. You can calculate the necessary values, to be placed in the converter, easily! In the above example, the color information is first in the file. This is found at $2000, in your Plus/4's memory, when the converter has LOADed the file. Since the color information is at $2000, that is the value that you want to place after the "COLOR:". From the format map, above, you'll see that the file normally LOADs into $5C00, on the C64. Since we are LOADing it into $2000, on the Plus/4, we simply subtract $2000 from $5C00, giving us the value of $3C00. This is the value that we must use to adjust the locations of the bitmap and screen memory. For the bitmap, subtract $3C00 from the normal address of $6000, giving us a value of $2400. This is the proper value to be placed after the "DATA:". For the screen memory, subtract $3C00 from the normal address of $7F40, giving us the final value of $4340, that is placed after the "COLOR3:": Using this method for adjusting the memory values, you can convert virtually ANY multicolor format, for use on your Plus/4!