Page 4 of 12

Posted: Wed Sep 28, 2011 8:54 pm
by kamelito
Chema wrote:Yep, the scrolling is quite faster in the speccy version. I guess the z80 beats the 6502 there...

Also you can compare with the c64 version, which has a much bigger visible area:

which does not have the nice continuous scrolling, either.

In our favour I have solved most of the know bugs of the game :)
Wow the Oric beat the C64 at scrolling :)


Posted: Mon Oct 03, 2011 9:41 pm
by Chema
Hi again.

I did not have much time lately, so there has been little progress. Some bug hunting here and there...

But in the meantime I think there are a few things you can see in the video in my previous post that are interesting.

As you can see the engine is quite fast. There are 19 main characters plus two catapult pellets moving around, with no flickering and at a decent speed, so the method (used in the original version) of using a backbuffer of just one tile and the bitfield for flagging those tiles which need redrawing works quite well.

In fact the overall speed seems a bit higher than in the speccy version. I had to accelerate everything a bit because a second thing that is of mention is that the movement seems smoother in the Oric. This is because each sprite moves 6 pixels (3+3) with every step instead of 8 (4+4), but the background and the sprite size are (with minor changes) of the same size. If I had kept the same speed than in the speccy version, probably teachers would not have had time to reach the class in time!

Also I had to modify the drawing loop so it does not draw the sprites in the same fixed order all the time, but uses a list. This way I can move sprites that have to be rendered first (in the background) to the begining of the list (the loop draws backwards). This enhances (in my oppinion) the rendering, so seated kids or characters going up/down stairs are drawn behind. The sprites are brought back to their original position in the list when they leave the stairs or get up. The original had some drawing issues in these occasions, which looked a bit ugly.

The original also had a quite ugly bug with speech bubbles. They were not protected, so if anything was drawn over them, they were corrupted. This (which was solved in Back2Skool, btw) does not happen here, as you can see people walking upstairs behind the bubble.

You surely noticed that whenever a shield is hit, it is turned upside-down, instead of put it flashing, as in the speccy and c64 versions. As I cannot put attributes there a friend of mine suggested this other option; and I think it works quite well.

And trying to add more playability I also made the catapult fire only when you release the 'F' key. This way you can press 'F' and prepare the cataplult and wait for the objective to be at the correct position before firing. This can be seen when I hit the first teacher to reach the third shield on the left side of the bottom floor.

Oh, and one more thing. I am using the same font than the original game, and surely you noticed that it is a proportional font. One of those details of quality of the original, in my oppinion.

I have a couple of issues left to solve, but I will face them when I have a little more free time. Then the game will be mostly finished, with only some details needing polishing. Or that I hope.

Posted: Wed Oct 05, 2011 2:23 pm
by ibisum
Very nice progress .. just wondering what that flicker is in the demo video, you see it sometimes flashes the screen ..

I really am astounded at what you guys have been able to make the Oric do in the last few years. If only we'd had a fighting chance to contend with the other machines back in those days ..

Posted: Wed Oct 05, 2011 2:40 pm
by barnsey123
I never saw the original game but this version looks pretty good on youtube! Only another 10000 games to go and we'll have bashed the Speccy good and proper! :D

Posted: Wed Oct 05, 2011 4:27 pm
by Chema
Thanks for your comments guys.
ibisum wrote:Very nice progress .. just wondering what that flicker is in the demo video, you see it sometimes flashes the screen ..
It flashes the border, just as the original version does in the speccy and c64. I thought it could be a nice touch.

But if you dislike it, it would save me some bytes :) I have added a second tune (for the game ending) and the last code and the game can be finished now, so time for polishing.

Anyway I have over 7 bytes left... must do something with it.

I could have a working disk version which makes use of the additional 16K in less than one hour, but that will prevent most people from loading it into their real machines and I think won't add anything worth it.

Posted: Mon Oct 10, 2011 7:16 pm
by Chema
A quick note today.

Despite my lack of time I killed a couple of bugs and adjusted a couple of things these days. But what makes me post this today is not this small advance.

I tried it on my Oric Atmos and, though it ran smoothly, my CRT TV picture through the antenna cable was horrible. So I built a SCART cable (the simplest approach, with no resistors, just the power to select the RGB input). Some burnt fingers later I was watching a wonderful sharp picture with excellent colors, so I gave it another try.

The image was incredible. The TV blended colors enough as to get a quite clean green for the background and colorful and sharp graphics.

I will try to take a photo and post it. It looks really nice. I can't wait to test Impossible Mission or Stormlord :)

However I think sound was not so great. It is like if one of the channels (the low pitch) were out of pitch a bit. Need to investigate more on this... I am using the conversion (note to pitch) table and routine Twilighte posted on the Oric Wiki and it sounds nice on the emulators...


Posted: Tue Oct 11, 2011 9:14 pm
by Chema
As promised...

However the quality of the photos is terrible. I took them with my cellphone, and its camera is anything but decent. I wanted to use my photo camera, but it was out of battery.

If I can get better photos, I will post them. In the meantime...


There is something wrong with the Skool Daze logo, probably bad loading (I used tap2cd to load it in 40 seconds :), but it seems I need to tweak the volume).

This is an overview of my system:

On the programming area, I added a small clock as a pic on the formerly known as WHITE ROOM (which was no white) and renamed it as CLOCK ROOM. Not the best solution, but alas... I have 6 bytes left, what did you expect? :shock:

EDIT: Reduced image size

Posted: Tue Oct 11, 2011 10:43 pm
by Chema
One more note today... I have found over 140 bytes free, following Dbug's advice. Maybe I'll need it for solving bugs that may appear...

The trick is that I had many places where I needed to set up a pointer this way:

Code: Select all

    lda #34
    sta tmp0
    lda #12
    sta tmp0+1
The trick is (something related to this has already posted on the coding forum) using brk along with a interrupt service routine which sets up the pointer. The above code reduces to:

Code: Select all

     .word $1234
so saving 5 bytes per call. The interrup service routine does the following:

Code: Select all

    ;Preserve registers 
     sta sav_A+1
     stx sav_X+1
     sty sav_Y+1
     and #%00010000
     bne set_tmp0
    ; usual interrupt code goes here
        ;Restore Registers and return
     lda #00
     ldx #00
     ldy #00

Code: Select all

	; Get data using the stored
	; ret addr in stack
	lda $103,x
	sta zpTemp01+1
	lda $102,x
	sta zpTemp01
	bne skip2
	dec zpTemp01+1
	dec zpTemp01

	ldy #0
	lda (zpTemp01),y
	sta tmp0
	lda (zpTemp01),y
	sta tmp0+1

	; Increment the return address to
	; jump over the two byte data
	; (the address was already +1).
	inc $102,x
	bne skip
	inc $103,x

	; Restore registers
	; and return 
	bne ret_isr	; this always jumps
Well and that is all, basically. The main drawback is that it is slower, but shouldn't be noticeable in this case. I put all the code between the usual #ifdef #endif clauses, to conditionally use this or the older version.

Okay, so basically the game is finished. I am touching the init screen (have already done it in hide, need to import it) and also need to touch the score panel and the sound sfx. I have other minor things that I want to do, but it should be all.

So, are you ready for a beta testing? :)

Posted: Wed Oct 12, 2011 5:52 pm
by Dbug
Glad you managed to spare some room with the BRK trick.
I'm just wondering about the reason for the decrement on zpTemp01?

(I had a hard day at work, so my brain is kind of slow today, I may be missing the obvious)

Posted: Wed Oct 12, 2011 8:00 pm
by Chema
Dbug wrote: I'm just wondering about the reason for the decrement on zpTemp01?
The return address stored on the stack when a BRK instruction is executed does not point to the address after the BRK, but one byte ahead (thus jumping over the byte following the BRK instruction). That is why I am decrementing it.

Maybe I am missing a better alternative?

Posted: Wed Oct 12, 2011 8:54 pm
by Antiriad2097
Do you have a planned launch date for the game? Just curious, as there's a massive retro gaming event (REPLAY) in the UK next month (several thousand visitors). It'd be nice to showcase a brand new Oric game on launch day, giving the system a little limelight. I'll be there to run it if you're not attending, should even have a real Oric instead of an emulator.

Posted: Wed Oct 12, 2011 9:50 pm
by Chema
I couldn't tell about a release date, to be honest. It depends on the time I can dedicate to it (which is not too much at the moment).

I would like to touch the scorepanel a bit to add more color (any ideas?) and put better sfx.

What I can do, if you like, is providing you with the latest build at the time the retro meeting comes, so you can show it there. In addition to the tweaks I want to do, the game is finished, but it needs testing...

Posted: Thu Oct 13, 2011 8:18 am
by Antiriad2097
That would be great, thanks Chema.

I'll do a spot of testing if you want. I've played the original so I'm familiar with it (never finished it though).

Posted: Thu Oct 13, 2011 7:29 pm
by Chema
Hi guys! Experimenting a problem with Oricutron here.

The brk trick is not working with version 0.7 (windows), and after some debugging it seems that the B flag fo the processor status is set to 1 even when the IRQ was not produced by the BRK instruction.

Therefor the code I posted above, fails, trying to set the tmp0 pointer at each interrupt, which keep on repeating continuously as nobody acknowledges them.

Need to be sure of this, but it means quite a problem in my development. It is difficult to get back without the BRK trick, and with it the game cannot be run in oricutron. At least in this version, and we are not sure when another version will see the light :(

I need to test if it goes well on my real Oric. Will post more about this as soon as I have more information.

Posted: Thu Oct 13, 2011 9:05 pm
by Dbug
Did you try in the WIP3 version I sent you when I was working on the IRQ benchmark?