Doing 3D games on the Oric ?

Want to talks about games you like, would like to see developed on the Oric, it's here.
User avatar
coco.oric
Squad Leader
Posts: 591
Joined: Tue Aug 11, 2009 9:50 am
Location: North of France
Contact:

Post by coco.oric »

i can try to put 1337 on my real hardware (atmos & sedoric), but i've never tried to make a transfer between my pc and oric.

is it easy to make ?
what is the risk for the hardware ?
coco.oric as DidierV, CEO Member
Historic owner of Oric, Apple II, Atari ST, Amiga

User avatar
Chema
Game master
Posts: 2723
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Post by Chema »

Do you have a Microdisc?

Then the only problem is creating the oric disc from the *.dsk file, I think. Others may give you more hints, but there is a writedsk tool in the OSDK (I think).

No risk for real hardware at all. Just boot from the 1337 disk.

A different question is if your Microdisc wants a 3" disk and you don't have such a drive in a PC... No idea how that could be done then... Others may.

Any hints?

User avatar
coco.oric
Squad Leader
Posts: 591
Joined: Tue Aug 11, 2009 9:50 am
Location: North of France
Contact:

Post by coco.oric »

yep, my microdisc is 3" (and naturally, i don't have it in my pc)
so my problem is linking the pc to the oric.

i don't think that writedsk tool is difficult to use.
coco.oric as DidierV, CEO Member
Historic owner of Oric, Apple II, Atari ST, Amiga

User avatar
Chema
Game master
Posts: 2723
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Post by Chema »

coco.oric wrote:yep, my microdisc is 3" (and naturally, i don't have it in my pc)
so my problem is linking the pc to the oric.
Ah, ok. I should have figured out. :)

Can't help here, really. I think I once saw some kind of tutorial about how to connect the FDD to a PC, but can't remember... Anybody did that?

About the keyboard reading, I got some news from Symoon, who tested the routine in an Atmos. It does not work :? Keys are returned at a good pace (response is quite good) as in the emulator, but their value is not correct.

For the tests he did the problem is in the detection of the column, which usualy returns a keypress when the the AY register 0E is FE. Therefore all Right Down Left Left-Shift Up . , and SPACE return SPACE, or 3 X 1 V 5 N and 7 all return 7.

Can't explain why some keys (like 8 ) don't return anything, when they should return 8, the same as = RETURN Right Shift / 0 or L.

This clearly matches the problems Fabrice is experiencing, as he is able to press SPACE to get to the Status page but nothing more (should be able to get to the Equip Ship page pressing 7, but...)

I am not sure where the problem lies. For setting the row I am doing:

Code: Select all

		
        sta via_porta 
        lda #$fd 
        sta via_pcr 
        sty via_pcr 

        lda via_portb 
        and #%11111000
        stx zpTemp02
        ora zpTemp02 
        sta via_portb 

        
        ;Wait 10 cycles for circuit to settle on new row 
        ;Use time to load inner loop counter and load Bit 

        ; CHEMA: Fabrice Broche uses 4 cycles (lda #8:inx) plus
        ; the four cycles of the and absolute. That is 8 cycles.
        ; So I guess that I could do the same here (ldy,lda)

        ldy #$80
        lda #8 

        ;Sense Row activity 
        and via_portb 
        beq skip2 
which seems to work even with no extra waiting cycles! If there is activity in the row, then the column is searched as:

Code: Select all

       ; Regs Y and A equal $80 at this point and this value is LSRd until carry is set (8 times)
loop1   
        eor #$FF 

        sta via_porta 
        lda #$fd 
        sta via_pcr 
        sty via_pcr 

        lda via_portb 
        and #%11111000
        stx zpTemp02
        ora zpTemp02 
        sta via_portb 

        ;Use delay(10 cycles) for setting up bit in Keybank and loading Bit 
        tya 
        ora KeyBank,x 
        sta zpTemp01 
        lda #8 

        ;Sense key activity 
        and via_portb 
        beq skip1 

        ;Store key 
        lda zpTemp01 
        sta KeyBank,x 

skip1   ;Proceed to next column 
        tya 
        lsr 
        tay 
        bcc loop1 
I have set up another test program which includes two things: first 3 nops before sensing key activity to be sure enough delay is added here. Second initialize (when the routine is set up) not only DDRB and ACR but also DDRA with the values that seem to be there after normal booting (just PEEKed them in the emulator):

Code: Select all

	
        ; Setup DDRA, DDRB and ACR
        lda #%11111111
        sta via_ddra
        lda #%11110111 ; PB0-2 outputs, PB3 input.
        sta via_ddrb
        lda #%1000000
        sta via_acr
I will post the results of the tests here as soon as Symoon is able to perform them. In the meantime any idea is welcome, as I am a bit lost :oops:

EDIT: Symoon just tested this new version, and it still doesn't work. It behaves the same way, so I have no more ideas...

User avatar
Chema
Game master
Posts: 2723
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Post by Chema »

I'm on fire today!

Ok. I found what could be an error, but just making guesses...

The code is doing sty via_pcr, but the value of Reg Y is no more $dd after the first iteration, so I changed it to lda #$dd: sta via_pcr

Let's see what Symon says now :)

But I don't see why it should work in the emulator and not in a real Oric[/code]

User avatar
Twilighte
Game master
Posts: 819
Joined: Sat Jan 07, 2006 12:07 am
Location: Luton, UK
Contact:

Post by Twilighte »

What emulator are u using Chema?

:P

User avatar
Chema
Game master
Posts: 2723
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Post by Chema »

It tested both on Euphoric and Oricutron and it worked... But with the latest correction it also worked on a real Atmos... at last!

So here is the code for updating the a virtual matrix, which you could insert into your interrupt routines and check for multiple keypresses or whatever :)

Code: Select all

ReadKeyboard
.(
        ;Write Column Register Number to PortA 
        lda #$0E 
        sta via_porta 

        ;Tell AY this is Register Number 
        lda #$FF 
        sta via_pcr 

        ; Clear CB2, as keeping it high hangs on some orics.
        ; Pitty, as all this code could be run only once, otherwise
        ldy #$dd 
        sty via_pcr 

        ldx #7 

loop2   
        ;Clear relevant bank 
        lda #00 
        sta KeyBank,x 

        ;Write 0 to Column Register 

         sta via_porta 
         lda #$fd 
         sta via_pcr 
         lda #$dd
         sta via_pcr

         lda via_portb 
         and #%11111000
         stx zpTemp02
         ora zpTemp02 
         sta via_portb 
        
        ;Wait 10 cycles for circuit to settle on new row 
        ;Use time to load inner loop counter and load Bit 

         ; CHEMA: Fabrice Broche uses 4 cycles (lda #8:inx) plus
         ; the four cycles of the and absolute. That is 8 cycles.
         ; So I guess that I could do the same here (ldy,lda)

        ldy #$80
        lda #8 

        ;Sense Row activity 
        and via_portb 
        beq skip2 

        ;Store Column 
        tya
loop1   
        eor #$FF 

         sta via_porta 
         lda #$fd 
         sta via_pcr 
         lda #$dd
         sta via_pcr

         lda via_portb 
         and #%11111000
         stx zpTemp02
         ora zpTemp02 
         sta via_portb 

        ;Use delay(10 cycles) for setting up bit in Keybank and loading Bit 
        tya 
        ora KeyBank,x 
        sta zpTemp01 
        lda #8 

        ;Sense key activity 
        and via_portb 
        beq skip1 

        ;Store key 
        lda zpTemp01 
        sta KeyBank,x 

skip1   
         ;Proceed to next column 
        tya 
        lsr 
        tay 
        bcc loop1 

skip2   
         ;Proceed to next row 
        dex 
        bpl loop2 
        rts 
.)  

KeyBank .dsb 8


User avatar
Chema
Game master
Posts: 2723
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Post by Chema »

Greetings again.

After solving the keyboard problem and hunting down a couple of nasty bugs in the mission system when loading saved games, I have started to implement the game missions.

I have only put two of them for now, but that is a start...

You might receive "Incomming Transmission" messages with what you are supposed to do. For instance, in the first mission you receive:

"Greetings Commander.
My name is Milto Zaxx and I have a profitable bussiness for you.
Come to Rilace for a transport."

When you arrive to Rialce, you receive a seond message with instructions about what to transport and where, as well as the money that you will earn.

The cargo is automatically added to your ship if you have enough room, else, in the market screen a message "insufficient space for mission cargo" appears. If you still launch with not enough space, you will be issued another message asking you to return to Rilace.

You can fly wherever you want, but be sure to arrive at destination with the cargo, or Zaxx will get angry. If you do, cargo is unloaded and you are paid (another message states so: "Good job. I have sent the credits.").

All these messages depend on the mission, and more may appear (they do) depending on the nature of the mission, so it is quite flexible.

In other missions you will have to choose between following your orders or follow "another agenda". This implies the subsequent missions may change.

At any time your status screen shows what you are supposed to do, for instance: "Go to Rilace for a transport" or "transport x tons of y to Z", so you always know what to do.

Of course not all the missions will be just transporting goods. Some will mean combat, protecting someone, finding lost cargo...

I am not sure how far I will go with this flexibility, but I want to set up a good number of missions with maybe alternate ways of solving.

So, even if slowly due to little spare time, this is still evolving... stay tuned!

User avatar
Dbug
Site Admin
Posts: 3454
Joined: Fri Jan 06, 2006 10:00 pm
Location: Oslo, Norway
Contact:

Post by Dbug »

Sounds good, many players feel comfortable knowing they can follow some objectives instead of being launched in a free roaming universe :)

User avatar
Chema
Game master
Posts: 2723
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Post by Chema »

Just a quick note to state that, after some hard time at work, I have resumed work in 1337.

Nothing impressive, but already solved several issues in the todo list, including a problem with snapping the cursor in the galactic and local charts and make the game request for a commander's name when saving a slot.

Will get back to missions as soon as I solve a couple of bugs more...

User avatar
Chema
Game master
Posts: 2723
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Post by Chema »

Mission 3 added and tested. Quite a difficult one, btw.

I need to decide when the first mission(s) will be launched. I first thought about launching them halfway betwen "average" and "above average" ranges, but that would mean you need to play quite a lot before they are launched.

So they are now launched a bit after you reach the "Poor" rank. Still need some playing before they occur, but launching them earlier is, imho, a bad idea. Not sure, anyway.

One small question, before I lose time testing. Does anybody know if there is any issue in Euphoric when emulating the Overflow bit? maybe in Oricutron?. I code which tests with bvc if a substraction went outside the 8-bit signed range, and it seems to work in Oricutron, but not in Euphoric...

I may have another bug here, so need to be sure of what is going on, but wanted to ask just in case anybody already knows.

User avatar
Dbug
Site Admin
Posts: 3454
Joined: Fri Jan 06, 2006 10:00 pm
Location: Oslo, Norway
Contact:

Post by Dbug »

You could probably have some very very simple mission from the very start, if only to show people that there is more than meet the eye.

Since your mission engine seemed quite advanced when you described it, do you think you could use it as a tutorial, teaching the player how to play the game?

That would be a world first for an 8 bit game :)

User avatar
Chema
Game master
Posts: 2723
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Post by Chema »

This is actually a very nice idea. Not sure how to do it though.

I guess the player should learn about the economic system of the universe, get used to the ship controls and navigation and also how and when to engage combat or simply avoid it.

The system is not flexible enough as to run a tutorial, as we understand a tutorial nowadays.

The first mission is a simple transportation of goods between planets, so I guess it could be possible to launch it earlier in the game.

Have to think about it... of course any ideas are welcome. But I would not like to set up a set of very simple missions directing the player, as it could also ruin the fun of doing your own bussiness for those with more experience.

There is already a kind of tutorial in the manual, instructing you about the game generalities... I know, however, that nobody reads manuals today :/

User avatar
Dbug
Site Admin
Posts: 3454
Joined: Fri Jan 06, 2006 10:00 pm
Location: Oslo, Norway
Contact:

Post by Dbug »

I guess I don't know enough about what your system can do, but basically I was thinking as something like that (in pseudo language):

Code: Select all

Tutorial Mission:
.(
  Message "Welcome to 1337, do you want to run the tutorial Y/N ?"
  WaitKeyPress "Y",Proceed,"N",End

Proceed:
  Message "Welcome to the tutorial - at any moment you can press N to abort the tutorial and play normally."
  Message "First we will show you the GUI"
  Message "Press 2 to access the cockpit"
  WaitKeyPress "2",Done2,"N",End
Done2:
  Message "Well done! From here you can do this and that."
  Message "Now press 3 to access the market place"
  WaitKeyPress "3",Done3,"N",End
Done3:
  Message "Well done! You can use arrows to buy and sell stuff."
  Message "Now press 1 to access the flight control"
  WaitKeyPress "1",Done1,"N",End
Done1:
  Message "Great, you are doing well. This is the K06r4 MK42"
  Message "Let see how to pilot it. First we will learn accelerating and decellerating"
  SetVariableValue ShipSpeed,0
  SetVariableValue ShipAcceleration,0
  Message "Press the + key until your reach the speed of 178 mph"
  WaitVariableValueLargerThan ShipSpeed,178
  Message "Good, now press  - key until your ship is stopped"
  WaitVariableValueEqualTo ShipSpeed,0
  ...

End:
  Message "End of tutorial - Good luck !"
  EndMission
.)
Etc... etc...

With very minimalistic variable checks on your engine values you can see if the player is moving left, right, fast or slow, etc...

User avatar
Chema
Game master
Posts: 2723
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Post by Chema »

In order to please Dbug (ok, and many others...) I have included a very crude tutorial in the game.

The mission engine is not as flexible as to have continuous control about player's actions, and also much text takes a lot of space. Add this to the fact that testing every mission is tedious (have to test all the possibilities) and that is why I came up with this method.

Tutorial is composed of 4 missions, letting the player practice some game areas and giving some minimalistic advice (ship control, targetting and firing, combat and trade). It is not a replacement of the manual, nor something as complete as Dbug suggested, but something to make the newbie able to start playing quicker.

This is still a first attempt and I would like Dbug to test it, before making it final.

Now back to game missions...

Post Reply