Doing 3D games on the Oric ?
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?
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?
Ah, ok. I should have figured out.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.
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
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
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
EDIT: Symoon just tested this new version, and it still doesn't work. It behaves the same way, so I have no more ideas...
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]
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]
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
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
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!
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!
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...
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...
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.
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.
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
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
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 :/
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 :/
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):
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...
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
.)
With very minimalistic variable checks on your engine values you can see if the player is moving left, right, fast or slow, etc...
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...
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...