atarionline.pl Gunfighter - obsługa 1 portu Joya - Forum Atarum

    Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

    • :
    • :

    Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

      • 1: CommentAuthorstreak
      • CommentTime12 Mar 2011 19:03
       
      Witam

      Wiecie moze czy istnieje wersja GUNFIGHTER'a w której mozna sterować ludzikiem za pomocą joy'a w pierwszym porcie? Emulator Atari800 [na dingoo / gp2x / itp.] nie ma mozliwosci swapa joystików, wiec grac nie mozna :/
      • 2: CommentAuthorstreak
      • CommentTime12 Mar 2011 19:03
       
      BTW. chodzi o TEGO Gunfighter'a:

      • 3: CommentAuthorrekk
      • CommentTime13 Mar 2011 13:03
       
      Możesz użyć Atari800Win, tam przełączyłem konfigurację joya (Input - Joystick - Joystick option) na port 2.
      • 4: CommentAuthorstreak
      • CommentTime13 Mar 2011 15:03
       
      Niestety.. emuluje gry atari na Dingoo / GP2X wiec nie mam mozliwosci uzycia A800Win
      • 5:
         
        CommentAuthorKaz
      • CommentTime13 Mar 2011 17:03
       
      Moze ktos Ci spaczuje gre zamieniajac w grze komorki odczytujace joya?
      • 6: CommentAuthorzoltan
      • CommentTime14 Mar 2011 13:03
       
      A z innej beczki: właściwie dlaczego akurat ta jedna jedyna gra obsługuje tylko drugi port joysticka? Doczytał się ktoś? :)
      • 7: CommentAuthorbanshee997
      • CommentTime14 Mar 2011 14:03 zmieniony
       
      Na pewno nie jedyna, np. w Speed King trzeba było joya zmienić.

      EDIT: ściągnąłem przed chwilą i jednak obsługa w porcie 1 ... hmm musiałem pomylić tytuły. Stay tuned ;)
      • 8: CommentAuthormono
      • CommentTime14 Mar 2011 17:03
       
      @streak: Podeślij pliczek, który uruchamiasz.
      • 9: CommentAuthorstreak
      • CommentTime8 Apr 2011 10:04
       
      ->link<-

      lub

      ->link<-

      to z Kaza archiwum. W sumie wszystkie wersje [jakie sprawdzalem] obsluguja 2 port.

      Dzieki z góry Mono.
      StreaK
      • 10: CommentAuthornosty
      • CommentTime8 Apr 2011 19:04 zmieniony
       
      Mowisz i masz.

      Dla chcacych pogrzebac: procedura wygladala tak:

      LDA $D300	;PortA
      LSR @
      LSR @
      LSR @
      LSR @
      EOR #$FF
      AND $0F
      ORA $B0
      STA $B0
      LDA $D011 ;Trig1
      EOR #$FF
      AND $01
      ASL @
      ASL @
      ASL @
      ASL @
      ORA $B0
      RTS


      zmienilem na:

      LDA $D300	;PortA
      AND $0F
      NOP
      NOP
      NOP
      EOR #$FF
      AND $0F
      ORA $B0
      STA $B0
      LDA $D010 ;Trig0
      EOR #$FF
      AND $01
      ASL @
      ASL @
      ASL @
      ASL @
      ORA $B0
      RTS
      • 11:
         
        CommentAuthorjhusak
      • CommentTime8 Apr 2011 21:04 zmieniony
       
      Wystarczą 4 nopy, ten and $f jest zbędny.
    1.  
      A nie, jednak miałem rację jeżeli chodzi o Speed Kinga:

      Pliki w tym katalogu :
      ->link<-
      obsługiwane są odpowiednio przez różne porty joya:
      Speed King (v1).atr (joy 2)
      Speed King (v1).xex (joy 1)
      Speed King (v2).atr (joy 2)
      Speed King (v2).xex (joy 1)
      Speed King.dcm (joy 2)
      • 13: CommentAuthornosty
      • CommentTime9 Apr 2011 00:04
       
      >Wystarczą 4 nopy, ten and $f jest zbędny.

      Aha, ale dodalem AND specjalnie, zeby zachowac jak najwieksza zgodnosc z oryginalem (po 4 LSR'ach na starszych 4 bitach sa 0), bo nie bylem pewny czy program czegos nie robi jeszcze z $B0 w innym miejscu gry.
      Generalnie to troche dziwny ten fragment kodu jest.
      • 14: CommentAuthorstreak
      • CommentTime9 Apr 2011 09:04
       
      Dziekuje bardzo, nosty. Zaraz przetestuje :)
      • 15: CommentAuthormono
      • CommentTime9 Apr 2011 10:04 zmieniony
       
      @nosty: Brawo! Widać postęp w nauce ;)
      Dla pełnego obrazu sytuacji - oryginalny kod wygląda tak:
      89EB: A9 00     LDA #$00
      89ED: 85 B0 STA $B0
      89EF: 20 12 35 JSR $3512
      89F2: B0 32 BCS $8A26
      89F4: E0 7A CPX #$7A
      89F6: D0 06 BNE $89FE
      89F8: A5 B0 LDA $B0
      89FA: 09 04 ORA #$04
      89FC: 85 B0 STA $B0
      89FE: E0 78 CPX #$78
      8A00: D0 06 BNE $8A08
      8A02: A5 B0 LDA $B0
      8A04: 09 08 ORA #$08
      8A06: 85 B0 STA $B0
      8A08: E0 2B CPX #$2B
      8A0A: D0 06 BNE $8A12
      8A0C: A5 B0 LDA $B0
      8A0E: 09 01 ORA #$01
      8A10: 85 B0 STA $B0
      8A12: E0 2F CPX #$2F
      8A14: D0 06 BNE $8A1C
      8A16: A5 B0 LDA $B0
      8A18: 09 02 ORA #$02
      8A1A: 85 B0 STA $B0
      8A1C: E0 20 CPX #$20
      8A1E: D0 06 BNE $8A26
      8A20: A5 B0 LDA $B0
      8A22: 09 10 ORA #$10
      8A24: 85 B0 STA $B0
      8A26: AD 00 D3 LDA $D300 ;PORTA
      8A29: 4A LSR
      8A2A: 4A LSR
      8A2B: 4A LSR
      8A2C: 4A LSR
      8A2D: 49 FF EOR #$FF
      8A2F: 29 0F AND #$0F
      8A31: 05 B0 ORA $B0
      8A33: 85 B0 STA $B0
      8A35: AD 11 D0 LDA $D011 ;TRIG1
      8A38: 49 FF EOR #$FF
      8A3A: 29 01 AND #$01
      8A3C: 0A ASL
      8A3D: 0A ASL
      8A3E: 0A ASL
      8A3F: 0A ASL
      8A40: 05 B0 ORA $B0
      8A42: 60 RTS

      Pod $3512 znajduje się procedura dekodująca klawiaturę (sprawdza w SKSTAT czy wciśnięto klawisz i jeśli tak, czyta KBCODE; potem przerabia kod na ATASCII). Jeśli flaga C jest ustawiona tzn, że nie wciśnięto nic i sprawdzamy joystick. Wpp w rejestrze X zostaje kod ATASCII znaku. Widać, że na początku $B0 jest zerowane, więc po prostu jest tam akumulowana informacja o reakcjach użytkownika klawiaturą (zx/+ i spacja jeśli się nie mylę) i joystickiem.
      Tak, jak Kuba pisał - wystarczą 4*nop, bo and #$f jest robione za eorem. No i $D011 należy zmienić na $D010 (co zresztą zrobiłeś).

      Edit: Finalnie z całej procedury wychodzi się mając w rejestrze A informacje o sterowaniu w formacie takim, jak z CIA w C64: b4=fire, b3..b0=kierunki.
      • 16:
         
        CommentAuthorKaz
      • CommentTime23 Apr 2011 16:04
       
      Po przerobieniu programow prosze o podeslanie tych wersji do mnie, wrzuce do katalogu.