Kroah
Members-
Posts
56 -
Joined
-
Last visited
Content Type
Profiles
Forums
Blogs
Gallery
Events
Store
Community Map
Everything posted by Kroah
-
Need info about the ABC basic compiler (from Monarch Data Systems)
Kroah replied to Kroah's topic in Atari 8-Bit Computers
Hey all, Better late than never, i finally took some time to clean up the code of my C# ABC Decompiler (ported from the work of Thomas Richter written in Turbo Basic). The zip contains both the C# source and the binary with my WIP on Imperium Galactum (not finished because of the size of mixed asm<->basic code, very boring): ABC Decompiler - v1.00.zip I think Thomas Richter is OK to post his Turbo Basic program, but i will remove it if needed: ABC Compiler & Decompiler.zip You will find inside: - "ABC A Basic Compiler 1.05 (1987)(Monarch Data Systems).atr": The original ABC Compiler (itself compiled with ABC) - "ABC - 1.05 - ATASCII.txt" & "ABC - 1.05 - ASCII.txt": The decompiled compiler (Basic) - "UNKOMP.TRB" & "UNKOMP - ATASCII.txt" & "UNKOMP - ASCII.txt": The Thomas Turbo Basic XL Decompiler (Basic) -
Need info about the ABC basic compiler (from Monarch Data Systems)
Kroah replied to Kroah's topic in Atari 8-Bit Computers
Only with ABC. MMG compiles to ASM language, not p-code. So it can't be decompiled, only disassembled. Some games (or parts of them) compiled with ABC: - Cavelord - F15-Strike-Eagle - Soloflight 1 & 2 - Imperium Galactum - NATO Commander And many games use copy protection p-code compiled with ABC to obfuscate the protection. It's way harder to trace/disassemble an interpreted language than asm code. -
Need info about the ABC basic compiler (from Monarch Data Systems)
Kroah replied to Kroah's topic in Atari 8-Bit Computers
I will post it here after some bugfixes. You are right. The one i'm actually decompiling and commenting is Imperium Galactum. The main part is coded in compiled Basic with ABC, and some asm gfx & I/O routines are called with the USR instruction. Here's a sample of the decompiled pseudo code after some automatic cleanup (well... the code tag breaks the indentation...): 340 PrintNonPlayerLive: POS. 2, 15 PRINT "7) NON-PLAYER LIFE" POS. 29, 15 ON (V40_nonPlayerLiveValue_1Yes_2No + 1) GOTO 365, 366, 367 360 PrintRandomSetup: POS. 2, 16 PRINT " RANDOM SETUP" POS. 29, 16 ON (V42_randomSetupValue_1Yes_2No + 1) GOTO 365, 366, 367 365 PRINT "YES NO" RETURN -------------------------------------------------------------------------------- 366 PRINT "_Y_E_S NO" RETURN -------------------------------------------------------------------------------- 367 PRINT "YES _N_O" RETURN -------------------------------------------------------------------------------- 380 InitPlayerNameEtc: GOSUB 2_ClearScreenAndSetCursorToBottomWindow PRINT "WHAT IS THE NAME OF " PRINT "PLAYER ";V28_j + 1; INPUT V1_string1$ IF ((V1_string1$ == "") OR (LEN (V1_string1$) > 17)) THEN GOTO 380_InitPlayerNameEtc 390 V1_string1$(LEN (V1_string1$) + 1) = " " 395 V1_string1$ = V1_string1$(1, 17) FOR V53_ = 1 TO 17 POKE (14104_Game_playersNameMin1_S17 + (V28_j * 17)) + V53_, ASC (V1_string1$(V53_, V53_)) NEXT V53_ The same without cleanup but pure Atari basic: 340POS.2,15:?"7) NON-PLAYER LIFE":POS.29,15:ONV40+1 GOTO 365,366,367 360POS.2,16:?" RANDOM SETUP":POS.29,16:ONV42+1 GOTO 365,366,367 365?"YES NO":RET. 366?"ÙÅÓ NO":RET. 367?"YES ÎÏ":RET. 380GOS.2:?"WHAT IS THE NAME OF ""PLAYER ";V28+1;:I.V1$:IF(V1$="") OR (LEN(V1$)>17) THEN 380 390V1$(LEN(V1$)+1)=" " 395V1$=V1$(1,17):F.V53=1 TO 17:POKE(14104+(V28*17))+V53,ASC(V1$(V53,V53)):N.V53 -
Need info about the ABC basic compiler (from Monarch Data Systems)
Kroah replied to Kroah's topic in Atari 8-Bit Computers
Yes, it's funny. I find that it's even more funny to compile the compiler with the compiler. When i saw that the game i disassemble was an interpreted p-code, i said "oh my bad, going to be difficult". Then i thought "hey, but if i disassemble the compiler, i could understand the p-code format, cool. but... then i couldn't believe it... i stumbled again upon interpreted p-code. VERY funny. The decompiled code is Atari Basic code. It can be listed, executed and whatever you want to do with. So it can be compiled again. Some decompiled programs have too many variables, so it can't be loaded in Atari Basic. For those, you should execute them with Turbo Basic for example. -
Need info about the ABC basic compiler (from Monarch Data Systems)
Kroah replied to Kroah's topic in Atari 8-Bit Computers
I have ported the decompiler to C#. It has the same features has the Turbo Basic XL version and add the following : - more lisible output (but can't be loaded back on Atari, useful to understand an unknown basic program). - a dictionary can be defined to replace generic variable names by user defined ones. - labels can be defined to name some lines. I will post it here after some tests if anyone is interested. Credit goes to Thomas Richter for his initial work on Atari. -
Need info about the ABC basic compiler (from Monarch Data Systems)
Kroah replied to Kroah's topic in Atari 8-Bit Computers
Thanks to Thomas Richter, he has sent me a copy of his Turbo Basic program. It works great and i have been able to get the Basic code back from the p-code. If you are interested, you can PM me. -
Need info about the ABC basic compiler (from Monarch Data Systems)
Kroah replied to Kroah's topic in Atari 8-Bit Computers
Hello Atari Frog, I have the manual of the MMG compiler (which is a re-release of datasoft compiler). This manual contains some interesting info about the format of the compiled executable. So i think that if i can get the ABC compiler manual, it may contain some good info too. Thank you very much Russ for the ABC compiler manual, this is what i was looking for! Concerning the decompiler, i'm talking about a turbo basic program which decodes the p-code of a ABC compiled program. The decompiled code is a basic program (without variable names and REM). FYI, ABC compiles a basic program to intermediate "p-code" instructions. Those are interpreted by a runtime interpreter which is linked with the p-code instructions, so we get a self executable program. Funny, ABC itself is written in basic and compiled with ABC compiler. So if anyone owns the UNKOMP.TRB ABC decompiler... I have emailed Thomas Richter (Atari++) who owned a copy of this program 13 years ago. I will let you know. -
Hello all, I'm actually decompiling a basic program compiled with ABC "A Basic Compiler" from Monarch Data Systems. It becomes a little boring because the program uses a runtime interpreter executing p-code, so i'm decompiling the interpreter first. I could then decompile the p-code. Having read the manual of the MMG Compiler (it contains interesting info about the compiler), i think the manual of ABC could speed up the process. - Does anyone have the manual of this compiler? Someone in 1999 said he got a turbo basic decompiler UNKOMP.TRB for the p-code generated by this compiler (p-code -> basic): http://groups.google.../month/1999-07? - Does anyone have this decompiler? I really can't find any info about ABC beside the disk images and the fact it uses its own p-code. Any help appreciated!
-
I liked a lot Fish! ... and Ooze: Creepy Nites:
-
Help me to find this Schreckenstein Cracktro
Kroah replied to Kroah's topic in Atari 8-Bit Computers
Thank you very much, this is the version i was looking for! Heaven, you were right with the crack team: "The outsider", and the logo is dropping too . Here's a screenshot of the Cracktro and the dump you sent me if anyone is interested: Schreckenstein cr Outsider (The).zip -
Hi all, I need some help to find a dump of the cracktro used in one version of the game Schreckenstein. I don't talk about the Axis intro. The cracktro uses a music you can find on the S.S.M.B.'s Music Kaleidoscope (music disk). It's called 'Red Moon ? ?'. Here's the mp3 of the music: Schreckenstein.mp3 The cracktro was very similar to the intro used by Lucasfilm games. See the first seconds of this video: . The cracker group may be something like 'Outlanders' or 'Outsiders'. Thanks in advance for your help, Kroah PS: if anyone knows the original source of the music (classical music?)
-
is there any app on the PC that mimics Degas Elite?
Kroah replied to STE'86's topic in Atari ST/TT/Falcon Computers
Can you please update the download link on your site, it seems broken. Thank you! -
Hi all, Even if I mainly post here for 8bit stuffs, i take the opportunity that Atari-Forum is down to announce that the CoCoNet section on my website is done: http://bringerp.free...est/remake.php5 For those who don't know, CoCoNet is a Colonial Conquest remake i work on for several years. The most important features are Internet/LAN multiplayer games and simultaneous based turns. If you have any questions, you can ask here or at my forum. Hoping you will enjoy it!
-
My Alternate Reality Reverse Engineering work on ST
Kroah replied to Kroah's topic in Atari 8-Bit Computers
I'm ending the translation of my mule reverse engineering. After which i'll finish my multiplayer (TCP/IP) port of Colonial Conquest on PC. It features Atari ST gfx but 800 XL rules and players give simultaneous orders, waiting for other players for combat phase. You can see some screenshots there: http://bringerp.free.fr/RE/phpBB2/viewtopic.php?t=64 -
Hey all, Some news to tell you i've finally updated my website with my Alternate Reality reverse engineering work: http://bringerp.free.fr/RE/ Even if it's based on the Atari ST version of the game, i know there are lots of fans of the Atari 800 version here. You may be interested or just curious . I hope we could compare both versions too, using the disassembly project of Jim Norris. I'm open to any suggestions. And thanks to Acrin, Hicksman, Robert and Wrathchild for their help and support! Have a nice reading moment!
-
Hi Ijor, I've never noticed this typographical error in the cracked version of MULE... Shame on me... Do you have any link stating this? I can't find it Thanks
-
I don't know enough about assembly programming to know how easy or difficult this fix would be. The score rolls over 65535 - which tells me that the score is stored in a 2-byte field in hex (x'FFFF' = 65535). Could a spare four (or three?) byte area be found somewhere else in storage to be used for the score (actually four of them I guess, one for each player)? If so, could the code then be changed to point to these new locations for storage and calculation of the money amounts? Perhaps base the code/storage on the TOTAL money amount for each player, or even the colony total value, as these already go above the 65535 limit. I doubt this does more than just state the obvious, but that's my layman's take on it. Also - as jacobus found, it happened to me in both the games I played, one on month 22, and the other on month 23, so I'd say that it is indeed easy to roll over this amount. Great work, by the way. My MULE playing buds can't wait to play this once the bugs are worked out. I get 2-3 guys over once a month just to play a couple games of MULE - on the real hardware (both Atari & C64). We have a blast! --Timster-- Effectively, players cash are stored in 2 bytes each. Since developers thought no-one could reach $65535 (in 12 months), no overflow checks was added. Let's look at some alternatives: 1) Expand the cash to 3 bytes: given that all arithmetics (straight binary and BCD) are done with the 2 bytes, lots of code must be updated. 2) Add overflow checks: not interesting because, like the first idea, lots of code must be updated, and $65535 is easily reached. 3) Decrease the number of months to 18: if we are sure nobody reach $65535 in 18 months, it's possible. Don't you think 24 months are a little too much? 4) Decrease all prices/cash value, so $65535 could not be easily reach: possible, but i dislike the idea to change the original game in this way. I think 3) is the best solution... do you? Kroah
-
I couldn't stop myself, this is my drug... I've fixed the gambling and wampus bonuses. There's still the cash overflow bug, i don't know how to resolve it easily... any idea? Do you easily roll over your score? Here are the new changes: Description: Wampus bonus = wamping_bonus_8D3B [round / 4]. round 1 to 3: 100 round 4 to 7: 200 round 8 to 11: 300 round 12: 400 Change: Wampus bonus = wamping_bonus_AF4B [round / 4]. round 1 to 3: 100 round 4 to 7: 150 round 8 to 11: 200 round 12 to 15: 250 round 16 to 19: 300 round 20 to 23: 350 round 24: 400 8C52: search: ADC $8D3B,X = 7D 3B 8D 99 BA B2 B9 BB update: ADC $AF4B,X = 7D 4B AF 8C5B: search: ADC $8D3C,X = 7D 3C 8D 99 BB B2 B9 09 update: ADC $AF4C,X = 7D 4C AF 8C94, 8C97: search: LDX $8D3B,Y = BE 3B 8D B9 3C 8D 20 LDA $8D3C,Y update: LDX $AF4B,Y = BE 4B AF B9 4C AF LDA $AF4C,Y AF4B: search: A6 8C 10 D0 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 update: 64 00 96 00 C8 00 FA 00 2C 01 5E 01 90 01 Description: Gambling bonus = random [0; timeleft] + gambling_bonus_6A7E [round / 4] (max 250) round 1 to 3: 100 round 4 to 7: 150 round 8 to 11: 200 round 12: 250 Change: Gambling bonus = random [0; timeleft] + gambling_bonus_AF6B [round / 4] (max 250) round 1 to 3: 100 round 4 to 7: 125 round 8 to 11: 150 round 12 to 15: 175 round 16 to 19: 200 round 20 to 23: 225 round 24: 250 6AA0: search: ADC $6A7E,X = 7D 7E 6A 90 02 A9 FA AA update: ADC $AF6B,X = 7D 6B AF AF6B: at address: 0x0166FB change to: 64 7D 96 AF C8 E1 FA Have fun, Kroah Mule___24_months___v0.2.zip
-
Hi all, Recently Igor Barzilai (author of some Atari 2600 games) contacted me with the idea to play MULE after the 12th month. Because his idea was a brillant one, I felt the motivation to investigate the code. After few hours of digging, i enumerated the part of codes which could be involved by this change. I wanted the number of months for the Standard and Tournament level being set to 24. Even if I think it's a little bit too much, it's easier to implement. Because i've only patched the ATR (no code added), there're still 2 problems (they don't prevent to play though): - after round 12, the wampus and gambling bonuses are incorrect (arrays are too small). The amount is about half it should be. Those 2 points can't be fixed without adding some new codes. You'll find the original and the updated ATR in attachments. Any feedbacks are welcome! I hope you'll enjoy it, and thanks to Igor for the idea. Here's the updates i've done to the ATR: Description: Music length differs every 4 rounds. Change: Set to the maximum (as round 12). 252C: search: LDA numRound = A5 B1 (4A 4A 0A A8 B9 1F) update: LDA #12 = A9 0C 2540: search: CMP #12 = C9 0C (90 05 A9 00 8D A0) update: CMP #24 = C9 18 Description: Food requirement increases every 4 rounds. Change: Food requirement increases every 8 rounds. 315E: search: AND #3 = 29 03 (D0 01 C8 98 0A 0A) update: AND #7 = 29 07 6294: search: AND #3 = 29 03 (D0 03 EE 76 B3 AD) update: AND #7 = 29 07 Description: Crystite price = round * 4 + 100. Change: Crystite price = round * 2 + 100. 34A9: search: ASL A = 0A (69 64 8D F7 B2 A2 03) update: NOP = EA Description: Gambling bonus = random [0; timeleft] + gambling_bonus_6A7E [round / 4] (max 250) Change: To do Description: Hardcoded month limit (12). Change: Set to 24. 6E01: search: CMP #12 = C9 0C (D0 43 A9 10 85 D4) update: CMP #24 = C9 18 6F59: search: CMP #12 = C9 0C (D0 03 20 98 30 A9) update: CMP #24 = C9 18 7002: search: CMP #12 = C9 0C (D0 07 AD 25 B3 C9) update: CMP #24 = C9 18 70A9: search: LDA #12 = A9 0C (C5 B1 D0 12 AD 25) update: LDA #18 = A9 18 71E6: search: LDY #12 = A0 0C (C4 B1 D0 0C AC 25) update: LDY #18 = A0 18 89E0: search: CMP #12 = C9 0C (D0 03 4C 43 8D A9) update: CMP #24 = C9 18 Description: Events quality (cash gained or lost) depends on round. Amount = A * 25 * (GAME_NUM_ROUND/4 + 1) with A between [1; 8] (50 to 800). Change: Amount = A * 15 * (GAME_NUM_ROUND/4 + 1) 8292: search: LDY #25 = A0 19 (20 30 11 A8 A5 B1) update: LDY #15 = A0 0F Description: Wampus bonus = wamping_bonus_8D3B [round / 4]. Change: To do Description: Initialization of the number of months for the standard and tournament level (12). Change: Set to 24. 45DA: search: LDA #12 = A9 0C (8D 6F B3 A9 00 8D) update: LDA #18 = A9 18 Description: The event probability decreases when it occurs. Change: Doubled all the events probability. 7B7D: search: 03 02 03 03 03 02 02 02 update: 06 04 06 06 06 04 04 04 Description: The success message depends on the score. Change: Doubled the needed score for each message. 6E05: $2710 (10000) -> $4E20 (20000) search: LDA #$10 = A9 10 (85 D4 A9 27 85 D5 20 AA D9) update: LDA #$10 = A9 20 search: LDA #$27 = A9 27 (85 D5 20 AA D9 20 B6 DD A2) update: LDA #$4E = A9 4E 6E24: $4E20 (20000) -> $9C40 (40000) search: LDA #$20 = A9 20 (85 D4 A9 4E 85 D5 20 AA D9) update: LDA #$40 = A9 40 search: LDA #$4E = A9 4E (85 D5 20 AA D9 20 B6 DD A2) update: LDA #$9C = A9 9C Have fun! Kroah Mule___24_months.zip
-
Hi Heaven, Have you seen that at the beginning, the "dagger" is in the armor slot and when you equip it again through your inventory, it goes to the weapon slot and at the same time, the "leather armor" takes its place ? By the way, why your dagger is mis-spelled "daggerR" ? Is it the "R" of leatheR ?
-
It's me again I've just made another game, here's my observations: - sometimes when i pick up an armor, it writes the new armor name correctly at bottom left, but the weapon name becomes some garbage. Sabre became "S" and Dagger "D:" - After some levels, rooms connection were strange. I ended up in a cul-de-sac and when i gone back through the same door to the previous room, it was in fact another room. 2 rooms later, cul-de-sac again, and the previous room became another one again. Now i'm blocked between 2 rooms 62 and 63 without any exit (see attached save state). Any idea ? Thank you, Pascal 2_rooms.zip
-
Thank you. There will be soon an update concerning Alternate Reality ST, followed by the translation of the mule document and something on Colonial Conquest. I think the fun of these games comes from 2 mains points: - The feeling of evolution (the character controlled by the player evolves during the game through his stats and items and feels it, not only numbers, ie the character moves faster, sees further...): you've already caught this point i think. - The feeling to have an impact on the course of the fights other by waiting the end of combat: i don't know if it's taken into accounts, but like gateway to apshai and archon, the player must be able to alter the fight not only with stats and items, but with its real dexterity too (like firing an arrow at the good time, running around the monster, doing hit-and-run, ...) I understand. In fact the only missing feature here is to be able to know whether or not to pickup the laying armor. I don't think the player needs to keep them all in his inventory. So, how to give this information to the player? i don't know. Your way is a possibility. I really don't know the faisability: - Your idea about a '+' seems interesting. The character must then press a key to enter manually the upleveling. Personally, it doesn't bother me to hit an extra key for this. It's even better because after the leveling, the fight goes on and it's not always easy to understand the situation because the character and monster aren't visible during upleveling. With this implementation, the fight will not be interrupted. - If people don't want to change the way upleveling is handled, you could put the cursor on another location than the stats when leveling is called, having no effect when triggered. The player could then move the cursor on the stats. Last point: If the blue bar is the experience gathered until the next level, i think there's a bug when tabbing: - the blue bar is decreased each time tab is pressed. When it reaches 0, it loops. Any idea ? Thanks, Pascal Edit: I've added a save state where the player can't equip the weapon in slot B. It's visible, but when pressing B in inventory, nothing happen. Slot_Spiked_Club.zip
-
Hi Heaven, I've finally took some time to try your visually-nice game. In fact, not only it's cute, but it's enjoyable too. Really promising! Thank you for your gift. I've some questions, but even if i've kept an eye on your thread until the beginning, i hope not asking you an already answered question. I used the v12. - When i pick up an armor, it replaces automatically the existing one. For example, i've a leather armor, i move on an armor and i click, it's replaced by a plate armor. It's cool, but the next armor was a leather armor, losing my previous plate armor... It's the correct behavior ? - Maybe a bug from the previous question, but i've always had no more than 1 armor and several weapons in my inventory. - I took an item (a shield icon) and gave me a spiked club? But when i go to the inventory and press the key corresponding to its slot, it does nothing, i've still the dagger. - Sometimes the monster drops gold just before the last killing-hit, dropping another item at this last hit. Sometimes the same monster drops 3 items (a potion, a key and a shield). Each item is dropped at a different hit. - I've just picked up a shield-icon and it gaves me 13 AC, but it's still a leather armor. AC raise with level or characteristics ? - I've killed a monster dropping 3 stack of gold, one laying on a door, blocking my way! :'( (see the screenshot) - When i reach a new level, i unintentionally put some points in a characteristic because i was clicking to attack the monster. - The monster can move on wall (see the screenshot). - An armor-icon on the floor gave me a morning star... ? - a blinking half-scroll was dropped by a wizard (see the screenshot). - I can't pick up a key, and an item i can't describe, a weapon ? (see the screenshot). Sorry for all these points and questions, but i tried some games and everything occurs several times. I've some save state if needed. Sincerely, Pascal Screenshots from TL to BR: - Key on door, blocking my way - Monster on wall - Blinking half-scroll - Can't pickup the club-icon
-
Nice! Two thumbs up! Yes, i like the way you tell the story in your blog, it's better than a review. You give your personal touch and point of view by compraing different version of the game with details, etc... very interesting and entertaining! Keep up the good work! Kroah
-
Don't forget that, if your file is in ASCII format, to convert it to ATASCII via the tool dratex (or, if you use Atari800Win, the dropdown menu "Misc->Convert->ASCII to ATASCII"). This concerns only .LST files which were edited on PC.
