I have some music composed with ArkosTracker for the ay. How can I use it in an Enterprise production? What are the limitations? Should I use a specific tracker for composing to be able to use it?There is one simpler way, use the CPC Arkos Tracker player code, and insert IstvánV's AY emulation routine, the other convert the data to be playable on EP.
I found memory map, character set is placed at $b480.It is true when System Segment (FFh) paged to Z80 Page 2, and using EXOS version 2.1+
40 byte for text, 16 bytes for Line Parameter TableNo.
40 bytes for text...
Guys, I am not sure how useful it is, but I've just made a "quick" summary writing about the EP systemGreat!
coolYeah, and as it's an "all in one" topic, then a "table of contents" with links to the posts where a new question popped up could make it easier to browse and search through.
tip: put this, and other links in the first post
we can collect some useful links in the first post
To edit the Wiki need to have some additional rights, whether I need to register separately ?
I took sample.asm and try to write characters to VRam. Nothing appears. What is a mistake?Mistake:
What is a mistake?In my sample.asm pixel graphics screen (320*200, 4 colors) definied at Z80 address C000h-
but you seem to expect characters on a graphic screen.This is the third problem :-)
So, if I understand, where are mo textmode with user-defined charset ?The example I've posted used 2-color char128 mode with a user-defined font (atari font). :oops:
- ATTRIBUTE - similar to zx spectrum (?) used to emulate the speccy screen (?); you have 2-color graphics + attribute mapSimilar, but different :) You can set paper and ink colors for every 8x1 pixel instead of Speccy 8x8 pixel.
ouch! i missed post with sources. now trying to compile with sjasm+As I see the font address is not correct, the Nick address of font has to be divided by the charmod character numbers, if you use CHR256 then the Nick address of font has to divide by 100h, if you use CHR64 then it has to be divided by 40h and so on, and this address has to be filled into LPT.
As I see the font address is not correct, the Nick address of font has to be divided by the charmod character numbers, if you use CHR256 then the Nick address of font has to divide by 100h, if you use CHR64 then it has to be divided by 40h and so on, and this address has to be filled into LPT.Uh, I messed that up... :oops:
any example of ATTRIBUTE? I stuck with modes ):Here is a Spectrum Attribute mode definition, extra colours have been used
Here is a Spectrum Attribute mode definition, extra colours have been usedYou can use the same method for define a normal attribute mode , where 1 attribute byte stands for 8x1 pixel, just have to increase attribute video memory address for each line, or you can define it with one line and give the Nick address of Attribute in byte 4-5 and give the nick address of bitmap in byte 6-7 in the line, and just change the 0th byte to 100h-screen height value ( in pixel rows )
Yet another example. Something wrong with colors(bright?)Using Spectrum screen need to convert attribute bytes.
32 - is bluethe 1st 2 is yes :) 44 is dark blue+medium red + light blue
72 - is red
44 - is green
is it right?
Look the EP colors page (http://ep.lgb.hu/colors.html) what I linked previously :-)
same as my screenshot, emulator 2.0.9.1No.
How to scan keyboard?
I found map of ports here:
http://www.ep128.hu/Ep_Konyv/Converting_Spectrum_Programs.pdf
and how fire is defined in ep128emu? I mean what key is for fire?
I understand matrix, but i cannot find value for arrows.
lgb, thank you. I mean "cursor keys".
a game almost ready/ What next - contact orginizers or create thread here?
I think my questions ain't offtopic. will wait geco's reply.
can I read values from these ports?Yes.
;11.23 Function 25 - Free Segment
; Parameters : C segment number
; Results : A status
;Az 0FAH szegmens felszabaditasa...
; For the Liberation of 0FAH segment ...
LD C,0FAH
EXOS 25
;... es belapozasa a 2-es lapra Ugyanez az 0FCH szegmenssel
; ... And belapozasa the 2nd sheet of the same segment 0FCH
LD A,0FAH
OUT (0B2H),A ; segment FAh at $8000
LD C,0FCH;;free segment FCh
EXOS 25
LD A,0FCH
OUT (0B1H),A;segment FC at $4000
So, segment FCh always related to Nick?
So, segment FCh always related to Nick?Yes.
Yes.
But the exampled source code are wrong for memory allocation.
wrong in "get a free Video segment"?Yes. EXOS 25 only can be used when you allocated the segment.
And I will shortly upload my loader for Spectrum conversions.
Yes. EXOS 25 only can be used when you allocated the segment.
See my SAMPLE.ASM for right memory allocation. (https://enterpriseforever.com/other-topics/maybe-we-should-organize-a-gamedevcompo/msg50758/#msg50758)
for some reasons, routine jumps to the exit routine. How to detect error and reason?After any EXOS call NZ flag set if any error occured.
252 "Stack overflow". very interesting.252 = FC in hex. Looks to me like segment number and error code might have got mixed up! :oops:
252 "Stack overflow". very interesting.EXOS have a own stack in the System Segment. And EXOS calls can be use another EXOS function calls. Then need always check the available space in the System Stack. Simple example: BASIC use Read Block function to read EDITOR channel, for read the new line entered by the user.
Yes, great to see one!There is it.
how good is ecompress?Some examples:
These file sizes are with "mhmt -hst", using this program (https://code.google.com/p/mhmt/) for the compression (not sure if there is a better version):
ARIZONA.RAW - 44706
BATMAN.APL - 30368
BATMAN.COM - 3480
EXOLON.PRG - 21684
EXOLON.SCR - 2236
how to compile pt3 player?I think you can ignore this error message, the byte lost means in this case 01xxxx, 01 is lost, but you can try with other order it may work:
LD HL,SPCCOMS+#FF20-#2000
sjasm says "Bytes lost".
how to compile pt3 player?With Sjasm 0.39 no problem.
LD HL,SPCCOMS+#FF20-#2000
sjasm says "Bytes lost".
LD A,30H
OUT (0B4H),A
xor a
in a,($FE)
How to check if any key pressed?You have to read all key rows, something like the following:
for example, on ZX isCode: [Select]xor a
in a,($FE)
chkkey
ld b,0ah
readkey
ld a,b
dec a
out (0b5h),a
in a,(0b5h)
inc a
ret nz ;NZ if key pressed
djnz readkey
ret ; Z if key not pressed
chkkey
ld b,0ah
readkey
ld a,b
dec a
out (0b5h),a
in a,(0b5h)
ld c,a
in a,(0b6h)
or 0feh
and c
inc a
ret nz ;NZ if key pressed
djnz readkey
ret ; Z if key not pressed
if you want to check joystick also then:Code: [Select]chkkey
ld b,0ah
readkey
ld a,b
dec a
out (0b5h),a
in a,(0b5h)
ld c,a
in a,(0b6h)
or 0feh ;11111110b
and c
inc a
ret nz ;NZ if key pressed
djnz readkey
ret ; Z if key not pressed
Does anybode tried to build LPT for Timex multicolor mode?If I understood right then I think it is easy.
Can you upload some sample images? Then I will modify my Spectrum loader for this mode.
And one question: is possible to change LPT's parameter every frame?Yes, any parameter can be changed, or if you need speed, then you can build more LPT's and change between them in every frame.
this is simple conversionIt is right results, or something wrong? :oops:
CALL VID ;get a free Video segment
LD A,RAM2 ; PUT VIDEO RAM IN PAGES 2 AND 3
OUT (PAGE2),A ; (PAGE 1 NOT USED, PAGE 0 ALREADY
INC A ; HAS THIS CODE IN)
OUT (PAGE3),A
Iis it comptibility feature or not?Yes. The solution what you see in my examples are 100% EXOS compatible, will run on all Enterprise configuration, or exit if not enought memory available, without overwrite anything in the system memory.
+-----+-----+-----+-----+
| HL | DE |wait |lines|
+-----+-----+-----+-----+
| Vm | Vm | on | ~192|
| Vm | Nm | on | ~156|
| Nm | Vm | on | ~156|
| Nm | Nm | on | ~144|
+-----+-----+-----+-----+
| Vm | Vm | off | ~192|
| Vm | Nm | off | ~192|
| Nm | Vm | off | ~192|
| Nm | Nm | off | ~160|
+-----+-----+-----+-----+
Now I writing small game on basic.
When and why would you want to enable the wait states on dave port $bf?
- compatibility with real machines that use unusually slow DRAM; I think these are a small minority, but Zozosoft could probably tell more about how much of an issue this is in practiceOnly very few machines got a slow DRAM or EPROM chips, which need the wait state. Because many programs use the no wait setting, then these machines failed and went to repair at about 25-30 years ago :-) Personally I replaced memory in one machine, and about 2-3 German Basic EPROM.
small basic program with too many labels? :)No. I wrote: "small game on basic" ;)
I took source from Col256 demo:Your LPT contains only 289 lines
http://www.ep128.hu/Ep_Demo/Demo_eng.htm
seems code is out of synchronization.
how to fix one?
Now I writing small game on basic.What is this source? It is look as assembly not as BASIC :oops:
yes, changes works now. but pixels looks like a bricks ;)Yes, because in 256 col mode one pixel is 4x larger than in 4 col mode.
What is a way to convert RGB values to EP mode?
Bit 7 6 5 4 3 2 1 0
g0r0b0g1r1b1g2r3
If you want to convert a picture to enterprise and not to 256 Col mode, then EPIMGCONV is the best tool for it.
If you want to convert a picture to enterprise and not to 256 Col mode, then EPIMGCONV is the best tool for it.
yes, I see format nd description of rgb values. I have dump of picture (indexed values and palette - R,G,B) and now i am looking to conversion.
What is this source? It is look as assembly not as BASIC :oops:This is output of ZIPSRC tool from here (https://enterpriseforever.com/hall-of-fame/zzzip-integer-compiler/msg21770/#msg21770).
Is there a way to programatically check for turbo mode (and of what kind/speed is it)?Yes, count the instructions in a frame, and in this way possible to decide if the program runs in an emulator, or on real machine also if it is a turbo EP.
Thanks.
Zozo, could you for completeness include the code for multiplication and division procedures :oops:
@IstvanV I saw that in your sprite example you were able to count the exact time of the drawing code. I hope it's not a stupid question to ask you for the principles of applying the waits to instruction timings... I guess it's based on the source/destination memory segment (if it has wait states) or is there another factor?
|read memory type|write memory type| M1 delay| read delay| write delay| io read delay| io write delay|
It's for a person that is writing a z80 profiler so maybe he could add an enterprise mode.
I created a small routine which save DAVE registers during Basic sound playback, I could insert I Love Rock'n'Roll into Bricky Prise with this solution.
I've googled this ayfxedit from http://shiru.untergrund.net/files/ayfxedit04.zip but I'm currently at work so can't really test it. But it seems to have many example effects from games. Anyone could tell me how to port the spectrum sfx to ep? Is there a tool for this?Are they contain only sound RAW data, or data + player assembly?
Anyone fancy for another try?
Rules more or less the same (although looking back at the first edition there need to be some minor changes made), however if there wouldn't be any objections I'd like to limit the original categories to productions with blocky graphic modes (like 160x128 with 2x2 pixels, 80x64 4x4pixels or similar) because I think that there's a lot of potential in these graphic modes (I know I'm being quite egoistic here).
Or we can make a separate category for blocky games.Better idea. I don't want to close out anything new :-)
Should we set start date to 1st of december and end date to 16 of may?Yeah, these dates are ok. To tell you the truth I was really disappointed and down about the lack of real interest from the outside so I don't really believe that this time it will be different but maybe Shadow's demo changed something...
If these are clarified, I will start to promote it on Pouet, CPC and Speccy forum.
I think that the first edition showed that there's no sense in having more categories. I'd even considered having no categories and have more awarded places based on funds.One category also a good idea, and we can set special prices for blocky games, ex best 3 blocky game get additional award.
Let's abandon the "blocky" restriction - that was just an idea to somewhat promote these modes (inspired by looking at so many beautiful pico8 and gameboyjam games).
However I will consider awarding a small bonus to the blocky productions, I like ;P.
Yeah, these dates are ok. To tell you the truth I was really disappointed and down about the lack of real interest from the outside so I don't really believe that this time it will be different but maybe Shadow's demo changed something...I was also disappointed, but now i do not have big expectation :D , so i will be happy if anybody joins from outside.
One idea: make a videos of best programs of DevCompo #1, and these can be linked in DevCompo #2 advertisment as examples.Good idea, but who will make the videos? :)
Good idea, but who will make the videos? :)Quite easy:
Good idea, but who will make the videos? :)SlashNet? He are professional in videos making (https://www.youtube.com/playlist?list=PLyuEnSWHiyJt37qckGpri-F45AuZh8Ar0)!
back again to devcompo#2:The last 8 bytes of each LPB are the colours 0..7 in the part of the screen defined by the given LPB. Colours 8..15 are generated from colours 0..7 and the BIAS register of the NICK. This (http://ep.homeserver.hu/Dokumentacio/Konyvek/EXOS_2.1_technikal_information/index.html) book probably tells everything better than I ever could.
how to define colors at LPT for mode 16colors?
how to define colors at LPT for mode 16colors?You can define only the first 8 in each LPT lines. Other 8 are definied by the Fix Bias register, and it is valid for the whole screen. But you can change it anytime, then timed or IRQ based Bias change trick possible for use different Bias on different screen areas. But it is need a more CPU time.
hmm. yes, i read Nick docs, but I messed into one:(Mode byte in LPB should be 52h if you want to use 16 colour 160x200 reso, 14h if you want to use attribute screen.
Anyway, Idea is to get only 16 colours.
Mode byte in LPB should be 52h if you want to use 16 colour 160x200 reso,
so, 160x200 is limited resolution?in the reality it is not limited to 160x200 (max screen size in this case 184x300), but yes when you use 16 colour and Pixel mode then the horizontal size of the pixel is doubled, in attribute mode you can use 16 colours and normal pixel size.
some info for EC0-EC3 lead to error 404:
http://ep.lgb.hu/doc/Nick.html#FIXBIAS
how to define colors?
LD BC,100H+28 ;B=1 write
;C=28 number of system variable (BIAS)
LD D,0c0h ;new value
EXOS 16 ;handling EXOS variable
ld a,color/8
out (80h),a
LPT: DB -200 ;200 lines
DB VRES+C16+PIXEL
; DB VRES+C4+PIXEL;32H ;0 01 1 001 0
;VINT=0, no IRQ
;Colour Mode=01, 4 colours mode
;VRES=1, full vertical resolution
;Video Mode=001, pixel graphics mode
;Reload=0, LPT will continue
DB 11 ;left margin=11
DB 51 ;right margin=51
VIDCIM1: DW 0 ;primary video address, address of pixel data
DW 0 ;secondary videó address, not used in pixel graphics mode
PALETTE:; DB 0,$34,$3A,$3d,0,0,0,0
;;;;;;;;;;;;;;;;;;;;;;;; db 0,1,2,3,4,5,6,7
DB -50,12H,63,0,0,0,0,0,0,0,0,0,0,0,0,0
;50 lines of border, this is the bottom margin,
DB -3,16,63,0,0,0,0,0,0,0,0,0,0,0,0,0
;3 black lines, syncronization off
DB -4,16,6,63,0,0,0,0,0,0,0,0,0,0,0,0
;4 lines, syncronization on
DB -1,90H,63,32,0,0,0,0,0,0,0,0,0,0,0,0
;1 line, syncronization will switch off at half of line
;the NICK chip generate video IRQ at this line
DB 252,12H,6,63,0,0,0,0,0,0,0,0,0,0,0,0
;4 black lines
DB -50,13H,63,0,0,0,0,0,0,0,0,0,0,0,0,0
;50 lines of border, this is the top margin,
You should erase the line that I marked with ";;;;;;;;;;;;;;;;;;". Like the others already said - in the lpt you give only the first 8 colors. The other 8 are determined by a single write to the fixbias register ($80) and are not arbitrary but you choose a group of 8 colors from 32 possible combinations.
You can do it in the beginning of your code by the following EXOS call, until EXOS interrupt is active:Code: [Select]LD BC,100H+28 ;B=1 write
;C=28 number of system variable (BIAS)
LD D,0c0h ;new value
EXOS 16 ;handling EXOS variable
If not needed any fast BIAS changing trick in the program then I recommend using EXOS variable setting.
1 - start EP128EmuMade:
2 - load the game
3 - start video capture
4 - play the game
5 - stop video capture
6 - upload video to youtbe