Autore Topic: Elav  (Letto 12332 volte)

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Elav
« Risposta #45 il: 17 Luglio 2006, 21:56:12 »
 Dopo la distruzione di un palazzo , l'unico modo per far muovere ancora il gorilla e' quello di muoversi in giu' o nella direzione opposta in cui e' girato.
Codice: [Seleziona]
makeDestroy:
      lda delay
      sta temp6

      lda  #0
      sta  anim                ; suppose no anim
      ldy  tBuild              ; read total buildings
testB:
      lda  B_DEC-1,y
      bne  goNextB
                                ; the building have to fall down
      lda  B_VIS-1,y
      bmi  activeB

goNextB:
      dey
      bpl  testB

;;;;;;;;;;;; iAN CooG/HokutoForce
      lda anim
      beq nostate

      jsr moveDn
nostate
;;;;;;;;;;;; iAN CooG/HokutoForce
      rts
Exomizzato aggiunge 4 bytes, 3854 in tutto, ma rende piu' gestibile la cosa...
Tienilo remmato nel sorgente, da attivare solo se avanza veramente spazio =)
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

ice00

  • Utente
  • **
  • Post: 469
    • http://digilander.iol.it/ice00
Elav
« Risposta #46 il: 17 Luglio 2006, 23:00:58 »
 La buona notizia è che ora è implementato tutto tranne la pallottola casuale, il che significa: punteggi, perdita vita col tempo, game over e winning screen.
Quella meno buona è che rimangono solamente 182 bytes: un pò pochetto per quello che manca, ma bisognerà cercare di spremere ogni singolo bytes.
Domani purtroppo ho 5h di blackout energia elettrica e poi per una settimana sarò via, vediamo quello che rieso a fare (spero almeno di inserire il codice di Ian, infatti ho notato pure io l'inconveniente gorilla e la soluzione di Ian consuma pochi bytes, quindi sarebbe auspicabile inserirla)

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Elav
« Risposta #47 il: 18 Luglio 2006, 00:11:38 »
 Al limite si puo' sempre far ridurre la musica, o usarne una meno impegnativa.

Divagazione: dopo aver applicato la patch all'ultima versione, ci ho giocato...
http://iancoog.altervista.org/hid/elav-I_wins!1.rar
e finito con una vita, quasi sempre risicando all'ultimo secondo! E dire che fino a stasera non avevo ancora capito come giocare.  :lol:
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

ice00

  • Utente
  • **
  • Post: 469
    • http://digilander.iol.it/ice00
Elav
« Risposta #48 il: 18 Luglio 2006, 11:55:35 »
 La corrente sembra non sia stato tolta, speriamo che non sparisca di botto!!
In teoria io ero preoccupato che ce la facevo perdendo solo 1 vita all'ultimo livello!
Implementando lo sparo, dovrebbe risultare una cosa difficile da vincere, il che lo renderebbe giocabile!!

ice00

  • Utente
  • **
  • Post: 469
    • http://digilander.iol.it/ice00
Elav
« Risposta #49 il: 30 Luglio 2006, 12:48:03 »
 Diciamo che le cose sembrano andare bene, perchè adesso, con ancora 100 bytes a disposizione, si comincia a vedere l'effetto dello sparo.
Si illumina lo schermo di giallo, poi la pallottola parte random in direzione sx o dx.
Lo sparo avviene solo quando il gorilla è appeso ad un palazzo, dato che la posizione y della pallottola coincide con quella del gorilla.
Adesso lo sparo riparte subito dopo che 1 è finito, ma bisognerà inserire un delay random.
Appena inserita la gestione collisione, che dovrebbe occupare poco in termini di spazio, il gioco potrebbe cosiderarsi finito.
Comunque sto aspettando uno step ulteriore da nata sulla musica, casomai se rimangono bytes, potrei ipotizzare di avere più pallottole sparate in contemporanea, se sarà il caso.

 

ice00

  • Utente
  • **
  • Post: 469
    • http://digilander.iol.it/ice00
Elav
« Risposta #50 il: 30 Luglio 2006, 15:48:51 »
 Adesso c'è la collisione. Provate a giocare così e vedete a che livvello arrivate.
Manca delay sparo casuale che dovrebbe rendere il gioco più abbordabile e interessante.

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Elav
« Risposta #51 il: 30 Luglio 2006, 16:45:18 »
 Stavo prendendo il file dal link su digilander, quindi riposto il link giusto per non far incorrere altri nello stesso sbaglio :)
http://utenti.lycos.it/ice00/test/elav_.zip
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Elav
« Risposta #52 il: 30 Luglio 2006, 17:09:22 »
 
Citazione da: "ice00"
Adesso c'è la collisione. Provate a giocare così e vedete a che livvello arrivate.
Manca delay sparo casuale che dovrebbe rendere il gioco più abbordabile e interessante.
E' TROPPO difficile =)
Il delay dello sparo e' d'obbligo, e suggerirei anche di controllare la pos del gorilla, se troppo a destra non dovrebbe sparare da destra, cosi' come a sinistra. Si perdono vite  anche 4-5 alla volta senza possibilita' di difendersi :P
Sono riuscito a finire solo il 2o livello dopodiche' mi hanno colpito proprio mentre aspettavo che finisse l'animazione del palazzo che crolla *groan*
Ad ogni modo e' pressoche' finito, quasi rilasciabile ;)
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

ice00

  • Utente
  • **
  • Post: 469
    • http://digilander.iol.it/ice00
Elav
« Risposta #53 il: 30 Luglio 2006, 20:50:46 »
 4016 bytes.
Correto un bug: se si moriva mentre si cadeva, il moto continuava alla ripartenza.
Messo che probabilisticamente solo 5 volte su 255 il proiettile parte in un frame.
Inoltre se si è più a sinistra di 50 pixel, si spara a destra. A destra non c'è nessun controllo, anche perchè qui il proiettile impega più tempo ad apparire e uno potrebbe avere il tempo di allontanarsi.
Sotto con le prove...

p.s.
forse conviene pulire lo schermo quando si mette game over perchè colpiti e si è senza vite?

Alberto

  • Utente
  • **
  • Post: 589
  • Gioco Preferito: Grand Prix Circuit
Elav
« Risposta #54 il: 30 Luglio 2006, 20:57:19 »
 
Citazione
Correto un bug: se si moriva mentre si cadeva, il moto continuava alla ripartenza.
Era proprio il bug che mi accingevo or ora a segnalarti.  :lol:
Inoltre mi è capitato di finire la partita,premere per rigiocare e ritrovarmi subito dopo con un altro GAME-OVER. :huh:

Il mio top da mediocre giocatore:2o livello con un palazzo abbattuto,ma ho giocato poche partite :)

Complimenti davvero:continua(te) così

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Elav
« Risposta #55 il: 30 Luglio 2006, 21:12:11 »
 Dopo che e' apparso un proiettile, se si prova ad uscire dal bordo a sx si muore continuamente. C'e' forse uno sprite proiettile sempre alla coordinata x=0, nascosto dal bordo ma attivo?
Poi, il proiettile riparte subito appena si viene colpiti. Un po' di tregua, cribbio :D
Citazione
forse conviene pulire lo schermo quando si mette game over perchè colpiti e si è senza vite?
Di sicuro c'e' un problema. Ho finito al 3o livello, e anziche' ricominciare dal primo, SEMBRA ripartire dallo stesso. Forse si, e' meglio ripulire lo schermo, o al game over o alla ripartenza, fai tu.
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

ice00

  • Utente
  • **
  • Post: 469
    • http://digilander.iol.it/ice00
Elav
« Risposta #56 il: 30 Luglio 2006, 21:33:26 »
 
Citazione
C'e' forse uno sprite proiettile sempre alla coordinata x=0, nascosto dal bordo ma attivo?
si il proiettile è sempre alla posizione 0, forse basta che lo riposizioni in alto per evitare morte improvvisa

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Elav
« Risposta #57 il: 30 Luglio 2006, 22:51:56 »
 [pedantic mode on]
Codice: [Seleziona]
=================================
moveUp:
manca ancora il ; prima della riga di ===
:lol:
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Elav
« Risposta #58 il: 30 Luglio 2006, 23:30:50 »
 
Citazione da: "ice00"
si il proiettile è sempre alla posizione 0, forse basta che lo riposizioni in alto per evitare morte improvvisa
fixato al volo (EDIT: e rivisto dopo alcuni controlli)
Codice: [Seleziona]
insertEnemy:
      lda  xActSpeed+4          ; exit if fire is already on
      bne  exitIE

      lda  yAct+2              ; skip fire if kong is not climbed
      cmp  #POS_STY2
      beq  exitIE2

[..omissis..]

      lda  #ACT_FIRE
      sta  actType+4
      rts
exitIE2:
      lda #$ff
      sta yAct+4
exitIE:
      rts
Ho dovuto invertire i primi 2 controlli perche' altrimenti il proiettile "sparisce" appena si scende dal palazzo. in effetti cio' potrebbe tornare utile per evitare di morire durante l'animazione del palazzo che crolla... *wink* *wink* :D

Per quanto riguarda questa parte:
Codice: [Seleziona]
[..omissis..]
turn:
    ;ldy  #$fc
      ldy  #$00  ; default: don't shoot!
skipTurn:

La ldy #$00 e' necessaria se vuoi che non spari quando si e' tutto a dx e sx, ma sono POCO sicuro se era quello che intendevi fare. Da quel che ho capito dovrebbe stare a 0 per non sparare, 4 per sparare da SX e $fc per sparare da DX. Ora credo che vada riscritta la parte per gestirla meglio, magari con una tabella, tipo una cosa cosi':
Codice: [Seleziona]
     jsr  random
      and  #$01
      tay
      lda  xacttbl,y
      sta  xActSpeed+4

xacttbl BYTE $04,$FC
e poi controllando se si e' troppo a sx mettere $fc fisso, se si e' a dx mettere 4 fisso... dici che si complica?

Per quanto riguarda l'eliminazione del proiettile durante il crollo...
Codice: [Seleziona]
;;;;;;;;;;;; iAN CooG/HokutoForce
      lda anim
      beq nostate

      jsr exitIE2
      jsr moveDn
nostate
;;;;;;;;;;;; iAN CooG/HokutoForce
che ne dici, l'accendiamo?
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Elav
« Risposta #59 il: 31 Luglio 2006, 11:23:20 »
 Ecco la mia proposta di modifica
Codice: [Seleziona]
insertEnemy:

      lda  xActSpeed+4          ; exit if fire is already on
      bne  exitIE

      lda  yAct+2              ; skip fire if kong is not climbed
      cmp  #POS_STY2
      beq  exitIE2


      jsr  random
      cmp  #$40  ; gimme a f*king break! =)
      bcc  exitIE
      bmi  exitIE

      and  #$01                ; give positive or negative velocity at random
      tay

      lda  xActLo+2            ; don't fire at sx if too near at sx
      cmp  #50
      bcs  dontforcedx
      ldy  #1
dontforcedx
      lda  xActHi+2
      and  #$01
      beq  dontforcesx

      ldy  #0
dontforcesx
      lda  xacttbl,y
      sta  xActSpeed+4
    ;lda  #7                  ; give a "fire" at screen
    ;sta  53280

      lda  #0
      sta  xActLo+4
      sta  xActHi+4

      lda  yAct+2              ; use same y location of kong
      sta  yAct+4

      lda  #ACT_FIRE
      sta  actType+4
      rts
exitIE2:
      lda #$ff
      sta yAct+4
exitIE:
      rts

xacttbl byte $04,$fc

e il diff con tutte le mie modifiche all'ultimo sorgente

Codice: [Seleziona]
--- elav.s Mon Jul 31 11:07:28 2006
+++ C:\Q\elav\x\elav12_mod.s Mon Jul 31 11:07:22 2006
@@ -223 +223 @@
-    ;stx  53280
+      stx  53280
@@ -428,3 +426,0 @@
-      lda  yAct+2              ; skip fire if kong is not climbed
-      cmp  #POS_STY2
-      beq  exitIE
@@ -434,0 +431,5 @@
+      lda  yAct+2              ; skip fire if kong is not climbed
+      cmp  #POS_STY2
+      beq  exitIE2
+
+
@@ -436,9 +437,3 @@
-      and  #$01
-      bne  turn                ; give positive or negative velocity at random
-      ldy  #4
-      bne  skipTurn
-turn:
-      ldy  #$fc
-skipTurn:
-      cmp  #$05
-      bcs  exitIE
+      cmp  #$40  ; gimme a f*king break! =)
+      bcc  exitIE
+      bmi  exitIE
@@ -445,0 +441,2 @@
+      and  #$01                ; give positive or negative velocity at random
+      tay
@@ -449,2 +446,3 @@
-      bcs  skipInv
-
+      bcs  dontforcedx
+      ldy  #1
+dontforcedx
@@ -453 +451 @@
-      bne  skipInv
+      beq  dontforcesx
@@ -455,6 +453,6 @@
-      ldy  #$fc
-skipInv:
-      sty  xActSpeed+4
-
-      lda  #7                  ; give a "fire" at screen
-      sta  53280
+      ldy  #0
+dontforcesx
+      lda  xacttbl,y
+      sta  xActSpeed+4
+    ;lda  #7                  ; give a "fire" at screen
+    ;sta  53280
@@ -470,0 +469,4 @@
+      rts
+exitIE2:
+      lda #$ff
+      sta yAct+4
@@ -473,0 +476 @@
+xacttbl byte $04,$fc
@@ -782 +785 @@
-=================================
+;=================================
@@ -1429 +1432 @@
-      stx  53280                ; use black color
+    ;stx  53280                ; use black color
@@ -2012,0 +2016 @@
+      jsr exitIE2

ho tolto le modifiche a $d020 di debug. Suggerirei inc/dec sul colore dello sprite quando viene colpito, renderebbe di piu'.
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -