Jump to content

baktra

Members
  • Posts

    1,323
  • Joined

  • Last visited

Everything posted by baktra

  1. Yes, there are many small touches to finish. Mostly because the new "Standard Plus" plugin is a specialty (as it is basically a plugin of sub-plugins). I have also an additional conundrum. TURGEN is still targeting JDK 8, which is still maintained, but out of date. What to do with that? Cast your votes
  2. Have a first NHP tape image created by TURGEN ardys.cas
  3. It was the cook who was missing. Good news is that I've finally figured out the mild obfuscation: Decoding (from the loader source code): Initialize 'magic byte' from the EOF block of the stage 0 loader (MAGIC). The magic byte is at offset X'67' of the EOF block and is different for each file. For each user data byte in the SIO buffer, do the following: Get next user byte from SIO buffer (BYTE) Get index of the byte in the SIO buffer (INDEX) Calculate TEMP = XOR(BYTE, INDEX) Calculate DECODED_BYTE = XOR(TEMP, MAGIC) Increment MAGIC by 1 Encoding (I need to implement this in Java) Initialize 'magic byte' from the EOF block of the stage 0 loader (MAGIC) For each byte: Take a byte to be encoded (BYTE) Take index of the byte in the SIO block (INDEX) Calculate TEMP = XOR (BYTE, MAGIC) Calculate ENCODED_BYTE = XOR (TEMP, INDEX) Increment MAGIC by 1
  4. The adventure continues. After some silence from me (family matters, visiting India), I am ready to continue the development. What is on the plate for the upcoming release 9.1.4? 1. Finishing the NHP Support (top priority, of course) 2. Add turgen.sh convenience script (requested by @seban) 3. Fixes in the gencas.sh convenience script (requested by @seban) 4. Tape Sides creator. Add possibility to randomize order of the project items (requested by @seban)
  5. Going three times to the 'Kotva' shopping mall to buy a collection of games on tape that I badly wanted and father was willing to pay. The first two times, someone called police and reported that there was a bomb in the shopping mall (doing so was popular in the Czech republic in early 1990s). Each incident meant one extra week of waiting. That was a horror for a small boy, impatient and hungry for gaming.
  6. Ghost Encounters, the atmosphere was ghastly.
  7. This is a clear necro post. The source code (including the level editor) is now available here: https://github.com/baktragh/culomin_sources
  8. I didn't have games that would really "stick", because as a kid, I was rather impatiently jumping from one game to another, but I spent a rather generous time playing these: Vanguard (a surprisingly decent shooter) Rescue on Fractalus (a classic) Montezuma (the 8K version) Ghost Busters (only to be disappointed in the end, time waster) Star Raiders (replayability) Fred (good platformer from Poland) Spy Hunter (always happy to get to the icy roads. If only I knew how to use the 2nd joystick) Hero (only if I knew then that one doesn't need bombs to get through the walls) On the other hand, my father had a tendency to stick to one game and keep playing until he mastered it. BMX Simulator. His record for the first course was 19.8 seconds. Ollie's Follies Pastfinder Arkanoid Tapper
  9. If you are such a fan of the game, I would recommend "T.D. Factor II", which is a modified version created by fandal. Available at a8.fandal.cz Video:
  10. Right. I guess it is the same with computer Viruses and Anti-Viruses. And why there are always defects in software … who would pay the sustaining engineers then? This XORing of the data is fortunately merciful. So merciful that I will keep it in the stage 1 loader and obfuscate the data in TURGEN, rather than doing it the other way.
  11. Cooking continues. Now, TURGEN can generate a valid 27-byte header block that holds the file name and the number of blocks as described above. No centering of the file name yet, but that's a cosmetic issue. The next step is obvious—convert the binary load file. Unfortunately, the file format prescribes a mild XOR-based obfuscation, so it will be more fun than anticipated. Pirated software with its own copy protection 🙂
  12. Atari BASIC, 1990, I was 6. That exposure helped me a lot. Games and programming were a good incentive to learn English early. Fortunately, my parents supported me and paid me English lessons for children and computer courses 3 years later.
  13. Still cooking the NHP support. I have a successful conversion of the stage 0 and stage 1 loaders. Moving on to the binary load file conversion to the NHP non-standard blocks.
  14. Of course, if you know that your program takes actions that will prevent correct warm start, use the official vector for cold start. By the way, what if the cold start routine is nonexistent too (e. g. the RAM under ROM is active and address 58487 contains just garbage)?
  15. MoveBlock()-like functions typically have some intricacies. For example, they can expect specific direction of the movement, specific requirements for overlapping or can be abused to populate a block of memory with a single, selected value. I remember abusing TBXL's MOVE to quickly zeroing out screen memory.
  16. For character sets and PMG, there are certain requirements for this alignment. The requirements are described in the documentation for the respective hardware - GTIA, ANTIC. Sometimes it is just done for convenience. If your custom block begins at a page boundary, you can use just one byte to point to that block.
  17. I will name it "NHP 3.6 Rainbow" and I will keep the loader as it is. Of course, transfer speed and program title will be fully configurable, including centering of the text and possibility to enter internal hex codes to use the whole character set and colors.
  18. A preliminary analysis of the loader shows the following: The file format 1. Cassette boot file using the "data in EOF block" Trick. In essence a stage 0 loader. The loader is zapped with file name and number of blocks. 2. Non-standard, long block that holds the binary loader code and data. This is loaded by the stage 0 loader. 3. Non-standard, short block that holds file name and the number of blocks expressed as 3-digits in internal code and as one byte in binary code. 4. Series of 257-byte blocks that are as follows: 0x55, (calibration sequence) 0x55, (calibration sequence) blkno (block number) userdata[] (data of the very block) .. numbytes (number of valid bytes of the user data), full blocks have 252 ($FC) bytes chksum (SIO-checksum) The loader It is one of the better ones. Binary load files with INIT segments are supported, though the fancy screen of the loader can still spoil loading for some files. Ability to re-read a block is good. The loader is located in the RAM under ROM, so its XL/XE only and binary load files using the area cannot be loaded. The maximum number of blocks is 255, which gives a maximum file size of approximately 62 KB. Loading such a file would take around 9 minutes when 900 bps is selected, which is at the borders of practicality. The loader could have been smaller, if the fancy screens were removed. That would of course reduce the 'cool' factor. While analyzing the loader, I've enhanced TURGEN's Tape Image extractor so that it can display chunk data also in the internal code. So what is next? I will introduce a new plugin named "Standard Plus", which will become a "collection" of non-standard loading systems for non-modified data recorders. The first conversion type available will be "NHP" with a Chilean flag in the combo box. This looks like a plan for TURGEN 9.1.4 "Puerto Montt"
  19. Python is one of the more logical steps, given your background. Python, like BASIC is meant for beginners and doesn't have a steep learning curve. There are similarities with BASIC. However, I would simply learn Python from scratch. While doing so, you will find familiar concepts as you go.
  20. The "Turbo 2000.rom" cartridge is an image of a cartridge equipped with a power button. It holds some weird version of the Polish KSO Turbo 2000 system. Therefore, after attaching the cartridge and performing a cold start, you will see the "Czekaj...." label until you detach the cartridge. Then it will start to respond. Of course, to detach it, you must first set Altirra not to perform the cold start when changing cartridges. After detaching, the loader will ask you if you want to enable BASIC. Then a menu appears. You can select the L option and enter D:* as a file name and press Return. Then you can load your tape. I was not able to load a normal KSO Turbo 2000 file, though.
  21. Some Atari 5200 games used the numerical pad. One example I remember is the Soccer game, using the numerical pad for various types of kicks. The unofficial port to Atari 800 didn't provide a full replacement of that, as far as I know. When I was porting my own game named TRAIN from Atari 800 to Atari 5200, I had to cut down the non-in-game music and remove the in-game music completely. Otherwise, the game wouldn't fit into a 32 KB cartridge.
  22. I would like to help, I would need both files (the ROM and the .WAV file). You cannot just press PLAY, because as with the real hardware, pressing play does nothing until the computer sets the MOTOR CTRL signal to active (the loader is supposed to do that after you command it to load a file). Also, to avoid confusion, there are three systems loosely named "Turbo 2000". They use different loaders and file formats. I would need to determine which one you are about to use. 1. Turbo 2000 from JRC, Prague, Czechoslovakia 2. KSO Turbo 2000, Warsaw, Poland 3. Turbo 2000, Wrocław, Poland 4. Turbo 2001, Turbo 2000F, Poland. Derivatives/Iterations of the KSO Turbo 2000
  23. Wow, flutter, tangles, fast draining of the batteries, size as a brick. Well, yeah. At the time, i was happy to have one too. But not now.
  24. In general, the set of steps is the following: 1. Setup the cassette emulation System>Configure System... > Cassette - select the desired emulated turbo system and turbo decoding algorithm. Disable the cassette auto boot too. 2. Insert the cartridge with the turbo loader, let the loader to initialize. If the loader comes as .xex file, boot that file. 3. Insert the WAVE file/tape image - File > Cassette > Load ... 4. Command the turbo loader to start loading (how depends on the loader) 5. The loader loads the file. Altirra's OSD should keep displaying the position in the tape and indicate if turbo loading is activated.
×
×
  • Create New...