Jump to content

Atlan_Roland

Members
  • Posts

    92
  • Joined

  • Last visited

  • Days Won

    1

Atlan_Roland last won the day on December 22 2022

Atlan_Roland had the most liked content!

Profile Information

  • Gender
    Male
  • Location
    Austria

Recent Profile Visitors

1,034 profile views

Atlan_Roland's Achievements

Chopper Commander

Chopper Commander (4/9)

260

Reputation

  1. @Mr RobotThanks alot for serving it. Just tested it out and it works nicely. As a reminder: UltimaV (2024)_360k-QD_ (v013).ATR : An all in one disk image, no need for disk swapping. When using the two disk version (suitable for putting on real floppy disks), boot the BRITANNIA disk and swap when prompted. Support for two disk drives will be implemented in a future revision. UltimaV (2024)_(BRITANNIA)_Disk1-DD_(v013).ATR UltimaV (2024)_(TOWNE)_Disk2-DD_(v013).ATR
  2. Current WIP Build - v0.013 - just uploaded at the first post. What's new in v0.013: Fixed everything that was broken & found in the 0.12 release. 'Y'-ell command implemented (including words of power & wishing wells) Dawn & dusk: different color shades dependend on TimeofDay/Torch/Underground Animations for NPC that are eating. Optimizations. Started with merchants code. (For now the just greet you in their shop when on duty)
  3. Yes, that works! Thank you very much
  4. Would it be possible to reference a second disk drive with xBootDos? Like: XIO(40,1,0,0,'D2:CITY.XEX'); //Mad Pascal { that's the MP procedure interface: procedure XIO(cmd, chn, ax1, ax2: byte; device: PString); assembler; (* @description: Special command @param: cmd - command @param: chn - channel 0..7 @param: ax1 - parameter @param: ax2 - parameter @param: device - name of device, example "S2:" *) } Had no luck acessing a second drive, the XIO command always references the file on D(1):
  5. And the next tested WIP Build is here; available at the usual place in the first post. So what's in there: Fixed everything that was broken & found in the 0.11 release. Cursor movement has been remapped to the keys - + ; * (on the Atari keyboard). This makes movement much more conveniant on the real machine. (In emulation i recommend mapping the Joystick in Port 1 to the hosts machines cursor keys for easy moving) Better Joystick handling: Trigger ist 'kind of' context sensitive and offers the appropriate action dependend on the location of the Avatar. E.g. if standing next to a door, 'O'-pen is choosen as command. Started implementation of 'smallmaps': For example when using 'h'-ole up & camp, you see the Avatar resting at the camping place. Also, you are now able to enter the eight shrines of the virtues. Tons of Bugfixes and some optimizations, as always. Unfortunately most optimizations for space get used up fast by adding new feature .. I did some little touchups on the tile graphics, but i'm not an artist.. if anyone is interested, feel free to join in! My source file for the tiles is .\TILES\TILE_BASE_12x16.xcf (a GIMP file) in the <source>.zip at the first post; if there is interest i can send out a batch script & build to test new graphics.
  6. yes, like LIBRARY (which i remember from turbo pascal). though i was rather thinking about the proposed 'ORIGIN' directive, that would - i think - act like a 'RAM based' LIBRARY: https://github.com/tebe6502/Mad-Pascal/issues/119
  7. Hi, Iโ€™m doing pretty much the same in my (Ultima5) project: Compile my 'overlay' function for a certain address; at bootup they get loaded consecutively and copy themself into extended RAM (my minimum target is a 128K machine); when calling such an outsourced procedure, i move that memory area into the 'overlay area' and JMP there (which JMPs back to a defined space in the 'main' program afterwards) :: ---------------------------------------------------------------- :JMP_OVL set PRG=OVERLAY REM call checkage.bat %PRG%.PAS REM start OVERLAY.XEX in framebuffer SCR2 mp.exe -code:A6F0 -ipath:c:\mp\lib %PRG%.pas -define:%PRG% if ERRORLEVEL 1 goto :EOF c:\mads\mads.exe %PRG%.a65 -x -i:c:\mp\base -o:%PRG%.xex if ERRORLEVEL 1 goto :EOF :: ---------------------------------------------------------------- :JMP_TALK_OVL set PRG=TALK_OVL mp.exe -code:A6F0 -ipath:c:\mp\lib %PRG%.pas -define:%PRG% if ERRORLEVEL 1 goto :EOF c:\mads\mads.exe %PRG%.a65 -x -i:c:\mp\base -o:%PRG%.xex if ERRORLEVEL 1 goto :EOF :: ---------------------------------------------------------------- :JMP_STAT_OVL set PRG=STAT_OVL mp.exe -code:A6F0 -ipath:c:\mp\lib %PRG%.pas -define:%PRG% if ERRORLEVEL 1 goto :EOF c:\mads\mads.exe %PRG%.a65 -x -i:c:\mp\base -o:%PRG%.xex if ERRORLEVEL 1 goto :EOF pretty crude and the worst is that there is so much redundancy and wasted RAM for often same dependencies on libraries and functions.. like you also mentioned: in lack of other options, for some redundant functions i started coding them directly in ASM and store them at a certain location to JSR call them.. but i' lack so much experience in ASM coding ๐Ÿ˜• i'm thinking that maybe someday we'll get the possibility of a mad pascal directive to define the compile location of certain procdures, so these can be addressed from different independed executables; but thatโ€™s up to Tebe plans.
  8. Thank you very much for these versions! I never knew something like that existed, Ultima in 160x192 resolution! This way i could really play Ultima IV on my real (PAL) Atari 800 XL! .. if i'd only have the time.. I wonder how you did that patches? You started out with the original ANTIC mode F hi-res versions? Must have been massive to alter?? Or did some other ANTIC mode E versions done by Origin exists?
  9. Oh, i'm very happy to see that picture! ๐Ÿ‘ This means the whole procedure of creating disks actually works. Ah, just, that it seems that the commodore CRT is not able to display the last 8 scanlines (the lower border of the screen is not on your display anymore) My DLI is using the overscan area up to the max. NTSC limit. Are you able to adjust the height manually on the monitor? BTW: Seeing your two 1050 remindes me to prioritize support for two floppy disk drives! Vielen Dank fรผr das Foto!
  10. ad 1) Oh, more RAM .. yes, that's what i need! ๐Ÿ‘ ๐Ÿ‘ as 2) Unfortunatly a stock 800XL won't work. 128K are needed to run the game.
  11. Hi, just uploaded a new WIP build, available at the first post. The new features: Moongates implemented. For now they let you teleport to a random Moongate,for it's a nice way to do some sightseeing in Britannia. (Future revision will implement the moonphase logic for traveling) Moonstones are also implemented.(Dig up the moonstone at the location of the gate during the day and replant it somewhere else) Items and item handling implemented. There are 120 searchable items (including the 8 moonstones) hidden around the game, or you can also receive items in the course of conversations with NPCs. 'U'-se <ITEM>: Items in your inventory can be used. The 'U'se command will bring up your invetory where you can select an item. For some special items the use logic has been implemented. (No weapons/armour handling yet though) Optional support of additional RAM (>128KB): If additional RAM is detected, it's used as a chache for already loaded Towne maps and Britannia map chunks. This makes traveling around Britannia a smoother experience. Some more 'special behaviours' implemented Things that are not data driven but are only done in code) Tons of Bugfixes, again. So this my premature christmas release! Still a very long way to go for a game tough.. Have fun in Britannia! Cheers!
  12. Sorry, Tebe, i didn't check the paramters! your new unzx0() stream overload works perfectly of course! Like you stated in your example code: https://github.com/tebe6502/Mad-Pascal/blob/master/samples/a8/compression/unzx0_stream.pas fn:='D:KORONIS.ZX0'; unZX0(fn, pointer(dpeek(88)) ); so to correct my code sample from above var fname : string[14]; begin [..] fname:='D:QSTON.ZX0'; unzx0(fname,pointer(QuickMusic_Song));
  13. wow, you are the best - and you are fast! though just tested it with main branch (1.7.0) and with 1.6.9 with the new zx0.pas lib; but seems not to work here in my constellation though - the compiler seems to choose the inputPointer version. That is probably because I used it like the example below, pointing to a file-string. The version with the indicator byte was a good decision then ๐Ÿ˜„ var fname : string[14]; begin [..] fname:='D:QSTON.ZX0'; unzx0(@fname,pointer(QuickMusic_Song)); By the way, i see that the compiler output in the 1.7.0 branch is listening procedures.. maybe this is some preliminary testing for the ORIGIN proposal ? ๐Ÿ˜†https://github.com/tebe6502/Mad-Pascal/issues/119 (that would really be an cool feature, saving me enormous amout of RAM, as i would use it as some kind of 'overlay' function.)
  14. ok, thanks!: missed the new "a:byte" parameter for stream loading.. (is that used for anything?)
  15. Question: String handling seems to have changed again. This example worked in MP v1.6.8+: var fname : string[14] absolute NPC_ARRAY + 64+6+7+16+1+1; // fname: "D:X#.ZX0" --> todo: reduce to [8] [..] fname:='D:UA.ZX0'; //Initialize fname (D:**.ZX0) and set to Atascii font file. unzx0(fname,pointer(FONT)); //load font before text is displayed Now with 1.6.9 it throws: Mad Pascal Compiler version 1.6.9 [2023/10/13] for 6502 Compiling U_LOADER.PAS U_LOADER.PAS (537,8) Error: Incompatible types: got "STRING" expected "POINTER" Ok, changing it to: unzx0(pointer(fname),pointer(FONT)); compiles, but crashes at running. --> What would be the correct syntax/data structure now?
ร—
ร—
  • Create New...