Jump to content

itaych's Photo

itaych

Member Since 4 Oct 2007
OFFLINE Last Active Feb 3 2017 7:51 PM

#3687309 Mark Reid's Getaway! design documents and APX correspondence

Posted by itaych on Fri Feb 3, 2017 7:33 PM

Is there somewhere you can put some signature bytes that won't change with any future releases you make?
Or I could check for the bytes that you changed for, say, the dead-end bug because I bet that's not likely to change.

 

I think you're missing the point of what I'm doing here. I'm not releasing new binary versions of the game, why would I do that? These releases play exactly like the original. The idea is that you take my updated source code, replace the file getaway.plf with your own map, build, and release the xex file. Things like checking signature bytes are hacks intended for cases where the source is not available, that's no longer the case here. Also you'd need to change a couple of equates in the source code to move the hideout, there is no code that scans for the "H". (I added these equates, before them the hideout location was, well, hidden - in various "magic numbers".)
 

Another interesting bug that Wade found: it crashes if people are too close to the road. He discovered you needed spacing:

The characters used for people happen to be part of the set of characters that the cars are allowed to drive on. This is because the game allows driving on any character in the range $7x, which includes the blank road (1 char), the gas station, hideout, dollars, prizes, stoplights and roadblocks (2 chars each). However this leaves 3 additional unrelated characters, which happen to be the graphics for people. The hang (an endless loop, not a crash) occurred because, since that character is interpreted as a road, you created an invisible dead end when placing these characters adjacent to a real road.

 

The solution is to change the code to allow driving only on the correct characters. It's a little uglier and takes a few more cycles, but the game isn't exactly starved for CPU time. The fix is attached.

Attached Files




#3686827 Mark Reid's Getaway! design documents and APX correspondence

Posted by itaych on Fri Feb 3, 2017 9:11 AM

This one won't crash if a cop or van hits a dead end, allowing more flexibility in level design. Enjoy :)

Attached Files




#3686780 Mark Reid's Getaway! design documents and APX correspondence

Posted by itaych on Fri Feb 3, 2017 7:56 AM

Here is another version. This includes my previous patch, plus allows for changing the hideout location, which was previously hard-coded. This should aid people who are editing the map.

Attached Files




#3683053 Mark Reid's Getaway! design documents and APX correspondence

Posted by itaych on Sun Jan 29, 2017 5:29 PM

Woops, there's a bug in my "clean" version (Getaway_20170129). The source contains a routine RNSPOT that picks an empty spot on the map on which to place a prize, roadblock etc. This routine is hard-coded to suit a fixed playfield address, regardless of the value of PLYFLD. It will only work correctly for PLYFLD=$3000, which is the case in the "pirate_executable" only. In the cleaned up version it's moved to $4000.

There are two ways to fix this:

Method one is to remove these two lines just under the RNSPOT label:

       SEC
       SBC #$10
This is actually what Mark's code in disk M11 (where PLYFLD=$4000) looks like. It will work, but personally I don't like it as it will still break if PLYFLD is moved again.
 
Method two is a patch. Replace this code:
 
RNSPOT LDA RANDOM     ;pick spot
       AND #~00111111
       ORA #~01000000
       SEC
       SBC #$10
       STA TEMP+1
 
with this:
 
RNSPOT LDA RANDOM     ; pick spot
       AND #~00111111 ; hi offset $00-3F
       CLC
       ADC #>PLYFLD   ; add base of map address
       STA TEMP+1

 

...and that should work for any PLYFLD location.




#3682370 Mark Reid's Getaway! design documents and APX correspondence

Posted by itaych on Sat Jan 28, 2017 6:38 PM

I've managed to get the sources to Getaway to build! :) The sources are apparently not the final version that was distributed; to get a precise match with the released binary I had to mix code from disks M11 and M14, as well as make some small changes based on the binaries. The binaries I based myself on were a pirated executable version that circulated in the early 80's, as well as the image 'M25 - Getaway 1.1' from this archive. They are nearly identical; the only difference between them is that the disk image loads data at $1000 so it would fit in a 32K machine, but an executable can't load to that address without overwriting critical DOS code; so the executable version loads at $2b00 then adds some code that copies everything to the right place before jumping to the start location.

 

The archive that builds to a file identical to the pirated executable is named "Getaway_20170128_pirate_executable.zip".

 

Once I got that working, I got rid of all the garbage that was needed for creating the 100% identical binary. With code locations taken from the M11 version the game now won't fit in 32K but the relocation nonsense is not needed anymore, making things a lot simpler. Also, some garbage data that was present in the original binaries (the boot sector, plus the padding between the game code and the playfield data) could be removed.

 

The result of this cleanup is named "Getaway_20170129.zip".

 

Both archives behave the same: Extract them wherever you like. On a Windows machine, download the ATasm assembler and copy its binary (atasm.exe) to the 'build' subdirectory and double click the file build.bat. The result will be generated in 'bin'. Non Windows users should build ATasm for their platform, and use the build command in the build.bat file.

 

Enjoy!

Attached Files




#3640627 Ice-T XE 2.76 released

Posted by itaych on Tue Nov 29, 2016 2:15 PM

Did you develop it using some Version Control System ike CVS, SVN or Git? Are you willing to publish the source code?

Ice-T was mostly developed in my bedroom as a teenager with an Atari 130XE. I knew nothing of these three letter acronyms of which you speak and even if I did there was no practical way for me to use them :) .. During a few years that I continued development (2012-2014 or so) I simply kept a snapshot of every release.

 

I published the source code to version 2.72 (released in 1997) here. It's not very pretty and much of it has been changed or even rewritten since then, but I haven't published the newer sources - and I think no one even asked for them. Perhaps I will with the next major release (any decade now).

 

 

I am unable to interact with certain services with ICET that I can with FlickerTerm.

[..]

I am able to use this stuff with FlickerTerm by setting "CR out" to "CR + LF". 

 

Ice-T was designed as a VT-100 (now 102/52/ANSI) emulator, not a general Telnet client. The standard behavior for these devices is to send a CR when the user hits Return. It's nice that FlickerTerm allows to change this, at the time I saw no need for this. (Remember Ice-T was written first, I didn't have FT to compare to, and nothing that I tested against needed it.) I wish it were trivial to add this feature, but nothing is simple when your project is written in assembly.

 

The EOL setting you mention governs how Ice-T interprets incoming codes, not outgoing. I've managed to interact with websites and the weather site you mention by using Ctrl-J where you'd press Return. Note that if you want to see what you're typing enable Local Echo.




#3591019 GTIABlast! WIP demo

Posted by itaych on Fri Sep 9, 2016 9:02 AM

My 9 year old loves it! :) Looks great in wiixl.

Attached Thumbnails

  • P60909-114054.jpg



#3090553 Ice-T XE 2.76 released

Posted by itaych on Sun Oct 12, 2014 11:28 AM

Since MyBIOS on stock atari disables internal OS and wants bit 0 of PORTB being false, I replaced all PORTB values in the binary.

 

So what makes for a good BBS experience is macros.

 

Hi, what year is this? I guess it's time to address these requests. Here is the long awaited alpha 7 :)

  • PORTB bit 0 is no longer modified by Ice-T, fixing compatibility with systems that enable OS RAM, such as MyBIOS.
  • Macros.

To use macros, note the new menu entry Options > Macros. It will display 12 empty 'slots', each of which can be set to a letter or number of your choice and then filled with a macro of up to 64 characters of text.

The text entry field accepts only plain text, but special characters may be encoded within the macro as follows:

  • To insert a control code, the percent symbol '%' can be used. The character immediately after '%' will be sent stripped of its upper 3 bits, so %X or %x will send Ctrl-X (ASCII code 24) and %[ will send Esc (ASCII code 27). To send the percent sign use '%%'.
  • To insert an arbitrary byte use '$' followed by 2 case-insensitive hex digits. To send the dollar sign use '$$'.

To activate a macro in Terminal mode, hold down START and type the corresponding key.

Note that in previous versions the START button caused plain key codes to be prepended with Esc (so pressing START-C would transmit Esc c), mimicking the Meta key that was present on keyboards of some old terminals. This feature remains available for any key that is not assigned to a macro.

 

Enjoy! And as always let me know if there are any problems.

Attached Files




#3007823 Ice-T XE 2.76 released

Posted by itaych on Tue Jun 10, 2014 1:27 AM

Thanks, I guess I'll keep all three in the distribution while recommending the 850Express version (in the docs, which no one reads anyway ;) ).




#3002557 Ice-T XE 2.75 released

Posted by itaych on Sun Jun 1, 2014 3:36 PM

Actually I have a better idea for you. I'm attaching SPLAT.BAS. This was the very first proof of concept I did in 1992 or so before starting Ice-T - a dead simple Atari BASIC program that opened the serial port in 300 baud and let you communicate with whatever's on the serial port (modem in my case). What you can do with it is play freely with the XIO commands, twiddle the settings and figure out what's wrong with your setup.

Open the PRC manual (it's on Atarimania if you don't have it), read about the XIOs to understand the port opening sequence, and try to figure out what's wrong. I believe I enabled ATASCII/ASCII translation here so I wouldn't need to code the translation in BASIC, so try disabling that and see what happens (you'll have to press ctrl-J or ctrl-M instead of Return to send an end of line, but it should still *work*). In Ice-T this is of course disabled. Also if you change the baud rate to 9600 you will lose data but you should at least see parts of valid text. Let me know what you discover.

Attached Files




#3002492 Ice-T XE 2.76 released

Posted by itaych on Sun Jun 1, 2014 1:17 PM

Is it REALLY necessary to open a new thread for every minor point release?

What you call a "minor" release is actually the result of many months of work responding to user feedback, fixing bugs, refactoring code, adding features and updating documentation. So yes, I think it is fair to announce what I consider a milestone in a new thread each time - I doubt anyone would notice it otherwise, I don't think four threads in two years is unreasonable, and I can't edit a post once it's been replied to anyway. Now, when I release a version with new features that are not done yet, I name them 'alpha' or 'beta' (depending on how well the new features are baked, in my opinion) and post them in the thread belonging to the latest version. So, prerelease versions of 2.76 appeared in the 2.75 thread and prerelease versions of 2.8 (which has not been released and is in a bit of a freeze at the moment) appear in this thread.

Sorry if this system confuses you but no one has complained so far and I think it's a pretty straightforward system, and I'm not the only one using it (see the Altirra 2.40 thread, containing dozens of 2.50 alpha versions as another example).

In general for the latest 'stable' fully documented release simply grab the file from the first message of the thread with the highest version number (2.76 as of today). Then browse through the thread for the latest alpha/beta if you want to try the latest features. 2.8 alpha 6 is indeed the latest.


#2967866 Ice-T XE 2.76 released

Posted by itaych on Sun Apr 13, 2014 4:20 AM

Today I have 'hacked' ICET 2.80 alpha 6. [...]
To make it MyBIOS Compatible I changed these values into #$E2, #$E6, #$EA and #$EE. [...]
I don't know whether author of ICET want me to release it, or not, so I do not post it here.

There are about 75 instances where these values occur in the code for setting PORTB. And then there are places where these values may be used for some other random reason. There is virtually no way for you to tell the difference without disassembling everything and you will probably miss something and break some feature. So, thanks for not posting it :)
 

I didn't realize Ice-T required SDX anyway - I must have missed a meeting. :)

Of course not. Ice-T was developed under MyDOS. SDX support was added only recently, when emulators allowed me to test against it and users requested it.
 

Ah - I understand. Ice-T should really leave the OS ROM select bit alone, ideally, unless it's actually putting its own code and data under the OS.


Ice-T doesn't do anything with the RAM under the OS, because (a) the ROM OS is still needed for handling I/O and interrupts so this would have made things more complicated than I like, (b) it would have broken all sorts of system upgrades that use this RAM.

I'm surprised however that this specific problem has remained unreported for the 20 years that Ice-T has been available! I'll add it to the todo list.


#2908872 Ice-T XE 2.76 released

Posted by itaych on Sat Jan 18, 2014 2:57 PM

Hey curious if you had any luck with this?

 

There's nothing particularly difficult with what I want to do, the hard part is finding time. There was a bit of a slump at work which lasted a couple of months, which meant I didn't have much to do and therefore had plenty of mental energy left to do Atari stuff in my free time, which allowed the last several versions. The present and usual case unfortunately is that when I get home the bits of my brain that are busy when I code are worn out and need their rest. Even on weekends it's hard to find time with all the being a dad thing. So I can't promise when I'll get to it, but I will when I can.

 

I have run into this overflow of text [...]

 

I'm going to need a LOT more information if I'm ever going to be able to diagnose and fix this. I'd need answers to as many of these questions as you are able to answer:

 

Does this happen more than once? Does it happen often? Is there a pattern? Is this something that will ALWAYS happen after a certain amount of time or activity? Try starting up Ice-T and leave it idle for a few hours, does the bug happen or do you need to be actively using it for a long time?

 

Once it happens, is there any way to snap out of it? Tried things like switching to the menu and back? Use the "Reset Term" option in the menu? Can you hang up with +++ ATH, and if so do you return to normality and can you dial again? Try going to the File menu and viewing the disk directory - that closes and reopens the serial port, does that help? Turn your modem off and on, any luck? If all else fails, press Reset, which reinitializes Ice-T - does that help? Failing that do a coldstart - does that fix it?

 

Was there ever a time when your present configuration did work for many hours without displaying this problem? What changed since then?

 

Can you try connecting to your BBS by Telnetting through Altirra? Does the bug happen there? If so can you save the state and send me the state file?

 

In any case do try with a different interface, or try using another terminal program (like FlickerTerm) for the sake of the test. For all I know this could be your modem acting up or something in the interface driver, or maybe even a problem in your replacement POKEY - since I've never heard of this bug from anyone else.

 

This reminds me of a funny story: one day I was playing a lengthy game of Joust, when suddenly the game halted and returned to the title screen. I was having a pretty good session so, annoyed, I started a new game. A few minutes later, it happens again. Then I notice the game options (difficulty and players) are changing on their own - a few times a minute, then gradually faster and faster. Turns out that GTIA was faulty and was sporadically indicating presses of the console keys. It only happened when the chip warmed up, so my solution of course was an ice cube in a bag placed on the chip :) which let me keep on gaming until I could have it replaced. My point is that perhaps your POKEY (which controls the serial port) is broken but only shows its problem after a few hours of use. Also that Joust is a great game, but I digress.

 

Anyway, try these things and let me know what you find. Thanks.




#2886096 Ice-T XE 2.76 released

Posted by itaych on Sun Dec 15, 2013 9:47 AM

Why not? It's so fun! :)




#2886045 Ice-T XE 2.76 released

Posted by itaych on Sun Dec 15, 2013 8:01 AM

assword


Hehehehmhmhmhheheheheh.