Development of Blake's 7 (was OASIS development)

Want to talks about games you like, would like to see developed on the Oric, it's here.
User avatar
Dbug
Site Admin
Posts: 4444
Joined: Fri Jan 06, 2006 10:00 pm
Location: Oslo, Norway
Contact:

Re: OASIS development

Post by Dbug »

Regarding memory usage, I remember that Fabrice designed some particularly efficient text compression for his Minigame based on the movie Cube.
Can't find where the details were, all I can find is:
http://forum.defence-force.org/viewtopic.php?f=4&t=14

Maybe his 2004 minigame package has more details :)
User avatar
Chema
Game master
Posts: 3014
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Re: OASIS development

Post by Chema »

In fact I have my own text compression routines, but I did not use them in this game because I thought that the extra space needed won't compensate as I load from disk just the text I need.

I was wrong, at least in this room, where in a particular moment I load 1K of text. However, the memory also goes away in the huge amount of graphics needed for 5 characters, plus the graphic of a guard, plus a bigger-than-screen room, plus...

A new design... What dangers lurk ahead?

161 tiles and 2427 bytes
dangers.png
dangers.png (2.52 KiB) Viewed 13203 times
Last edited by Chema on Fri Jan 20, 2017 3:04 pm, edited 1 time in total.
User avatar
Dbug
Site Admin
Posts: 4444
Joined: Fri Jan 06, 2006 10:00 pm
Location: Oslo, Norway
Contact:

Re: OASIS development

Post by Dbug »

Nice landscape!

Maybe you could also dynamically load some code, like DLLS :)
User avatar
coco.oric
Squad Leader
Posts: 720
Joined: Tue Aug 11, 2009 9:50 am
Location: North of France
Contact:

Re: OASIS development

Post by coco.oric »

This landscape is wonderful
I like it. I 'll be happy to play this game ...
coco.oric as DidierV, CEO Member
Historic owner of Oric, Apple II, Atari ST, Amiga
User avatar
ibisum
Wing Commander
Posts: 1646
Joined: Fri Apr 03, 2009 8:56 am
Location: Vienna, Austria
Contact:

Re: OASIS development

Post by ibisum »

Can't wait! The landscape pic looks awesome .. I wanna play!
User avatar
Chema
Game master
Posts: 3014
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Re: OASIS development

Post by Chema »

Hi guys!

Just a quick post stating I am still working on this (of course). I haven't had much time lately, so not much progress, but still some work has been done.

Unfortunately I had to concentrate on internal aspects, so nothing nice to show. Mostly some bug hunting, tweaking the code, cleaning it up a bit, commenting things... Yeah all those tasks which are important, need time, but show no visible results to the public. One of these bugs was discovered by Symoon, and was related to uninitialized variables. It was unnoticed because of the state of the memory contents of the Oric at boot, but if you change the memory pattern (in Euphoric) to match that of the first Oric-1s the bug surfaced!

This was a nice finding, because it had some difficult to find lateral effects even with the usual ram pattern.

There were also some bugs in the scripts of the new parts of the game I added. A friend of mine gave this part of Episode II a try and found some glitches that I think are fortunately corrected by now.

I also had to deal with the memory problems I faced. I now have some more room for what I need :) and I still want to change some tables which are being calculated at boot, so they are pre-calculated and loaded from disk, so I can get back some space.

So several things done, as you can see. I am taking this project with calm because I am really enjoying the development and would like to put in all the nice things I can. I know some would not appear unless you actually play the game thoroughly, and others won't be noticed as they don't interfere with the gameplay and are probably seen as 'natural'. It is easy to forget this is an Oric, and how limiting the machine is :)

Ah, one last note. I learnt YESTERDAY that the XA assembler only generates zero-page addressing when the label is in the zero page (of course) AND has been defined BEFORE the code that uses it. Usually you define the important zero-page pointers at the beginning of your code, but I also define zero-page vars in other places. For instance the mouse code uses several zero-page vars indicating the current coordinates of the cursor. If these vars are used in other modules (they certainly are) the assembler only generates zero-page addressing mode instructions if the code is assembled AFTER the mouse code. When this is not the case, it uses absolute addressing mode.

Something such as:

Code: Select all

.zero
tmp .byt 0
.text

; Menu code
...
lda tmp
...
lda mouseX
...

; Mouse handling code
.zero 
mouseX .byt 0

.text
...
lda #0
sta tmp
sta mouseX
...
In the above example zp addressing is generated for lda tmp, but absolute addressing code is generated for lda mouseX. Both sta tmp and sta mouseX are generated with zp addressing.

When your project has many files it is easy to end up with a situation such as that. I don't know if there is a workaround, so I have moved all the relevant zp data definitions to the very first file. There is a (very slight) improvement in speed and size.

So one lesson learnt here :)
User avatar
ibisum
Wing Commander
Posts: 1646
Joined: Fri Apr 03, 2009 8:56 am
Location: Vienna, Austria
Contact:

Re: OASIS development

Post by ibisum »

> It is easy to forget this is an Oric, and how limiting the machine is :)


Why I will always be your fanboix!
User avatar
Dbug
Site Admin
Posts: 4444
Joined: Fri Jan 06, 2006 10:00 pm
Location: Oslo, Norway
Contact:

Re: OASIS development

Post by Dbug »

Regarding zero page, and zero initialization, generally speaking it's a good idea to have all these variables nicely put together in their own file because it makes it easier to see how close from the limits you are, and it's also much easier to do some initialization (a memset for example) to start from a clean state.

When the variables are all around the place, it's much more difficult to find them :)

Another advantage, is that you can alias variables more easily: If you have a variable which is used only in the menu, and another one which is used only in game, it's kind of wasteful to lose two memory locations when you can have both point to the same memory location (with a BIG HUGE COMMENT explaining that :D)
Godzil
Squad Leader
Posts: 774
Joined: Sat May 21, 2011 7:21 pm
Location: Between UK and France
Contact:

Re: OASIS development

Post by Godzil »

Chema: Thanks (indirectly?) to remind me that I have a project to finish!
User avatar
Chema
Game master
Posts: 3014
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Re: OASIS development

Post by Chema »

@Dbug Yeah, you are right. My problem is when I have many files with lots of routines. I find it hard to keep all the data in one file, so I sometimes put the variables that are handled by each file in that file. And yes, sometimes I do some dirty tricks, defining some variables near to a routine for its use only...

I really need to do more cleaning regarding this :)

Now I have a question. Long term, as I am still far from the point where I have to add this, but I just added the routine for redefining the keys (some find the position of the cursor keys in the Oric a bit... difficult) and I wondered if I should support joysticks and which ones. Beware I am struggling to get free space to add routines, so it is not a question of adding everything.

First idea is I don't want the joystick to stop or mess my sfx or music, that happened to some models using the printer port. Altai is one of them. PASE, I have no information. IJK seems to avoid the issue and we have code to handle it in the Wiki, so it is one of those which could be supported and I don't have info about OPEL.

From those using the expansion port we don't have info for MCP and the DK'tronics does not work with Microdisc, so...

So from all this list only the IJK seems a candidate. Anybody who has this joystick can confirm it does not mess with the sound and that the driver from Twilighte works, I would be grateful.

Then comes the Telestrat. Not only the Microdisc routines have to be adapted to avoid the Telestrat disk controller bug, but also it has a Mouse and a Joystick. We have the joystick routines in the wiki, but not for the mouse. In addition, it says that the Telestrat Mouse as it is handled does not give acceleration information, so it basically works as a joystick. In my opinion that renders it quite useless, but that is me. Anybody can confirm?

Okay, I have now around 80 bytes free. Granted I can gather more space, not that I have to fit everything remaining in that few bytes, but you can see why I am reluctant to add much more features.

So basically, what do you think I should support? I even toyed with the idea of NO supporting joysticks: moving a cursor with the keyboard is cumbersome, but the joystick does not improve much, so not sure if it is worth the effort.

Oh, another thing: Twilighte put some auto-detection routines in Stormlord. Has anybody tested if they work with real hard?

@Godzil Yeah, I will support your mouse, if possible. But it must be ready for my release :)
jede
Flying Officer
Posts: 191
Joined: Tue Mar 14, 2006 11:53 am
Location: France

Re: OASIS development

Post by jede »

Hello,

Telestrat mouse does not send acceleration, because it's a atari/amiga mouse with electonic part to send direction like joysticks.

It means that if you manages telestrat joystick, mouse will work.

If you don't call any rom routine or you don't use page 2, you could use joystick routine into telemon which saves bytes, but it's a bit tricky because if you redirect irq vectors it will require some work, but i can have a look to this case.

On telestrat, you can plug an usb joystick, with a little hardware available on ebay. It works, and you have acceleration but you have to write drivers. It works here, i have a red and black usb mouse on my telestrat (wireless mouse).

For stormlord, telestrat joysticks does not work. I did not have a look yet. I think that nobody tried stormlord on the telestrat. Pulsoids works with the telestrat joystick, because i tested pulsoids on telestrat before the release.
User avatar
Chema
Game master
Posts: 3014
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Re: OASIS development

Post by Chema »

Thanks jede.

I am not sure why the Telestrat designers decided to remove acceleration information... This machine indeed has many quirks and drawbacks.

I don't call the ROM, but I do use page 2 completely, so bad luck there. In addition the joystick code in the wiki is from Twi, so if it does not work in Stormlord...

I am starting to be very reluctant to add joystick support at all... opinions?
jede
Flying Officer
Posts: 191
Joined: Tue Mar 14, 2006 11:53 am
Location: France

Re: OASIS development

Post by jede »

Chema wrote:Thanks jede.

I am not sure why the Telestrat designers decided to remove acceleration information... This machine indeed has many quirks and drawbacks.

I don't call the ROM, but I do use page 2 completely, so bad luck there. In addition the joystick code in the wiki is from Twi, so if it does not work in Stormlord...

I am starting to be very reluctant to add joystick support at all... opinions?
I think that they did the mouse very quickly, there is no software for it. It was the quickest way to add mouse on the telestrat, because Telemon has no byte left to add a mouse with acceleration. F. Broche did a lot of code tricks to earn byte (with the use of BIT $xxxx trick, use of bne - intead of jmp, clc/sec for return function value, using rts from others routine to return to the previous code)

Amiga/atari mouse can be plugged directly in the telestrat port. It works too. Drivers must be written, but you can have acceleration in this case.

Drivers from Twilighte works, i am sure, but i doubt that Stormld calls the routine (i did not have a look).

When you will finish the game, i will try to look to the source code, if you release it (if it's possible to have this working easily with telestrat).

Could you supports at least telestrat joystick ? :)
User avatar
Chema
Game master
Posts: 3014
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Re: OASIS development

Post by Chema »

Okay, something to show at last. A couple of small videos. The first one shows some new characters designed by jojo073 for this episode, in a scene that introduces part of the plot...

https://youtu.be/dFjTIDVDGUk

And now a first demo of something that will be used several times in the game. Some details in the room design and other minor things have yet to be tweaked, but I think the overall effect is very nice :)

https://youtu.be/YawV6hXLbgU

Hope you like them!
User avatar
Symoon
Archivist
Posts: 2307
Joined: Sat Jan 14, 2006 12:44 am
Location: Paris, France

Re: OASIS development

Post by Symoon »

:D Very nice indeed! So much efforts in the details!
Lucasfilm's Zak Mac Kracken didn't even have such a design for teleportation: it just used a sound and erased or re-drew the hero's sprite.
Post Reply