Aktualności: C64 Power - online od stycznia 2000 !

Autor Wątek: Wektory na C64  (Przeczytany 5003 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Exosoft

  • Gość
Wektory na C64
« dnia: 18 Stycznia 2017, 05:05 »
Witam :)

Widzę, że ciekawe forum i coś się dzieje to mam pytanko odnośnie wektorowych rzeczy na C64 (obliczane realtime oczywiście) . Ja jestem trochę początkującym i nie, koderem na C64 to nie brałem się jeszcze za robienie wektorów bo nie wiem na czym wyliczyć tablice oraz myślę, że z kodem jakoś sobie poradzę. Czytałem gdzieś w jakimś info, że jest sporo softu na PC i C64, które obliczają tablice wyglądu wektorów i innych podobnych rzeczy, więc może ktoś zna nazwy takich programów albo jakiś help np. być może są funkcje w kompilatorach ASM na PC do robienia takich rzeczy, jak np. obliczanie tablic sinus w 64tass itp. Ja oczywiście pod koniec tego postu podałem to jako przykład, a ogólnie to myślę, że ten temat przyda się też innym koderom, którzy np. planują zrobić własne demo . Pozdrawiam :)
« Ostatnia zmiana: 18 Stycznia 2017, 05:09 wysłana przez Exosoft »



Offline wegi

  • Level 7
  • *******
  • Wiadomości: 2588
Re: Wektory na C64
« Odpowiedź #1 dnia: 20 Stycznia 2017, 18:21 »
[...]
 że jest sporo softu na PC i C64, które obliczają tablice wyglądu wektorów
[...]
obliczanie tablic sinus w 64tass itp.
[...]

Tablice wyglądu wektorów ?

Tablice sinusa możesz sobie policzyć choćby w Basic'u, a natywnie takie rzeczy obsługuje KickASS

.fill 512,<round(0+16256*sin(toRadians(i*360/256+360/512)))
.fill 512,>round(0+16256*sin(toRadians(i*360/256+360/512)))


Kradnąc własnego posta załączony przykład liczy 128 dot ball 50FPS bez perspektywy

Dalsze rozważania, w szczególności informacje od Oswalda warte śledzenia tu:

http://formatwar.net/forums/viewtopic.php?f=5&t=493

i tu:

http://formatwar.net/forums/viewtopic.php?f=5&t=491


Commodorowskie (i nie tylko) ABC obliczania wektorów tu:

http://codebase64.org/doku.php?id=magazines:chacking8

!to "any128ball.prg" , CBM

;=================================
;= A simple 128 vector dots ball =
;=        code by wegi           =
;=       in  2015.02.01          =
;=================================

;----------------------------
;- very unoptimized version -
;-     make this better     -
;-       and faster :)      -
;----------------------------


;show_free_time = -1
;save_regs      = -1
;check_80       = -1
;recall_01      = -1
plot_by_ora    = -1

many_dots      = 16 ;so ball 128 -> 16*8 dots

;--- screen setup data ---
screen         = $2000 ;our screen  256/200 px
rcolor         = $0400
value_d018     = $18
value_dd00     = $03
;-------------------------
;- a tables declarations -
;-------------------------
tb_bit1        = $4000
tb_adlo1       = tb_bit1 + $80
tb_adhi1       = tb_adlo1 + $80
tb_bit2        = tb_adhi1 + $80
tb_adlo2       = tb_bit2 + $80
tb_adhi2       = tb_adlo2 + $80
;---
tb_fact1       = tb_bit1 + $0300 ;start plot coord.
tb_fact2       = tb_fact1 + many_dots
tb_fact3       = tb_fact2 + many_dots
replic_tab     = tb_fact3 + many_dots
;---
trashcan       = tb_bit1 + $0400 ;here go out all plots where Y is bellow 28 and above 228
;-
tbadlo         = tb_bit1 + $0500 ;lo byte plot addres
tbadhi         = tb_bit1 + $0600 ;hi byte plot address
tabxm          = tb_bit1 + $0700 ;offset for x value
tbbit          = tb_bit1 + $0800 ;a plot value
;- inverse tables
tbadlo2        = tb_bit1 + $0900
tbadhi2        = tb_bit1 + $0a00
tabxm2         = tb_bit1 + $0b00
tbbit2         = tb_bit1 + $0c00
;---
tbscale        = tb_bit1 + $0d00 ;a prescale tables start address
;---
;------------------
;- some variables -
;------------------

;***********************
lo_angle_x     = $12
lo_angle_y     = $13
lo_angle_z     = $14

hi_angle_x     = $15 ;sx
hi_angle_y     = $16 ;sy
hi_angle_z     = $17 ;sz


lo_delta_x     = $19
lo_delta_y     = $1a
lo_delta_z     = $1b

hi_delta_x     = $1c
hi_delta_y     = $1d
hi_delta_z     = $1e
;************************
mat_A_lo       = $20 ; A = (cos(sy-sz)+cos(sy+sz))/4
mat_B_lo       = $21 ; B = (sin(sy-sz)-sin(sy+sz))/4
mat_C_lo       = $22 ; C = sin(sy)/2
mat_D_lo       = $23 ; D = (cos(sx-sy+sz)-cos(sx+sy+sz)+cos(sy+sz-sx)-cos(sx+sy-sz)/2 + sin(sx+sz)-sin(sx-sz))/4
mat_E_lo       = $24 ; E = (sin(sx+sy+sz)-sin(sx-sy+sz)-sin(sx+sy-sz)-sin(sy+sz-sx)/2 + cos(sx+sz)+cos(sx-sz))/4
mat_F_lo       = $25 ; F = (sin(sy-sx)-sin(sy+sx))/4

mat_A_hi       = $27 ;hi byte of matrix
mat_B_hi       = $28
mat_C_hi       = $29
mat_D_hi       = $2a
mat_E_hi       = $2b
mat_F_hi       = $2c
;********************
t1             = $2e  ;sy-sz
t2             = $2f  ;sy+sz
t3             = $30  ;sx+sz
t4             = $31  ;sx-sz
t5             = $32  ;sx+sy+sz = sx+t2
t6             = $33  ;sx-sy+sz = sx-t1
t7             = $34  ;sx+sy-sz = sx+t1
t8             = $35  ;sy+sz-sx = t2-sx

v1             = $2e ;(A*fact2)
v2             = $2f ;(B*fact1)
v3             = $30 ;(C*fact3)
v4             = $31 ;(D*fact2)
v5             = $32 ;(E*fact1)
v6             = $33 ;(F*fact3)



tmpr1          = $37
tmpr2          = $38

vect1          = $3a ;$3a-$3b
vect2          = $3c ;$3c-$3d

tmpr3          = $3f
tmpr4          = $40
t_x            = $41
t_y            = $42

dotcount       = $44
pointer        = $45
count_check    = $46
;-----------------
;- variables end -
;-----------------

;-----------------
;- program start -
;-----------------

;===========================
;=== basiline 0 sys 2061 ===
;===========================
          *=$0801
     !byte $0b,$08,$00,$00,$9e,$32
     !byte $30,$36,$31,$00,$00,$00
;-------------

;======================
          sei
          cld
          jsr initirq
          jsr setup_scr
          lda #$3b
          sta $d011
          jsr make_tables
          jsr insert_dots

          lda #0
          sta vect1

          inc $d019
          cli
;---
-
!ifdef show_free_time {
          inc $d020
}
          jmp -
;---

;---------------------
;-  quarter  of sin  -
;-  this sine have a -
;-   -255 to + 255   -
;-      values       -
;---------------------
tbsine
     !byte $00
     !byte $06,$0c,$12,$19
     !byte $1f,$25,$2b,$31
     !byte $38,$3e,$44,$4a
     !byte $50,$56,$5c,$61
     !byte $67,$6d,$73,$78
     !byte $7e,$83,$88,$8e
     !byte $93,$98,$9d,$a2
     !byte $a7,$ab,$b0,$b5
     !byte $b9,$bd,$c1,$c5
     !byte $c9,$cd,$d1,$d4
     !byte $d8,$db,$de,$e1
     !byte $e4,$e7,$ea,$ec
     !byte $ee,$f1,$f3,$f4
     !byte $f6,$f8,$f9,$fb
     !byte $fc,$fd,$fe,$fe
     !byte $ff,$ff,$ff,$00
;-------------------------------------
;- ///////////////////////////////// -
;-------------------------------------

;-------------
irq
!ifdef save_regs {
          sta acc_reg
          stx reg_x
          sty reg_y
}
;---
!ifdef recall_01 {

          lda $01
          pha
          lda #$35
          sta $01
}
;---
!ifdef show_free_time {
     lda #0
     sta $d020
}
;---
          inc $d019
;***********************************************
;****************** mainloop *******************
;***********************************************
tst_01= *+1
          lda #$00
          eor #$ff
          sta tst_01
          bne next_01
;-------------------

          lda #$00
          tax

-         ldy tb_adhi2,x
          sty vect1+1
          ldy tb_adlo2,x
          sta (vect1),y
          inx
          bpl -

          tax
-
          ldy tb_adhi1,x
          sty vect1+1
          ldy tb_adlo1,x
          lda tb_bit1,x
;---
!ifdef plot_by_ora {
          ora (vect1),y
}
;---
          sta (vect1),y
          inx
          bpl -

          jsr update_angles ;+ calculate and check matrix
          jmp loop2
;***********************
next_01
          lda #$00
          tax

-         ldy tb_adhi1,x
          sty vect1+1
          ldy tb_adlo1,x
          sta (vect1),y
          inx
          bpl -

          tax
-
          ldy tb_adhi2,x
          sty vect1+1
          ldy tb_adlo2,x
          lda tb_bit2,x
;---
!ifdef plot_by_ora {
          ora (vect1),y
}
;---
          sta (vect1),y
          inx
          bpl -

          jsr update_angles ;+ calculate and check matrix
          jmp loop1
;**********************************
;*** this is all off mainloop   ***
;**********************************

irq_exit

;-------------------
!ifdef recall_01 {

          pla
          sta $01
}

!ifdef save_regs {
acc_reg = *+1
          lda #$00
reg_x   = *+1
          ldx #$00
reg_y   = *+1
          ldy #$00
}
nmiex
          rti

;------
;================================
;=== o.k. irq works fine :) ! ===
;================================


;*****************************
;**** this is a main stub ****
;*****************************
;=============================
;===    update angles      ===
;=============================
update_angles

          ldx #2
          clc

-         lda lo_angle_x,x
          adc lo_delta_x,x
          sta lo_angle_x,x

          lda hi_angle_x,x
          adc hi_delta_x,x
          sta hi_angle_x,x
          dex
          bpl -
;rts
;===========================
;= calculate 16 bit matrix =
;=     [ A    B    C ]     =
;=     [ D    E    F ]     =
;===========================


;   A = (cos(t1)+cos(t2))/4
;   B = (sin(t1)-sin(t2))/4
;   C = sin(sy)/2
;   D = (sin(t3)-sin(t4))/4 + (cos(t6)-cos(t5)+cos(t8)-cos(t7))/8
;   E = (cos(t3)+cos(t4))/4 + (sin(t5)-sin(t6)-sin(t7)-sin(t8))/8
;   F = (sin(t9)-sin(t10))/4

;where
;   t1 = sy-sz
;   t2 = sy+sz
;   t3 = sx+sz
;   t4 = sx-sz
;   t5 = sx+sy+sz = sx+t2
;   t6 = sx-sy+sz = sx-t1
;   t7 = sx+sy-sz = sx+t1
;   t8 = sy+sz-sx = t2-sx
;   t9 = sy-sx
;   t10= sy+sx
;------------------------------
; A = (cos(sy-sz)+cos(sy+sz))/4
;------------------------------
;-------------------------------
; B = (sin(sy-sz)-sin(sy+sz))/4
;-------------------------------
;--------------
; C = sin(sy)/2
;--------------
;------------------------------------------------------------------------------------------
; D = (cos(sx-sy+sz)-cos(sx+sy+sz)+cos(sy+sz-sx)-cos(sx+sy-sz)/2 + sin(sx+sz)-sin(sx-sz))/4
;------------------------------------------------------------------------------------------
;------------------------------------------------------------------------------------------
; E = (sin(sx+sy+sz)-sin(sx-sy+sz)-sin(sx+sy-sz)-sin(sy+sz-sx)/2 + cos(sx+sz)+cos(sx-sz))/4
;------------------------------------------------------------------------------------------
;------------------------------
; F = (sin(sy-sx)-sin(sy+sx))/4
;------------------------------

calculate_matrix
;**********************************************************
;---
;CALC A
;---
;------------------------------
; A = (cos(sy-sz)+cos(sy+sz))/4
;------------------------------
          ldx #$00
          stx tmpr1
          stx tmpr2
          lda hi_angle_y      ;(sy)
          sec
          sbc hi_angle_z      ;(sy-sz)
          sta t1              ;t1 = (sy-sz)
          jsr offs64_calc     ;cos(sy-sz)

          lda hi_angle_y      ;(sy)
          clc
          adc hi_angle_z      ;(sy+sz)
          sta t2              ;t2 = (sy+sz)
          jsr offs64_calc     ;cos(sy+sz)

          ;in acc is tmpr2
          cmp #$80            ;div 4
          ror
          sta mat_A_hi
          ror tmpr1
          asl
          lda tmpr1
          ror
          sta mat_A_lo

          ;(cos(t1)+cos(t2))/4 = (cos(sy-sz)+cos(sy+sz))/4


;---
;CALC B
;---
;-------------------------------
; B = (sin(sy-sz)-sin(sy+sz))/4
;-------------------------------
          lda #$00
          sta tmpr1
          sta tmpr2

          lda t1              ;(sy-sz)
          jsr part_calc       ;sin(sy-sz)

          lda t2              ;(sy+sz)
          eor #$80            ;-sin
          jsr part_calc       ;-sin(sy+sz)

          ;in acc is tmpr2
          cmp #$80            ;div 4
          ror
          sta mat_B_hi
          ror tmpr1
          asl
          lda tmpr1
          ror
          sta mat_B_lo
          ;(sin(t1)-sin(t2))/4 = (sin(sy-sz)-sin(sy+sz))/4
;---
;CALC C
;---
;--------------
; C = sin(sy)/2
;--------------
          ldx #$00
          stx tmpr1
          stx tmpr2

          lda hi_angle_y      ;(sy)
          jsr part_calc       ;sin(sy)
          ;in acc is tmpr2
          cmp #$80            ;div 2
          ror
          sta mat_C_hi
          lda tmpr1
          ror
          sta mat_C_lo        ;sin(sy)/2
;---
;CALC D
;---
;------------------------------------------------------------------------------------------
; D = (cos(sx-sy+sz)-cos(sx+sy+sz)+cos(sy+sz-sx)-cos(sx+sy-sz)/2 + sin(sx+sz)-sin(sx-sz))/4
;------------------------------------------------------------------------------------------
          lda #$00
          sta tmpr1
          sta tmpr2

          lda hi_angle_x      ;(sx)
          sec
          sbc t1              ;(sx-t1) = (sx-sy+sz)
          sta t6              ;t6 = (sx-sy+sz)
          jsr offs64_calc     ;cos(sx-sy+sz)

          lda hi_angle_x      ;(sx)
          clc
          adc t2              ;(sx+t2) = (sx+sy+sz)
          sta t5              ;t5 = (sx+sy+sz)
          adc #$c0            ;-cos
          jsr part_calc       ;-cos(sx+sy+sz)

          lda t2              ;s(y+sz)
          sec
          sbc hi_angle_x      ;(t2-sx) = (sy+sz-sx)
          sta t8              ;t8 = (sy+sz-sx)
          jsr offs64_calc     ;cos(sy+sz-sx)

          lda hi_angle_x      ;(sx)
          clc
          adc t1              ;(sx+t1) = (sx+sy-sz)
          sta t7              ;t7 = (sx+sy-sz)
          adc #$c0            ;-cos
          jsr part_calc       ;-cos(sx+sy-sz)

          ;in acc tmpr2
          asl                 ;div 2
          ror tmpr2
          ror tmpr1
          ;(cos(t6)-cos(t5)+cos(t8)-cos(t7))/2 =
          ; = (cos(sx-sy+sz)-cos(sx+sy+sz)+cos(sy+sz-sx)-cos(sx+sy-sz))/2

          lda hi_angle_x      ;(sx)
          clc
          adc hi_angle_z      ;(sx+sz)
          sta t3              ;t3 = (sx+sz)
          jsr part_calc       ;sin(sx+sz)

          lda hi_angle_x      ;(sx)
          sec
          sbc hi_angle_z      ;(sx-sz)
          sta t4              ;t4 = (sx-sz)
          eor #$80            ;-sin
          jsr part_calc       ;-sin(sx-sz)

          ;in acc is tmpr2
          cmp #$80            ;div 4
          ror
          sta mat_D_hi
          ror tmpr1
          asl
          lda tmpr1
          ror
          sta mat_D_lo

;[(sin(t3)-sin(t4))/4] + [(cos(t6)-cos(t5)+cos(t8)-cos(t7))/8] =
;= [(cos(sx-sy+sz)-cos(sx+sy+sz)+cos(sy+sz-sx)-cos(sx+sy-sz)/2 + sin(sx+sz)-sin(sx-sz))]/4
;---
;CALC E
;---
;------------------------------------------------------------------------------------------
; E = (sin(sx+sy+sz)-sin(sx-sy+sz)-sin(sx+sy-sz)-sin(sy+sz-sx)/2 + cos(sx+sz)+cos(sx-sz))/4
;------------------------------------------------------------------------------------------
          lda #$00
          sta tmpr1
          sta tmpr2

          lda t5              ;(sx+sy+sz)
          jsr part_calc       ;sin(sx+sy+sz)
          lda t6              ;(sx-sy+sz)
          eor #$80            ;-sin
          jsr part_calc       ;-sin(sx-sy+sz)
          lda t7              ;(sx+sy-sz)
          eor #$80            ;-sin
          jsr part_calc       ;-sin(sx+sy-sz)
          lda t8              ;(sy+sz-sx)
          eor #$80            ;-sin
          jsr part_calc       ;-sin(sy+sz-sx)

          ;in acc tmpr2
          asl                 ;div 2
          ror tmpr2
          ror tmpr1
;(sin(t5)-sin(t6)-sin(t7)-sin(t8))/2 =
; = (cos(sx-sy+sz)-cos(sx+sy+sz)+cos(sy+sz-sx)-cos(sx+sy-sz))/2

          lda t3              ;(sx+sz)
          jsr offs64_calc     ;cos(sx+sz)
          lda t4              ;(sx-sz)
          jsr offs64_calc     ;cos(sx-sz)

          ;in acc is tmpr2
          cmp #$80            ;div 4
          ror
          sta mat_E_hi
          ror tmpr1
          asl
          lda tmpr1
          ror
          sta mat_E_lo
;[(cos(t3)+cos(t4))]/4 + [(sin(t5)-sin(t6)-sin(t7)-sin(t8))]/8 =
; = [(sin(sx+sy+sz)-sin(sx-sy+sz)-sin(sx+sy-sz)-sin(sy+sz-sx)/2 + cos(sx+sz)+cos(sx-sz))]/4
;---
;CALC F
;---
;------------------------------
; F = (sin(sy-sx)-sin(sy+sx))/4
;------------------------------
          lda #$00
          sta tmpr1
          sta tmpr2

          lda hi_angle_y      ;(sy)
          sec
          sbc hi_angle_x      ;(sy-sx)
          jsr part_calc       ;sin(sy-sx)

          lda hi_angle_y      ;(sy)
          clc
          adc hi_angle_x      ;(sy+sx)
          eor #$80            ;-sin
          jsr part_calc       ;-sin(sy+sx)

          ;in acc is tmpr2
          cmp #$80            ;div 4
          ror
          sta mat_F_hi
          ror tmpr1
          asl
          lda tmpr1
          ror
          sta mat_F_lo        ;(sin(sy-sx)-sin(sy+sx))/4
;rts
;======================
;= now a little check =
;======================
check_matrix

          ldx #$05
-         lda mat_A_hi,x

!ifdef check_80 {
          bne +
          lda mat_A_lo,x
          cmp #$80
          bne not_do
          beq do_it
+
}
          ;cmp #$FE
          ;bne +
          ;lda #$80
          ;bne repair
+         cmp #$01
          bne not_do
do_it     lda #$7F
repair    sta mat_A_lo,x
not_do    dex
          bpl -
          rts
;=================
;=   check end   =
;=================
;==========================
;=  end calculate_matrix  =
;==========================
;----------------------------------
;-    subrotine to calc matrix    -
;-     sum to tmpr1 and tmpr2     -
;-    needed sin/cos([S(x|y|z)]   -
;----------------------------------
offs64_calc ;cos
          clc
          adc #$40
;-
part_calc ;sin
          ldy #$00
          tax
          and #$7F
          cmp #$40
          bcc less_64
          bne no_iny
          iny
no_iny    and #$3F
          eor #$ff ;c =1
          adc #$40

;---
less_64 ;sign(+)
          cpx #$80
          tax
          bcs over_128
          lda tbsine,x
          adc tmpr1
          sta tmpr1
          tya
          adc tmpr2
          sta tmpr2
          rts
;---
over_128 ;sign(-)
          lda tmpr1
          sbc tbsine,x
          sta tmpr1
          tya
          eor #$ff ;Carry is cummulated with sbc
          adc tmpr2
          sta tmpr2
          rts
;--------------------------------
;- end subrotine to calc matrix -
;--------------------------------


;============================
; *** this code make : ***
; **    X and Y [X;Y]   **
; *      coordinates     *
;                                 **    as [ X ; Y ]    **
;-------------------------------------------------------------------------------
; plot 1/2     [ (A*fact2 + B*fact1 + C*fact3) ; (D*fact2 + E*fact1 + F*fact3) ]
;-------------------------------------------------------------------------------
;-------------------------------------------------------------------------------
; plot 3/4     [ (A*fact2 + B*fact1 - C*fact3) ; (D*fact2 + E*fact1 - F*fact3) ]
;-------------------------------------------------------------------------------
;-------------------------------------------------------------------------------
; plot 5/6     [ (A*fact2 - B*fact1 - C*fact3) ; (D*fact2 - E*fact1 + F*fact3) ]
;-------------------------------------------------------------------------------
;-------------------------------------------------------------------------------
; plot 7/8     [ (A*fact2 - B*fact1 - C*fact3) ; (D*fact2 - E*fact1 - F*fact3) ]
;-------------------------------------------------------------------------------




Po tak solidnej dawce informacji popartej żywymi, działającymi przykładami możesz nam teraz pacnąć gorauda (żerom)
Gdy po wynalezieniu komputera kwantowego jedni pytali o sposób wytwarzania prądu, kisiel pytał jak wytwarzać świeczki...

NIECH NIE BĘDZIE NICZEGO !!!

CZY RAF PIŁ Z JERICHA KUBECZKA ???

Offline wegi

  • Level 7
  • *******
  • Wiadomości: 2588
Re: Wektory na C64
« Odpowiedź #2 dnia: 20 Stycznia 2017, 18:22 »
Ciąg dalszy kodu, bo się nie zmieściło w jednym poście.


loop1
;-----------------------
;- get the all factors -
;-----------------------
;---
          lda #$0f
          sta dotcount
          lda #$00
          sta tmpr3
loop1a
          ldx dotcount
;---
          lda tb_fact3,x
          sta vect1+1

          ldy mat_F_lo
          lda (vect1),y
          sta v6              ;(F*fact3)
;---
          ldy mat_C_lo
          lda (vect1),y
          sta v3              ;(C*fact3)
;---
          lda tb_fact1,x
          sta vect1+1

          ldy mat_E_lo
          lda (vect1),y
          sta v5              ;(E*fact1)
;---
          ldy mat_B_lo
          lda (vect1),y
          sta v2              ;(E*fact1)
;---
          lda tb_fact2,x
          sta vect1+1

          ldy mat_D_lo
          lda (vect1),y
          sta v4              ;(D*fact2)
;---
          ldy mat_A_lo
          lda (vect1),y
          sta v1              ;(A*fact2)
;-------------------------------------------------------------------------------
; plot 1/2     [ (A*fact2 + B*fact1 + C*fact3) ; (D*fact2 + E*fact1 + F*fact3) ]
;-------------------------------------------------------------------------------
;-------------------------
;- calculations plot 1/2 -
;-------------------------
          ;lda v1
          ;acc = v1
          adc v2              ;(A*fact2 + B*fact1)
          adc v3              ;(A*fact2 + B*fact1 + C*fact3)
          tax ;x plot 5/6     ;(A*fact2 + B*fact1 + C*fact3)

          ldy tmpr3
          lda tbbit,x
          sta tb_bit1,y
          lda tbbit2,x
          sta tb_bit1+1,y

          lda v4
          adc v5              ;(D*fact2 + E*fact1)
          adc v6              ;(D*fact2 + E*fact1 + F*fact3)
          tay ;y plot 5/6     ;(D*fact2 + E*fact1 + F*fact3)
;------------------------
;- now prepare plot 1/2 -
;------------------------
               ;x = (A*fact2 + B*fact1 + C*fact3)
               ;y = (D*fact2 + E*fact1 + F*fact3)

          lda tbadlo,y
          clc
          adc  tabxm,x
          stx tmpr4
          ldx tmpr3
          sta tb_adlo1,x


          lda tbadhi,y
          adc #0
          sta tb_adhi1,x

          ldx tmpr4
          lda tbadlo2,y
          ;clc - no - C = 0
          adc tabxm2,x
          ldx tmpr3
          sta tb_adlo1+1,x

          lda tbadhi2,y
          adc #0
          sta tb_adhi1+1,x
;-------------------------------------------------------------------------------
; plot 3/4     [ (A*fact2 + B*fact1 - C*fact3) ; (D*fact2 + E*fact1 - F*fact3) ]
;-------------------------------------------------------------------------------
;-------------------------
;- calculations plot 3/4 -
;-------------------------
          lda v1              ;(A*fact2)
          adc v2              ;(A*fact2 + B*fact1)
          sbc v3              ;(A*fact2 + B*fact1 - C*fact3)
          tax                 ;(A*fact2 + B*fact1 - C*fact3)

          ldy tmpr3
          lda tbbit,x
          sta tb_bit1+2,y
          lda tbbit2,x
          sta tb_bit1+3,y


          lda v4              ;(D*fact2)
          adc v5              ;(D*fact2 + E*fact1)
          sbc v6              ;(D*fact2 + E*fact1 - F*fact3)
          tay    ;y plot 1/2  ;(D*fact2 + E*fact1 - F*fact3)
;------------------------
;- now prepare plot 3/4 -
;------------------------
               ;x = (A*fact2 + B*fact1 - C*fact3)
               ;y = (D*fact2 + E*fact1 - F*fact3)

          lda tbadlo,y
          clc
          adc  tabxm,x
          stx tmpr4
          ldx tmpr3
          sta tb_adlo1+2,x

          lda tbadhi,y
          adc #0
          sta tb_adhi1+2,x

          ldx tmpr4
          lda tbadlo2,y
          adc tabxm2,x
          ldx tmpr3
          sta tb_adlo1+3,x

          lda tbadhi2,y
          adc #0
          sta tb_adhi1+3,x
;-------------------------------------------------------------------------------
; plot 5/6     [ (A*fact2 - B*fact1 - C*fact3) ; (D*fact2 - E*fact1 + F*fact3) ]
;-------------------------------------------------------------------------------
;-------------------------
;- calculations plot 5/6 -
;-------------------------
          lda v1              ;(A*fact2)
          sbc v2              ;(A*fact2 - B*fact1)
          adc v3              ;(A*fact2 - B*fact1 - C*fact3)
          tax    ;x plot 3/4  ;(A*fact2 - B*fact1 - C*fact3)

          ldy tmpr3
          lda tbbit,x
          sta tb_bit1+4,y
          lda tbbit2,x
          sta tb_bit1+5,y

          lda v4              ;(D*fact2)
          sbc v5              ;(D*fact2 - E*fact1)
          adc v6              ;(D*fact2 - E*fact1 + F*fact3)
          tay    ;y plot 3/4  ;(D*fact2 - E*fact1 + F*fact3)
;------------------------
;- now prepare plot 5/6 -
;------------------------
               ;x = (A*fact2 - B*fact1 - C*fact3)
               ;y = (D*fact2 - E*fact1 + F*fact3)

          lda tbadlo,y
          clc
          adc  tabxm,x
          stx tmpr4
          ldx tmpr3
          sta tb_adlo1+4,x
          lda tbadhi,y
          adc #0
          sta tb_adhi1+4,x

          ldx tmpr4
          lda tbadlo2,y
          adc tabxm2,x
          ldx tmpr3
          sta tb_adlo1+5,x
          lda tbadhi2,y
          adc #0
          sta tb_adhi1+5,x
;-------------------------------------------------------------------------------
; plot 7/8     [ (A*fact2 - B*fact1 - C*fact3) ; (D*fact2 - E*fact1 - F*fact3) ]
;-------------------------------------------------------------------------------
;-------------------------
;- calculations plot 7/8 -
;-------------------------
          lda v1              ;(A*fact2)
          sbc v2              ;(A*fact2 - B*fact1)
          sbc v3              ;(A*fact2 - B*fact1 - C*fact3)
          tax ;x plot 7/8     ;(A*fact2 - B*fact1 - C*fact3)

          ldy tmpr3
          lda tbbit,x
          sta tb_bit1+6,y
          lda tbbit2,x
          sta tb_bit1+7,y

          lda v4
          sbc v5              ;(D*fact2 - E*fact1)
          sbc v6              ;(D*fact2 - E*fact1 - F*fact3)
          tay ;y plot 7/8     ;(D*fact2 - E*fact1 - F*fact3)
;------------------------
;- now prepare plot 7/8 -
;------------------------
               ;y = (D*fact2 - E*fact1 - F*fact3)
               ;x = (A*fact2 - B*fact1 - C*fact3)

          lda tbadlo,y
          clc
          adc  tabxm,x
          stx tmpr4
          ldx tmpr3
          sta tb_adlo1+6,x
          lda tbadhi,y
          adc #0
          sta tb_adhi1+6,x
          ldx tmpr4
          lda tbadlo2,y
          adc tabxm2,x
          ldx tmpr3
          sta tb_adlo1+7,x
          lda tbadhi2,y
          adc #0
          sta tb_adhi1+7,x
;-
          lda tmpr3
          clc
          adc #8
          sta tmpr3
          dec dotcount
          bmi +
          jmp loop1a
+         jmp irq_exit
;============
loop2
;-----------------------
;- get the all factors -
;-----------------------
          lda #$0f
          sta dotcount
          lda #$00
          sta tmpr3
loop2a
;---
          ldx dotcount
;---
          lda tb_fact3,x
          sta vect1+1

          ldy mat_F_lo
          lda (vect1),y
          sta v6              ;(F*fact3)
;---
          ldy mat_C_lo
          lda (vect1),y
          sta v3              ;(C*fact3)
;---
          lda tb_fact1,x
          sta vect1+1

          ldy mat_E_lo
          lda (vect1),y
          sta v5              ;(E*fact1)
;---
          ldy mat_B_lo
          lda (vect1),y
          sta v2              ;(E*fact1)
;---
          lda tb_fact2,x
          sta vect1+1

          ldy mat_D_lo
          lda (vect1),y
          sta v4              ;(D*fact2)
;---
          ldy mat_A_lo
          lda (vect1),y
          sta v1              ;(A*fact2)
;-------------------------
;- calculations plot 1/2 -
;-------------------------
          ;lda v1
          ;acc = v1
          adc v2
          adc v3
          tax

          ldy tmpr3
          lda tbbit,x
          sta tb_bit2,y
          lda tbbit2,x
          sta tb_bit2+1,y

          lda v4
          adc v5
          adc v6
          tay
;------------
;- plot 1/2 -
;------------
          lda tbadlo,y
          clc
          adc  tabxm,x

          stx tmpr4
          ldx tmpr3
          sta tb_adlo2,x

          lda tbadhi,y
          adc #0
          sta tb_adhi2,x

          ldx tmpr4
          lda tbadlo2,y
          ;clc - no - C = 0
          adc tabxm2,x
          ldx tmpr3
          sta tb_adlo2+1,x

          lda tbadhi2,y
          adc #0

          sta tb_adhi2+1,x
;-------------------------
;- calculations plot 3/4 -
;-------------------------
          lda v1
          adc v2
          sbc v3
          tax

          ldy tmpr3
          lda tbbit,x
          sta tb_bit2+2,y
          lda tbbit2,x
          sta tb_bit2+3,y

          lda v4
          adc v5
          sbc v6
          tay
;------------
;- plot 3/4 -
;------------
          lda tbadlo,y
          clc
          adc  tabxm,x
          stx tmpr4

          ldx tmpr3
          sta tb_adlo2+2,x

          lda tbadhi,y
          adc #0
          sta tb_adhi2+2,x

          ldx tmpr4
          lda tbadlo2,y
          adc tabxm2,x
          ldx tmpr3
          sta tb_adlo2+3,x

          lda tbadhi2,y
          adc #0
          sta tb_adhi2+3,x
;-------------------------
;- calculations plot 5/6 -
;-------------------------
          lda v1
          sbc v2
          adc v3
          tax

          ldy tmpr3
          lda tbbit,x
          sta tb_bit2+4,y
          lda tbbit2,x
          sta tb_bit2+5,y

          lda v4
          sbc v5
          adc v6
          tay

;------------
;- plot 5/6 -
;------------
          lda tbadlo,y
          clc
          adc  tabxm,x
          stx tmpr4
          ldx tmpr3
          sta tb_adlo2+4,x
          lda tbadhi,y
          adc #0
          sta tb_adhi2+4,x

          ldx tmpr4
          lda tbadlo2,y
          adc tabxm2,x
          ldx tmpr3
          sta tb_adlo2+5,x
          lda tbadhi2,y
          adc #0
          sta tb_adhi2+5,x

;-------------------------
;- calculations plot 7/8 -
;-------------------------
          lda v1
          sbc v2
          sbc v3
          tax

          ldy tmpr3
          lda tbbit,x
          sta tb_bit2+6,y
          lda tbbit2,x
          sta tb_bit2+7,y

          lda v4
          sbc v5
          sbc v6
          tay
;------------
;- plot 7/8 -
;------------
          lda tbadlo,y
          clc
          adc  tabxm,x
          stx tmpr4
          ldx tmpr3
          sta tb_adlo2+6,x
          lda tbadhi,y
          adc #0
          sta tb_adhi2+6,x
          ldx tmpr4
          lda tbadlo2,y
          adc tabxm2,x
          ldx tmpr3
          sta tb_adlo2+7,x
          lda tbadhi2,y
          adc #0
          sta tb_adhi2+7,x
;-
          lda tmpr3
          clc
          adc #8
          sta tmpr3
          dec dotcount
          bmi +
          jmp loop2a
+         jmp irq_exit
;=================================
;******************************
;**** THE END of main stub ****
;******************************


;-----------------------------
;- bellow a helps procedures -
;- to graph init, irq,       -
;- calc tables etc...        -
;-----------------------------


;==========================
;= simple init irq, init  =
;= timer, colors etc...   =
;==========================
initirq
          lda #$00
          sta $d015
          lda #<irq
          sta $fffe
          lda #<nmiex
          sta $fffa
          lda #>irq
          sta $ffff
          sta $fffb
          lda #$7f
          sta $dc0d
          lda $dc0d

          bit $d011
          bpl *-3

          lda #$c8
          sta $d016
          lda #value_d018
          sta $d018
          lda #value_dd00
          sta $dd00

          lda #$01
          sta $d01a
          lda #$0b
          sta $d011
          lda #$fa
          sta $d012
          rts
;=====================
;=  end init irq...  =
;=====================

;=======================================
;=   now make all needed tables :      =
;=   make tbbits for plotting,         =
;=   tab address of plots and          =
;=   prepare them to sign (-128/127)   =
;=======================================
make_tables

          lda #$00
          tax
          tay
          sec

          ;x=0 y=0 a=0 C=1
          ;sec ;C=1

-         ror
          bne *+3
          ror
          sta tbbit,x
          dey
          sta tbbit2,y
          inx
          bne -
;---
          ;x=0
-         txa
          and #$f8
          sta tabxm,x
          lda #0
          sta tbadlo,x
          lda #>trashcan
          sta tbadhi,x
          inx
          bne -
;---
-         lda #>trashcan
          sta tb_adhi1,x
          sta tb_adhi2,x
          lda #0
          sta tb_bit1,x
          sta tb_bit2,x
          sta tb_adlo1,x
          sta tb_adlo2,x
          inx
          bpl -
          tax
;---
          lda #>screen
          sta tmpr4
          lda #32 ;many pixel to the rigt
          sta tmpr3

          ;x=0 C=0


calc      lda tmpr3
          sta tmpr1
          sta tbadlo+28,x
          lda tmpr4
          sta tmpr2
          sta tbadhi+28,x
          inx
          ldy #$07
calc2     inc tmpr1
          bne *+4
          inc tmpr2
          lda tmpr1
          sta tbadlo+28,x
          lda tmpr2
          sta tbadhi+28,x
          inx
          dey
          bne calc2
          lda tmpr3
          ;clc ;C=0
          adc #$40
          sta tmpr3
          lda tmpr4
          adc #$01
          sta tmpr4

          cpx #200
          bcc calc

;--- hocus-pocus #1 for tables :)
;============
          lda #>tbadlo
          sta vect2+1
          sty vect2
          ldx #3
          stx tmpr3

-         lda (vect2),y
          pha
          tya
          eor #$80
          tay
          lda (vect2),y
          tax
          pla
          sta (vect2),y
          tya
          eor #$80
          tay
          txa
          sta (vect2),y
          iny
          bpl -

          ldy #0
          inc vect2+1
          dec tmpr3
          bne -

;----------
          ldx #0

; --- yep :) hocus-pocus #2 for tables...
          ;x=0
          ;y=0

-         dey
          lda tabxm,y
          sta tabxm2,x
          lda tbadlo,y
          sta tbadlo2,x
          lda tbadhi,y
          sta tbadhi2,x
          inx
          bne -
          rts
;-----------------------------
;- uff... maketables done :) -
;-----------------------------
setup_scr

     lda #$34
     sta $01
          lda #$10  ;fill hires bitmap color ram - plot = white, background = black
          ldx #$00

-         sta rcolor,x
          sta rcolor+$0100,x
          sta rcolor+$0200,x
          sta rcolor+$0300,x
          inx
          bne -
     inc $01
;-----------------------
;- simple clear screen -
;-----------------------
          lda #>screen
          sta fll+2
          txa ;x=0
          ldy #$1f
fll
          sta screen,x
          inx
          bne fll
          inc fll +2
          dey
          bne fll

-         sta screen+$1e40,x
          inx
          bne -
          rts
;-------------
;============================
;=== make a ball dots ... ===
;= and place  on the sphere =
;============================
;-----------------------
;- to calulation using -
;-   [ C F ] where : -
;-----------------------
;--------------
; C = sin(sy)/2
;--------------
;------------------------------
; F = (sin(sy-sx)-sin(sy+sx))/4
;------------------------------
;---
insert_dots

          lda #$48
          sta t_x
          ;lda #$48
          sta t_y

;---
          ldx #many_dots-1
-
          lda t_x
          sec
          sbc #$10
          sta t_x
          and #$3f
          sta hi_angle_x
          lda #0
          sta hi_angle_z
          txa
          and #3
          cmp #3
          bne +
          lda t_y
          sec
          sbc #16
          sta t_y

+         lda t_y
          eor #$7f
          clc
          adc #1
          sta hi_angle_y

          txa ;safe x value
          pha
          jsr calculate_matrix ;make C and F
          pla
          tax ;restore x


          lsr mat_F_hi ; div 2
          lda mat_F_lo
          ror
;---
          sta tb_fact1,x
          pha  ;hehe
          txa  ;fast make 3rd value without calculatons :-)
          eor #3
          tay
          pla
          sta tb_fact2,y
          lsr mat_C_hi ; div 2
          lda mat_C_lo
          ror
;---
          sta tb_fact3,x

          dex
          bpl -

          ldx #5
-         lda delty,x
          sta lo_delta_x,x
          txa
          sta lo_angle_x,x
          dex
          bpl -

;=======================
          lda #>tbscale
          sta pointer

          ldx #many_dots*3-1
          lda #$ff
-         sta replic_tab,x
          dex
          bpl -

          ;x=#$ff
          inx
findloop
          txa
          tay
          iny
          lda #0
          sta count_check
count_find

          lda replic_tab,y
          cmp #$ff
          bne nofind

          lda tb_fact1,x
          cmp tb_fact1,y
          bne nofind
;find here
          lda pointer
          sta outp+2
          sta outp2+2
          sta inp+2
          sta replic_tab,x
          sta replic_tab,y
          inc count_check

nofind    iny
          cpy #many_dots*3
          bcc count_find
          lda count_check
          beq +
          txa
          pha ;safe x
;------------------------------------
;- make one block table for a point -
;------------------------------------
;do_one_table

          lda tb_fact1,x

;--- ;in acc dot factor value

          asl  ; muls 4
          asl
          tay

          ;clc      ;after asl Carry = 0
          lda #0
          tax
          sta tmpr1
          sta tmpr2
;---
outp      sta tbscale,x
;---
          tya
          adc tmpr1
          sta tmpr1
          lda tmpr2
          adc #0
          sta tmpr2
          inx
          bpl outp
;-
          ;x=#$80
          ldy #$7f
inv       lda #0
          sec
inp       sbc tbscale,y
outp2     sta tbscale,x
          dey
          inx
          bne inv
;--------------------
          pla
          tax ;restore x
          inc pointer
+         inx
          cpx #many_dots*3-1
          bcc findloop

-
          lda replic_tab,x
          sta tb_fact1,x
          dex
          bpl -
          rts
;====================================
;=== the end of inserting dots   ====
;====================================
;---------------------------------------
;lo & hi delta rotation x y z (sx;sy;sz)
delty     !byte $00,$00,$00,$01,$ff,$ff
;---------------------------------------
;eof
;-

« Ostatnia zmiana: 20 Stycznia 2017, 18:28 wysłana przez wegi »
Gdy po wynalezieniu komputera kwantowego jedni pytali o sposób wytwarzania prądu, kisiel pytał jak wytwarzać świeczki...

NIECH NIE BĘDZIE NICZEGO !!!

CZY RAF PIŁ Z JERICHA KUBECZKA ???

Offline Kisiel

  • Level 7
  • *******
  • Wiadomości: 11447
  • Number 7 in all users competition...
    • http://wiki.projekt64.filety.pl/doku.php
Re: Wektory na C64
« Odpowiedź #3 dnia: 20 Stycznia 2017, 20:26 »
Ja tam z przeszłości pamiętam że takie wątki kończą się zrób to za mnie.
idz wyprostowany wśród tych co idą na kolanach

...w przypadku checi zakupu UK1541,GA,MA,T8500,T7501 prosze o kontakt na Facebooku, haslo: UK1541....

Exosoft

  • Gość
Re: Wektory na C64
« Odpowiedź #4 dnia: 21 Stycznia 2017, 00:23 »
Dzięki Wegi i już cofnąłem się wstecz do postów w "programowanie" to sporo czytałem na temat dotsów i innych podobnych ciekawych rzeczy na wektorach, które zapewne się przydadzą przy robieniu np. dema ! ...Mialem też na myśli coś, co np. obliczy kształt obracanych liter logo po osi X,Y,Z na wektorach 3D . Znalazłem coś "3D construction kit", więc może ktoś już coś robił podobnego na tym programie ?
Zapewne można to też jakoś wyliczyć w innym języku programowania np. MINGW, GCC itp.

http://csdb.dk/release/?id=31655
« Ostatnia zmiana: 21 Stycznia 2017, 00:29 wysłana przez Exosoft »

Exosoft

  • Gość
Re: Wektory na C64
« Odpowiedź #5 dnia: 21 Stycznia 2017, 01:23 »
Jako przykład autor tego intra "Hain/ESM", z tego co widać już jest nieaktywny na C64 ale może Mr Wegi jako, że dołączyłeś do tematu i jesteś memberem ESM to może mógłbyś się jakoś dowiedzieć na czym Hain wyliczył logo ESM w tym intrze ?

http://intros.c64.org/inc_download.php?iid=2691

Offline Zbych

  • Level 3
  • ***
  • Wiadomości: 210
Re: Wektory na C64
« Odpowiedź #6 dnia: 21 Stycznia 2017, 12:46 »
Chyba źle zrozumiałeś koncepcję grafiki wektorowej, albo chodzi ci o zrobienie "prekalkulowanej" animacji, raczej tego drugiego rozwiązania nie stosuje się dla obiektów składających się z kilku do kilkunastu punktów, chyba że chodzi o naprawdę bardzo prostą animację. Przeczytałeś artykuł z linku który zapodał Wegi, zwłaszcza ten z codebase64 o grafice 3D? Jeśli nie to polecam.

Offline wegi

  • Level 7
  • *******
  • Wiadomości: 2588
Re: Wektory na C64
« Odpowiedź #7 dnia: 22 Stycznia 2017, 00:08 »
Dla niedowidzących ściągających przykład z formatwar.net - w pierwszym moim poście dołączyłem zipa z ASM i PRG.

Jako ciekawostkę dodaję program, który sobie pisałem, żeby popatrzeć jak przez matryce liczą się wierzchołki. Prawdopodobnie zupełnie nieprzydatny.

Z twoich life is code nie widać za bardzo chęci kodowania. W zasadzie nie rozumiem co chcesz zrobić.


Gdy po wynalezieniu komputera kwantowego jedni pytali o sposób wytwarzania prądu, kisiel pytał jak wytwarzać świeczki...

NIECH NIE BĘDZIE NICZEGO !!!

CZY RAF PIŁ Z JERICHA KUBECZKA ???

Offline Kisiel

  • Level 7
  • *******
  • Wiadomości: 11447
  • Number 7 in all users competition...
    • http://wiki.projekt64.filety.pl/doku.php
Re: Wektory na C64
« Odpowiedź #8 dnia: 22 Stycznia 2017, 00:54 »
ja sobie myślę tak, że jak ludzie mogą teraz iphona można kupic to komputer sam wektorówkę zrobi tylko trzeba znaleść do tego program... konsumpcja panie.
Dałeś mi już tyle tematów do przemyśleń że chyba coś zakoduje na cm0 :)
idz wyprostowany wśród tych co idą na kolanach

...w przypadku checi zakupu UK1541,GA,MA,T8500,T7501 prosze o kontakt na Facebooku, haslo: UK1541....

Exosoft

  • Gość
Re: Wektory na C64
« Odpowiedź #9 dnia: 22 Stycznia 2017, 05:13 »
Chyba źle zrozumiałeś koncepcję grafiki wektorowej, albo chodzi ci o zrobienie "prekalkulowanej" animacji, raczej tego drugiego rozwiązania nie stosuje się dla obiektów składających się z kilku do kilkunastu punktów, chyba że chodzi o naprawdę bardzo prostą animację. Przeczytałeś artykuł z linku który zapodał Wegi, zwłaszcza ten z codebase64 o grafice 3D? Jeśli nie to polecam.

Ja powiem szczerze, że ogólnie to nie tylko to, że nie zrozumiałem koncepcji ale nie bardzo mam o tym pojęcie. Nie będę też udawał, że coś wiem, skoro wiem nie wiele bo jak wiadomo to do niczego dobrego nie prowadzi. Dzięki jeszcze raz za pomoc ! dzisiaj jest niedziela to sobie odpuszczę ale byłem chwilę na "Format War" w dziale "Coding corner" to wystarczy, że zobaczyłem tak znane ksywy jak Wegi, TMR, Oswald to już wiem, że będzie ciekawie i zapewne pochłonie mnie lektura :) Zapewne wszystkie materiały i pomoce jakie tutaj zostawiliście lub jeszcze zostawicie to przydadzą się do stworzenia dema. Wracając do działu "programowanie" na tym forum i np. topic "po 12-tu latach" to można by powiedzieć, że również i ja jestem tego pokroju. Zaczynałem kiedyś w latach 90-tych na scenie C64, mając wtedy 14-15 lat to zawsze kiedy przeglądałem produkcje scenowe znanych polskich grup, a szczególnie koderów to w mojej głowie zapalała się lampka z pytaniem "jak oni to zrobili?". Pamiętam wtedy, że umiałem np. wyjść z ramek bocznych, zrobić DYCP scroll'a i kilka innych rzeczy, które uczyłem się z jakichś tam magazynów papierowych np. C&A lub dyskowych z działem "kodowanie" . Poznałem wtedy też zaledwie kilka osób, a były to jeszcze czasy swapu to pisałem nawet kod edytora tekstu do jakiegoś magazynu grupy Undying, o który poprosił mnie wtedy Human/Undying lecz niestety chyba z przyczyn braku czasu to nigdy tego nie ukończyłem. Znałem też wtedy takich ludzi jak TLH (The Last Hacker) czy ZAN z Dzierżoniowa to raz na miesiąc lub dwa odwiedzałem ZAN'a aby zgrać na dyskietki jakieś nowości (stuff) i niekiedy przebywałem u TLH na chacie to nawet pamiętam do dziś, kiedy TLH składał jeszcze przy mnie np. pierwszy numer magazynu "Brukowiec". Pisałem kod wtedy z dużym zapałem lecz też szedłem z postępem to jakoś w roku 1998 kupiłem Amige 500 i sprzedałem mojego real C64 ze wszystkimi dyskietkami, na których było sporo moich kodów źródłowych, które zapewne kiedy sprzedałem wraz z C64 to zostały sformatowane pod gry :/ Później była już w moim domu Amiga 1200 i dalej PC. Nigdy nie sądziłem, że do tego wrócę tzn. do kodowania na C64, więc dzisiaj cholernie żałuję, że sprzedałem moją 8-mio bitową maszynę bo pewnie jeszcze by posłużył, chociażby do testowania tego, co zrobiłem pod emulator Vice, a za ileś tam lat stał by już może ten mój real C64 na półce oprawiony w ramkę, kto wie ? :) ...Jak w tym artykule "po 12-tu latach", tak samo i ja ponownie miałem styczność ze sceną C64 po tylu latach to można by powiedzieć, że prawie wszystko zapomniałem. Poznałem kilka osób przez internet z zagranicy, którzy od nowa naprowadzili mnie odnośnie podstaw programowania na C64, cross kompilatorów itp. Ja byłem jakiś czas pod inną ksywą lecz nie chce pisać jaką bo stawiałem na nowo swoje początki, więc aby nie zrobić sobie "siary", że tak powiem. Minęło ze 2-3 lata moich zmagań z początkami "na nowo" i dzisiaj mogę szczerze powiedzieć, że trochę do tego wróciłem i mam już tam jakieś pojęcie, więc chciałbym zrobić coś, co kiedyś było dla mnie niemożliwe tzn. demo, dogrywanie z dyskietki przez jakiś IRQ loader. Na pewno jeszcze poczytam sporo na tym forum, na "Format War", "Codebase" i będę chciał powoli ruszyć z takim demem, więc super, że jest to forum C64power i jacyś aktywni ludzie, a nawet znani koderzy ze sceny komputerowej, którzy mogą coś doradzić. Na pewno też może nie to, że będę się "chwalił" ale zwyczajnie pisał na tym forum o postępach kodowania dema. Dzięki jeszcze raz dla Wegi za materiały, linki, które na pewno nie wstawiłeś tu na darmo bo na razie to zbieram co się da, analizuje i niedługo będę próbował zacząć to składać w jedną całość, co mam nadzieje, że zaowocuje właśnie stworzeniem i wydaniem jakiegoś dema ale przede wszystkim na jako takim poziomie :)

Offline wegi

  • Level 7
  • *******
  • Wiadomości: 2588
Re: Wektory na C64
« Odpowiedź #10 dnia: 22 Stycznia 2017, 14:16 »
Kisiel cm0 to już cienka blacha jak 6502 teraz ja się zabawiam STM32F407VG i Spartanem 6 który też już jest ponoć archeo ! :)
Gdy po wynalezieniu komputera kwantowego jedni pytali o sposób wytwarzania prądu, kisiel pytał jak wytwarzać świeczki...

NIECH NIE BĘDZIE NICZEGO !!!

CZY RAF PIŁ Z JERICHA KUBECZKA ???

Offline Kisiel

  • Level 7
  • *******
  • Wiadomości: 11447
  • Number 7 in all users competition...
    • http://wiki.projekt64.filety.pl/doku.php
Re: Wektory na C64
« Odpowiedź #11 dnia: 22 Stycznia 2017, 14:56 »
Nie robi to na mnie wrażenia, muchę można czołgiem zabić. Ja się staram dobierać sprzęt do celu a nie odwrotnie, nie udało mi sie zrobić sensownej emulacji na msp430 to przesiadłem sie na cortexa z 40MPIS. Czym bardziej skomplikowany procek tym gorzej, tracisz kontrolę nadtym co się dzieje. Czego np. jest przykładem uDrive, i chuj że nie dziala ale autor pisze"wziąłem analizator (po 3latach) i zacząłem sprawdzać przebiegi.. ale wszystko działa tip top itd"

Wracając do tematu, był już tutaj taki jeden co zrobił sobie kronikę z tworzenia gry MelonLevel, uznaje go za level expert w temacie kronik/blogów. Nawet ufundowałem mu nagrodę jak skończy grę i nic. Masz więc szanse też :)

PS. Wegi byś lepiej demo zakodował na SP8, chłopaki się spuszczają a feedback chujowy.
idz wyprostowany wśród tych co idą na kolanach

...w przypadku checi zakupu UK1541,GA,MA,T8500,T7501 prosze o kontakt na Facebooku, haslo: UK1541....

Offline wegi

  • Level 7
  • *******
  • Wiadomości: 2588
Re: Wektory na C64
« Odpowiedź #12 dnia: 22 Stycznia 2017, 17:06 »
[...]
 Czym bardziej skomplikowany procek tym gorzej, tracisz kontrolę nadtym co się dzieje. Czego np. jest przykładem uDrive, i chuj że nie dziala ale autor pisze"wziąłem analizator (po 3latach) i zacząłem sprawdzać przebiegi.. ale wszystko działa tip top itd"
[...]

LOL najwięcej tracisz kontrolę zdając się na "niezawodny C/C++" który śmieci, wpieprza swoje nieoptymalne pętle ale za to jest PORTABLE  >:(

W sumie jak patrzę na wyczyny z tych devboardów czy w FPGA czy STM32 to oczywiście można zatrudnić Spartana6 50MHZ żeby mrugać diodą, zamiast kondensatora, rezystora i 7400 :) W dupie strzyka zanim ujrzysz coś sensownego.
S6 generuje sygnał VGA wielkie sranie, a producent podłączył do RGB po 1 rezystorze co daje możliwość max 8 kolorów LOL Już nie mówię żeby DAC, ale chociaż po 3-4 rezystory na sygnał dałyby od 512 kolorów wzwyż - w dupę wolnych portów i żal na kilka rezystorów ?

Albo patrzę wielki wyczyn VGA sygnał z STM32, nieważnie jaka rozdzielczość, jak poziomy "pixel" zajmuje cały ekran w poprzek LOL

A ty w czym oprogramowałeś cortexa do UK1541 ? W C czy w ASM ?

Edit:

Na SP nic nie zrobię, bo ostatnio jak zrobiłem to nie dostałem nagrody za brak obecności ! :)
« Ostatnia zmiana: 22 Stycznia 2017, 17:10 wysłana przez wegi »
Gdy po wynalezieniu komputera kwantowego jedni pytali o sposób wytwarzania prądu, kisiel pytał jak wytwarzać świeczki...

NIECH NIE BĘDZIE NICZEGO !!!

CZY RAF PIŁ Z JERICHA KUBECZKA ???

Offline Kisiel

  • Level 7
  • *******
  • Wiadomości: 11447
  • Number 7 in all users competition...
    • http://wiki.projekt64.filety.pl/doku.php
Re: Wektory na C64
« Odpowiedź #13 dnia: 22 Stycznia 2017, 20:37 »
Ciężko jest napisać w C coś cycle exact.... ale zawsze się można z koniem kopać.
Nie planujesz być na jedynym C= w PL ?
idz wyprostowany wśród tych co idą na kolanach

...w przypadku checi zakupu UK1541,GA,MA,T8500,T7501 prosze o kontakt na Facebooku, haslo: UK1541....

Exosoft

  • Gość
Re: Wektory na C64
« Odpowiedź #14 dnia: 23 Stycznia 2017, 11:02 »
Mam jeszcze takie pytanie do adminów tego forum, zanim utworze nowy topic. Myślę, że będzie to coś ciekawego i być może nowego na tego typu forach. Chciałbym utworzyć topic "Robimy demo od podstaw", gdzie zacznę od organizacji wszystkiego, co niezbędne na początku oraz dalszy ciąg to pomysły ludzi, ewentualnie grafika, muzyka i wreszcie kod lub cały part dema omawiany w wątku. Wiele, wiele innych rzeczy, a w kilku słowach to robimy demo aby być może kiedyś wrócić do wątku jeśli coś się zapomni, jak w moim przypadku. Przede wszystkim może to ożywi polską scene i ktoś zaczerpnie z tego inspiracje do stworzenia kolejnego dema. Nie wiem czy to dobry pomysł lecz ja się deklaruję, że najwięcej będę robił, a pomoc, pomysły będą oczywiście w creditsach, o ile ktoś wyrazi na to zgodę. Myślę też, że może być ciekawie, w połączeniu z nauką i dobrą zabawą :)