Développer du homebrew en langage basic aujourd'hui... c'est possible

Page 1 sur 3 1, 2, 3  Suivant

Voir le sujet précédent Voir le sujet suivant Aller en bas

Développer du homebrew en langage basic aujourd'hui... c'est possible

Message par drfloyd le Dim 23 Fév 2014 - 21:18

Si dans les années 80 et 90 développer un jeu en basic était un loisir purement personnel sans grandes possibilités de faire quelque chose de correct...

Aujourd'hui il y a des outils incroyables qui permettent d'envisager de programmer en basic des jeux de bonne qualité.



Pour PC

Il y en a beaucoup, voici les plus célèbres à mon sens :

QB64 qui permet de faire de belles choses ! Un basic Microsoft hyper standard, une évolution du Quick Basic qui etait livré avec MSDOS. Seul l'editeur est un peu austère, c'est le meme que dans les années 80 ! Entierement gratuit.

BLITZ MAX / BLITZ 3D surement le plus accessible et simple l'utilisation ! Il est passé gratuit sur PC, payant sur Mac.
Et desormais BLITZMAX qui est aussi passé gratos

DARK BASIC
RIP

PUREBASIC, j'ai essayé, je n'ai pas aimé : ca s'éloigne du basic standard, c'est austère... mais il y a des fans

GLBASIC, très proche de BLITZ, et multiplaforme, jusque Android er iOS (voire Xbox), mais payant

FREEBASIC, le successeur de Quick Basic / QB64

NAALAA
http://www.naalaa.com
Les instructions:
http://www.naalaa.com/Documentation/index.html

DARK BASIC PRO
(devenu gratos)
https://github.com/LeeBamberTGC/Dark-Basic-Pro

APP GAME KIT
, le successeur de DARK BASIC et DARK BASIC PRO
Un bon langage basic pas trop éloigné des standards, qui permet de dev sur PC, iOS et Android
https://www.appgamekit.com/


Pour CONSOLES

BATARI BASIC pour Atari 2600. De nombreuses cartouches homebrew ont été mise au point avec ce langage !
http://bataribasic.com/

RAPTOR Basic pour Atari Jaguar
http://reboot.atari.org/new-reboot/rbplus/index.html

BasiEgaXorz pour Sega Megadrive
Sur notre forum FL a déjà programmé Barbarian, et Vetea Papy Commando. Ce basic est très puissant, aucun doute possible !

ZXbasic pour Master System
Un projet abandonné ?????
http://www.smspower.org/forums/12902-ZXBasicForSegaMasterSystem
Mais il faut aussi programmer en assembleur de toute façon, donc trop austère....

A priori on pourrait aussi faire des jeux Colecovision avec le module Coleco du ZX Basic :
http://www.boriel.com/wiki/en/index.php/ZX_BASIC:Released_Programs_-_ColecoVision

DRAGON basic pour GBA
Abandonné. j'ai trouvé un lien :
http://www.gbadev.org/tools.php?showinfo=195
documentation : [url=http://ric.san.free.fr/_donnees/dragon basic.pdf]http://ric.san.free.fr/_donnees/dragon%20basic.pdf[/url]

KUN BASIC pour MSX
Qui permet de booster le basic MSX1 et compiler le programme... mais trop rudimentaire (il n'utilise que les instructions du basic classique MSX 1)

CHIPMUNK BASIC pour Playstation 1
Attente infos
Le site : http://psxbasic.sourceforge.net/

INTY BASIC pour Intellivision
http://atariage.com/forums/topic/222570-intybasic-compiler-v05/page-6

Un projet non commencé de BASICVISION sur Colecovision par Pixelboy :
http://atariage.com/forums/topic/158528-basicvision-official-development-thread/page-2

7800BASIC, Un basic pour l'ATARI 7800 basé sur Batari :
http://www.randomterrain.com/7800basic.html#introduction


Pour Android

Basic!
http://rfobasic.freeforums.org/


Vous en connaissez d'autres ? Listons ici tous ces outils !!!!


Dernière édition par drfloyd le Sam 12 Aoû 2017 - 22:50, édité 19 fois

_______________________________________________________


Mon profil Gamoapt Advisor de vendeur :
http://www.gamopat-forum.com/t94659-dr-floyd-advisor







avatar
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 122148
Age : 47
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

Re: Développer du homebrew en langage basic aujourd'hui... c'est possible

Message par drfloyd le Dim 25 Jan 2015 - 11:20

UP

_______________________________________________________


Mon profil Gamoapt Advisor de vendeur :
http://www.gamopat-forum.com/t94659-dr-floyd-advisor







avatar
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 122148
Age : 47
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

Re: Développer du homebrew en langage basic aujourd'hui... c'est possible

Message par F.L le Lun 26 Jan 2015 - 0:34

il y a eu un debut de compileur basic pour master system :
http://www.smspower.org/forums/12902-ZXBasicForSegaMasterSystem
par contre, je ne suis meme pas arrivé à lancer le programme 
apparement, le projet est en stand-by depuis le temps, voire abandonné Sad
dommage, car j'etais fortement interessé
si quelqu'un ici a des nouvelles, ou bien s'il arrive a lancer le programme, ça serait sympa de le dire
avatar
F.L
Docteur *
Docteur *

Masculin Nombre de messages : 2152
Age : 42
Localisation : hérault
Date d'inscription : 11/06/2012

http://fl.basic.free.fr

Revenir en haut Aller en bas

Re: Développer du homebrew en langage basic aujourd'hui... c'est possible

Message par drfloyd le Lun 26 Jan 2015 - 11:35

merci pour l'info, je le rajoute à la liste en tout cas.

Pour Coleco, Gameboy, MSX et Nes ca serait top....

D'ailleurs pour MSX2 je crois me souvenir qu'il y a un utilitaire qui booste les perfs du basic standard.... pour en faire un basic ultra rapide. Faut que je redemande à Ericb59.

_______________________________________________________


Mon profil Gamoapt Advisor de vendeur :
http://www.gamopat-forum.com/t94659-dr-floyd-advisor







avatar
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 122148
Age : 47
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

Re: Développer du homebrew en langage basic aujourd'hui... c'est possible

Message par drfloyd le Lun 26 Jan 2015 - 11:38

il y a eu un debut de projet d'idée pour un basic Coleco par PIXELBOY :

http://atariage.com/forums/topic/197428-colecovision-basic/

_______________________________________________________


Mon profil Gamoapt Advisor de vendeur :
http://www.gamopat-forum.com/t94659-dr-floyd-advisor







avatar
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 122148
Age : 47
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

Re: Développer du homebrew en langage basic aujourd'hui... c'est possible

Message par drfloyd le Lun 26 Jan 2015 - 14:18

il existerai un Dragon basic sur GBA.....

_______________________________________________________


Mon profil Gamoapt Advisor de vendeur :
http://www.gamopat-forum.com/t94659-dr-floyd-advisor







avatar
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 122148
Age : 47
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

Re: Développer du homebrew en langage basic aujourd'hui... c'est possible

Message par F.L le Lun 26 Jan 2015 - 14:29

@drfloyd a écrit:il existerai un Dragon basic sur GBA.....

interessant ça Razz
je vais tester ce soir !
@+
avatar
F.L
Docteur *
Docteur *

Masculin Nombre de messages : 2152
Age : 42
Localisation : hérault
Date d'inscription : 11/06/2012

http://fl.basic.free.fr

Revenir en haut Aller en bas

Re: Développer du homebrew en langage basic aujourd'hui... c'est possible

Message par tfdi le Lun 26 Jan 2015 - 16:13

Au risque de dire une conner** ... Very Happy ... j'ai jeté un coup d'œil rapide au ZXB (le compilateur basic pour la master system), chez moi ca fonctionne.

Je compile et j'obtiens un BIN. Bon après je n'ai pas de quoi tester ce bin, il faut utiliser un émulateur pour la master system ou une cartouche spéciale sur une master d'origine ?

C'est un compilateur en ligne, qui fonctionne sous la console.

Pour compiler, tu passes en mode console ms-dos, tu vas dans le sous-dossier bin, et tu tapes "zxb fichier.bas", ca te génère un fichier bin.

Pour compiler les exemples, tu peux donc faire (toujours en console ms-dos), dans le dossier de l'exe:

zxb examples\circle.bas

Ca te génère bien un circle.bin dans le dossier ou te te trouve quand tu tapes la commande. Les sources .bas sont éditables avec un simple editeur texte, j'utilise Notepad ++, ca fonctionne impec.

Après, il faut creuser pour voir les possibilités, mais à priori, ce n'est qu'une alpha.


Dernière édition par tfdi le Lun 26 Jan 2015 - 17:11, édité 1 fois
avatar
tfdi
Patient contaminé

Masculin Nombre de messages : 505
Age : 44
Date d'inscription : 19/10/2010

Revenir en haut Aller en bas

Re: Développer du homebrew en langage basic aujourd'hui... c'est possible

Message par Fabf le Lun 26 Jan 2015 - 16:33

@drfloyd a écrit:D'ailleurs pour MSX2 je crois me souvenir qu'il y a un utilitaire qui booste les perfs du basic standard.... pour en faire un basic ultra rapide. Faut que je redemande à Ericb59.
C'est le KunBasic.

Sur MSX il existe un compilateur Basic mais il est plutôt rudimentaire niveau graphiques et ne supporte que les instructions MSX1.

Sinon il y a aussi 2 utilitaires qui permettent de faire une ROM (et donc une cartouche) à partir d'un programme Basic.
Limitation à 16ko.

Au sujet du Basic, il y a souvent des concours de prog avec des productions étonnantes :
http://www.msx.org/news/en/new-msx-basic-contest-and-magazine
avatar
Fabf
Patient incurable

Masculin Nombre de messages : 1333
Age : 43
Localisation : Vienne (38)
Date d'inscription : 11/09/2012

Revenir en haut Aller en bas

Re: Développer du homebrew en langage basic aujourd'hui... c'est possible

Message par goux.m le Lun 26 Jan 2015 - 16:50

Pour PC, il y a Naalaa

http://www.naalaa.com/

"NaaLaa stands for 'Not An Advanced Language At All'. It's a very easy to learn programming language for beginners interested in retro style game development. NaaLaa is free to use and you may do whatever you want with the programs you create with it. As it is, NaaLaa only runs on and compiles for Windows desktop"
avatar
goux.m
Patient contaminé

Masculin Nombre de messages : 119
Age : 51
Localisation : 77
Date d'inscription : 30/08/2013

http://michel.goux.pagesperso-orange.fr/

Revenir en haut Aller en bas

Re: Développer du homebrew en langage basic aujourd'hui... c'est possible

Message par F.L le Lun 26 Jan 2015 - 21:40

@tfdi a écrit:Au risque de dire une conner** ... Very Happy ... j'ai jeté un coup d'œil rapide au ZXB (le compilateur basic pour la master system), chez moi ca fonctionne.

Je compile et j'obtiens un BIN. Bon après je n'ai pas de quoi tester ce bin, il faut utiliser un émulateur pour la master system ou une cartouche spéciale sur une master d'origine ?

C'est un compilateur en ligne, qui fonctionne sous la console.

Pour compiler, tu passes en mode console ms-dos, tu vas dans le sous-dossier bin, et tu tapes "zxb fichier.bas", ca te génère un fichier bin.

Pour compiler les exemples, tu peux donc faire (toujours en console ms-dos), dans le dossier de l'exe:

zxb examples\circle.bas

Ca te génère bien un circle.bin dans le dossier ou te te trouve quand tu tapes la commande. Les sources .bas sont éditables avec un simple editeur texte, j'utilise Notepad ++, ca fonctionne impec.

Après, il faut creuser pour voir les possibilités, mais à priori, ce n'est qu'une alpha.

merci beaucoup pour les infos !!
j'ai du basic à tester ce soir !!
avatar
F.L
Docteur *
Docteur *

Masculin Nombre de messages : 2152
Age : 42
Localisation : hérault
Date d'inscription : 11/06/2012

http://fl.basic.free.fr

Revenir en haut Aller en bas

Re: Développer du homebrew en langage basic aujourd'hui... c'est possible

Message par tfdi le Lun 26 Jan 2015 - 21:57

De rien Wink
avatar
tfdi
Patient contaminé

Masculin Nombre de messages : 505
Age : 44
Date d'inscription : 19/10/2010

Revenir en haut Aller en bas

Re: Développer du homebrew en langage basic aujourd'hui... c'est possible

Message par drfloyd le Lun 26 Jan 2015 - 22:55

@goux.m a écrit:Pour PC, il y a Naalaa

http://www.naalaa.com/

"NaaLaa stands for 'Not An Advanced Language At All'. It's a very easy to learn programming language for beginners interested in retro style game development. NaaLaa is free to use and you may do whatever you want with the programs you create with it. As it is, NaaLaa only runs on and compiles for Windows desktop"

tiens...

mais c'est du pur basic ? impossible a trouver des exemples ou la liste des commandes.... Le site est vraiment dépouillé !

_______________________________________________________


Mon profil Gamoapt Advisor de vendeur :
http://www.gamopat-forum.com/t94659-dr-floyd-advisor







avatar
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 122148
Age : 47
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

Re: Développer du homebrew en langage basic aujourd'hui... c'est possible

Message par F.L le Mar 27 Jan 2015 - 1:06

@tfdi a écrit:Au risque de dire une conner** ... Very Happy ... j'ai jeté un coup d'œil rapide au ZXB (le compilateur basic pour la master system), chez moi ca fonctionne.

Je compile et j'obtiens un BIN. Bon après je n'ai pas de quoi tester ce bin, il faut utiliser un émulateur pour la master system ou une cartouche spéciale sur une master d'origine ?

C'est un compilateur en ligne, qui fonctionne sous la console.

Pour compiler, tu passes en mode console ms-dos, tu vas dans le sous-dossier bin, et tu tapes "zxb fichier.bas", ca te génère un fichier bin.

Pour compiler les exemples, tu peux donc faire (toujours en console ms-dos), dans le dossier de l'exe:

zxb examples\circle.bas

Ca te génère bien un circle.bin dans le dossier ou te te trouve quand tu tapes la commande. Les sources .bas sont éditables avec un simple editeur texte, j'utilise Notepad ++, ca fonctionne impec.

Après, il faut creuser pour voir les possibilités, mais à priori, ce n'est qu'une alpha.

merci pour ton aide, je viens enfin de compiler cette fameuse rom circle.bin !!
j'ai testé vite fait avec kega fusion, ça ne marche pas. il faut que je teste ça plus serieusement
@+
avatar
F.L
Docteur *
Docteur *

Masculin Nombre de messages : 2152
Age : 42
Localisation : hérault
Date d'inscription : 11/06/2012

http://fl.basic.free.fr

Revenir en haut Aller en bas

Re: Développer du homebrew en langage basic aujourd'hui... c'est possible

Message par dub le Mar 27 Jan 2015 - 9:21

Pour zxb-sms !

J'ai juste fait un petit test. Y a des erreurs de compil mais j'ai pas eut le temps de regarder le code. j'ai utilisé l'alpha 0.04 et testé avec l'example de base et celui sur example src

1. Compiler en assembleur, dans le rép exemple, lancer build.bat (ou copier build.bat dans un rép source avec un fichier .zxb et modifier le fichier build.bat pour le chemin et nom du fichier). On obtient plein de files mais surtout un .zxi
2. Compiler pour sms. %PATH%\zxb-sms-alpha-0.04\bin\zxb test.zxi
On obtient un .sms

D'après les infos, on doit toujours coder une partie en asm.


avatar
dub
Patient contaminé

Masculin Nombre de messages : 466
Age : 47
Localisation : France
Date d'inscription : 27/08/2008

http://www.pixelretro.com

Revenir en haut Aller en bas

Re: Développer du homebrew en langage basic aujourd'hui... c'est possible

Message par goux.m le Mar 27 Jan 2015 - 9:35

@drfloyd a écrit:
tiens...

mais c'est du pur basic ? impossible a trouver des exemples ou la liste des commandes.... Le site est vraiment dépouillé !

Quand tu as téléchargé le basic, tu as accès à la doc via le menu Help/Documentation

Sur le forum, il y a pas mal d'exemples.
Ca à l'air simple, mais j'ai pas eu le temps de m'y intéresser ... Je suis sur autre chose en ce moment
avatar
goux.m
Patient contaminé

Masculin Nombre de messages : 119
Age : 51
Localisation : 77
Date d'inscription : 30/08/2013

http://michel.goux.pagesperso-orange.fr/

Revenir en haut Aller en bas

Re: Développer du homebrew en langage basic aujourd'hui... c'est possible

Message par tfdi le Mar 27 Jan 2015 - 9:54

F.L.: En fouillant un peu, je suis tombé sur ca :

"At the moment, ZXB-SMS doesn't support many of Boriel's ZX Basic features, so multiplication, division, string manipulation, sound/graphical commands, etc. simply wouldn't work, but they could be made to work in the future."

Si t'es anglophobe, ca indique en clair que l'outils de conversion en SMS ne supporte pas certaines commandes du Boriel's ZX Basic, comme les multiplications, divisions, commandes de manipulation des chaines de caractères, commandes de son / graphiques, etc. Une grosse partie donc doit toujours être programmée en asembleur, comme le dit Dub.

J'ai téléchargé la derniere version du Zxb, version 1.4.0s1902, l'outil de conversion zxb-sms a disparu, il n'est plus fourni avec le basic.
avatar
tfdi
Patient contaminé

Masculin Nombre de messages : 505
Age : 44
Date d'inscription : 19/10/2010

Revenir en haut Aller en bas

Re: Développer du homebrew en langage basic aujourd'hui... c'est possible

Message par F.L le Mar 27 Jan 2015 - 10:09

merci pour les expliquations, tfdi
ça faisait un moment que ce zxbasic m'intrigait et il me semblait plein de promesses car j'aurais bien aimé faire un jeu sur une autre console que la megadrive.
hela pour moi je ne connais pas l'assembleur...
il ne me reste plus qu'a attendre que raptorbasic sur jaguar soit fini (un jour) ou essayer dragonbasic pour gba (enfin je viens de lire qu'il fonctionne de maniere procedurale et donc on ne peux pas utiliser ni goto ni gosub... ça commence mal)
plus je galere à trouver des compileurs basic qui fonctionnent vraiment en basic, plus j'aime BEX Razz
Doc, en haut de page, tu as oublié de mentionner Bonaf qui a aussi fait un jeu avec Bex sur ce forum
@+
avatar
F.L
Docteur *
Docteur *

Masculin Nombre de messages : 2152
Age : 42
Localisation : hérault
Date d'inscription : 11/06/2012

http://fl.basic.free.fr

Revenir en haut Aller en bas

Re: Développer du homebrew en langage basic aujourd'hui... c'est possible

Message par dub le Mar 27 Jan 2015 - 10:25

J'ai vu aussi un basic pour PSX mais pas testé : PSX Chipmunk BASIC

Pour le zxb-sms faut voir, la partie assembleur semble déjà codé par pas de monde est limité à pariori pour le hard genre pour lire les pads ou updatesprite :

Code:

sub fastcall UpdateSprites()
   asm
      ; Since it's a fastcall function, you can do that.
      jp UpdateSprites ; Jumps directly to the actual asm routine
   end asm
end sub

sub fastcall WaitForVBlankNoInt()
   asm
      ; Since it's a fastcall function, you can do that.
      jp WaitForVBlankNoInt ; Jumps directly to the actual asm routine
   end asm
end sub

sub fastcall SetSprite(num as UByte, x as UByte, y as UByte, tile as UByte)
   asm
      exx
      pop hl ; ret addr
      exx

      ld d, 0
      ld e, a      ; de = num
      pop bc      ; b = x
      
      ld hl, hw_sprites_y
      add hl, de
      pop af
      ld (hl), a   ; hw_sprites_y[num] = y

      ld hl, hw_sprites_xc      
      add hl, de
      add hl, de
      ld (hl), b   ; hw_sprites_xc[num << 1] = x
      
      inc hl
      pop af
      ld (hl), a   ; hw_sprites_xc[(num << 1) + 1] = tile

      exx
      push hl ; stores ret addr back
      exx
   end asm
end sub

const joyUpMask    as UByte = 1
const joyDownMask  as UByte = 2
const joyLeftMask  as UByte = 4
const joyRightMask as UByte = 8
const joyFireAMask as UByte = 16
const joyFireBMask as UByte = 32

function fastcall ReadJoypad1() as UByte
   asm
      in   a, ($dc)   ; Reads joystick 1
      cpl         ; Inverts all bits
   end asm
end function

function fastcall ReadJoypad2() as UByte
   asm
      in   a, ($dc)   ; Reads UP and DOWN
      cpl         ; Inverts all bits
      rla
      rla
      rla         ; Puts them into the 2 lower bits
      and   $03      ; Masks them
      ld   l, a
      in   a, ($dd)   ; Reads the remaining bits
      cpl         ; Inverts all bits
      add   a, a
      add   a, a      ; Shifts them to the correct position
      or   l      ; Groups them with the first two
   end asm
end function

Sinon le code source du jeu que j'ai mis en images au dessus avec le lien vers les "examples src" :

Code:
#include "hardware.zxi"
#include "sprite.zxi"
#include "random.zxi"
#include "test.zxi"

dim joy as UByte
dim frameTimer as UInteger

const VisibleMinX   as UByte = 16
const VisibleMaxX   as UByte = 256 - 16
const VisibleMinY   as UByte = 0
const VisibleMaxY   as UByte = 192

const VisibleTilesMaxY   as UByte = (VisibleMaxY - VisibleMinY) / 16


const BackgroundCharMaxY   as UByte = 28
const BackgroundPixelMaxY   as UByte = BackgroundCharMaxY * 8


const ActorMinX         as UByte = 8
const ActorMaxX       as UByte = 256 - 8
const ActorFrameTile   as UByte = 4
const ActorDirTile      as UByte = 8
const ActorTileShift   as UByte = 4


const ScoreBaseTile      as UInteger = 0
const ScoreTileCount   as UByte = 20


const LaneCount         as UByte = 7
const LaneCharHeight   as UByte = 3
const LaneTop         as UByte = 1
const LaneBottom      as UByte = LaneTop + LaneCount * LaneCharHeight
const LanePixelTopLimit   as UByte = LaneTop * 8 + 8
const LanePixelHeight   as UByte = LaneCharHeight * 8
const LaneBaseTile      as UByte = $B0

const PlayerMinY      as UByte = LanePixelTopLimit
const PlayerCenterX      as UByte = 128

const PlayerWidth   as UByte = 16
const PlayerHeight   as UByte = 16

const PlayerBaseTile   as UByte = 16

dim playerX, playerY, playerFrame as UByte
dim playerFireDelay as UByte
dim playerCurrentLane, playerTargetLane as UByte
dim playerTargetY as UByte
dim playerLookingLeft as UByte


const ShotMemSize   as UByte = 2
const ShotMemShift   as UByte = 1
const ShotXOfs      as UByte = 0
const ShotFlagOfs   as UByte = 1

const ShotFlagLeft   as UByte = 1
const ShotFlagRight   as UByte = 2

const ShotBaseTile   as UByte = 32

dim shots(1 to LaneCount * ShotMemSize) as UByte


const EnemyMemSize   as UByte = 4
const EnemyMemShift   as UByte = 2
const EnemyXOfs      as UByte = 0
const EnemySpdOfs   as UByte = 1
const EnemyTypeOfs   as UByte = 2
const EnemyTimerOfs   as UByte = 3

const EnemyBaseTile   as UByte = 48

const EnemyTypeMask      as UByte = 7
const EnemyTypeSlow      as UByte = 0
const EnemyTypeMedium   as UByte = 1
const EnemyTypeFast      as UByte = 2
const EnemyTypePellet   as UByte = 3
const EnemyTypeBall      as UByte = 4
const EnemyTypeArrow   as UByte = 5
const EnemyTypeTank      as UByte = 6
const EnemyTypePhantom   as UByte = 7


dim enemies(1 to LaneCount * EnemyMemSize) as UByte


asm
    ld a,%11100110
;          |||| |`- Zoomed sprites -> 16x16 pixels
;          |||| `-- Doubled sprites -> 2 tiles per sprite, 8x16
;          |||`---- 30 row/240 line mode
;          ||`----- 28 row/224 line mode
;          |`------ VBlank interrupts
;          `------- Enable display
    out ($bf),a
    ld a,$81
    out ($bf),a
end asm


sub DrawShip(x as UByte, y as UByte, baseTile as UByte, facingRight as UByte)
   if frameTimer band $10 then
      baseTile = baseTile + ActorFrameTile
   end if

   if facingRight then
      baseTile = baseTile + ActorDirTile
   end if
   
   AddDoubleSprite(x, y, baseTile)
end sub


sub DrawPlayerShip()
   DrawShip(playerX, playerY, PlayerBaseTile, not playerLookingLeft)
end sub

sub DrawLanes()
   dim i as UByte
   dim p, p2 as UInteger
   dim y as UInteger
   dim buffer(0 to 31) as UInteger
   
   p = @buffer
   p2 = p + 62

   ' Yeah, I'm too lazy to draw an actual background.
   for i = 0 to 4
      poke UInteger p, LaneBaseTile
      poke UInteger p2, LaneBaseTile
      p = p + 2
      p2 = p2 - 2
   next
   
   for i = 4 to 8
      poke UInteger p, LaneBaseTile + 1
      poke UInteger p2, LaneBaseTile + 1
      p = p + 2
      p2 = p2 - 2
   next
   
   for i = 9 to 15
      poke UInteger p, LaneBaseTile + 2
      poke UInteger p2, LaneBaseTile + 2
      p = p + 2
      p2 = p2 - 2
   next
   
   SetBkgData(@buffer, 0, LaneTop, 32, 1)
   SetBkgData(@buffer, 0, LaneBottom, 32, 1)
   
   poke UInteger @buffer + 28, LaneBaseTile + 3
   poke UInteger @buffer + 30, 0
   poke UInteger @buffer + 32, 0
   poke UInteger @buffer + 34, LaneBaseTile + 4
   
   y = LaneTop + LaneCharHeight
   for i = 2 to LaneCount
      SetBkgData(@buffer, 0, y, 32, 1)      
      y = y + LaneCharHeight
   next
end sub


function fastcall LaneCoord(laneNumber as UInteger) as UByte
   asm         
      ld de, LaneCoords
      add hl, de         ; HL now points to the corresponding element on the table
      ld a, (hl)
   end asm
end function

sub ChangeLane()
   playerTargetY = LaneCoord(playerTargetLane) + LanePixelTopLimit
end sub


sub InitShots()
   dim i as UByte
   dim p as UInteger
   
   p = @shots
   for i = 0 to LaneCount - 1
      poke p + ShotFlagOfs, 0
   next
end sub

function ShotAddr(laneNumber as UByte) as UInteger
   return @shots + (laneNumber << ShotMemShift)
end function

sub DrawShot(baseAddr as UInteger, y as UByte)
   if peek(baseAddr + ShotFlagOfs) then
      DrawShip(peek(baseAddr + ShotXOfs), y, ShotBaseTile, peek(baseAddr + ShotFlagOfs) = ShotFlagRight)
   end if
end sub

sub DrawShots()
   dim i, y as UByte
   dim p as UInteger
   
   p = @shots
   y = LanePixelTopLimit
   for i = 1 to LaneCount
      DrawShot(p, y)
      y = y + LanePixelHeight
      p = p + ShotMemSize
   next
end sub

sub MoveShot(baseAddr as UInteger)
   dim x, flags as UByte

   x = peek(baseAddr + ShotXOfs)
   flags = peek(baseAddr + ShotFlagOfs)
   if flags then
      if flags = ShotFlagLeft then
         x = x - 6
      else
         x = x + 6
      end if
      
      if (x <= ActorMinX) or (x >= ActorMaxX) then
         poke baseAddr + ShotFlagOfs, 0
      end if
      
      poke baseAddr + ShotXOfs, x
   end if
end sub

sub MoveShots()
   dim i as UByte
   dim p as UInteger
   
   p = @shots
   for i = 1 to LaneCount
      MoveShot(p)
      p = p + ShotMemSize
   next
end sub

sub Fire()
   dim p as UInteger
   
   p = ShotAddr(playerCurrentLane)
   if peek(p + ShotFlagOfs) = 0 then
      poke p + ShotXOfs, PlayerCenterX
   
      if playerLookingLeft then
         poke p + ShotFlagOfs, ShotFlagLeft
      else
         poke p + ShotFlagOfs, ShotFlagRight
      end if
   end if
end sub


sub InitEnemies()
   dim i as UByte
   dim p as UInteger
   
   p = @enemies
   for i = 0 to LaneCount - 1
      poke p + EnemySpdOfs, 0
      p = p + EnemyMemSize
   next
end sub

sub DrawEnemy(baseAddr as UInteger, y as UByte)
'   if peek(baseAddr + ShotFlagOfs) then
'      AddDoubleSprite(peek(baseAddr + ShotXOfs), y, ShotBaseTile)
'   end if   
   if peek(baseAddr + EnemySpdOfs) then
      DrawShip(peek(baseAddr + EnemyXOfs), y, EnemyBaseTile + (peek(baseAddr + EnemyTypeOfs) << ActorTileShift), peek(Byte, baseAddr + EnemySpdOfs) > 0)
   end if
end sub

sub DrawEnemies()
   dim i, y as UByte
   dim p as UInteger
   
   p = @enemies
   y = LanePixelTopLimit
   for i = 0 to LaneCount - 1
      DrawEnemy(p, y)
      y = y + LanePixelHeight
      p = p + EnemyMemSize
   next
end sub

sub CollideEnemy(enemyAddr as UInteger, lane as UByte)
   dim shotAddr as UInteger
   dim shotX, enemyX as UInteger
   dim enemyType, shotFlag as UByte
   
   enemyType = peek(enemyAddr + EnemyTypeOfs)
   if enemyType = EnemyTypePhantom then
      ' Phantom ships are invulnerable.
      return
   end if

   shotAddr = ShotAddr(lane)
   shotFlag = peek(shotAddr + ShotFlagOfs)
   if shotFlag then
      shotX = peek(shotAddr + ShotXOfs)
      enemyX = peek(enemyAddr + EnemyXOfs)
      
      if (shotX - enemyX <= 16) or (enemyX - shotX <= 16) then
         poke shotAddr + ShotFlagOfs, 0
         if enemyType = EnemyTypeTank then
            ' Tanks can only be hit from the back
            if peek(Byte, enemyAddr + EnemySpdOfs) < 0 then
               if shotFlag = ShotFlagLeft then
                  ' Both facing left? Blam!
                  poke enemyAddr + EnemySpdOfs, 0
               end if
            else
               if shotFlag = ShotFlagRight then
                  ' Both facing right? Blam!
                  poke enemyAddr + EnemySpdOfs, 0
               end if
            end if
         else
            poke enemyAddr + EnemySpdOfs, 0
         end if
      end if
   end if
end sub

sub MoveEnemies()
   dim i as UByte
   dim x, type as UByte
   dim spd, timer as Byte
   dim p as UInteger
   
   p = @enemies
   for i = 0 to LaneCount - 1
      x = peek(p + EnemyXOfs)
      spd = peek(p + EnemySpdOfs)
      type = peek(p + EnemyTypeOfs)
      timer = peek(p + EnemyTimerOfs)
      
      if spd = 0 then
         if (Random() band $1F) = 1 then
            ' Spawns a new enemy
         
            if Random() band 1 then
               x = ActorMinX + 1
               spd = 12
            else
               x = ActorMaxX - 1
               spd = -12
            end if
            
            poke p + EnemyXOfs, x
            poke p + EnemySpdOfs, spd
            poke p + EnemyTypeOfs, Random() band 7
         end if
      else
         CollideEnemy(p, i)

         if type = EnemyTypePellet then
            timer = 1
         else
            timer = timer + spd
            x = x + (timer >> 4)
            timer = timer band $F
            
            poke p + EnemyXOfs, x
            poke p + EnemyTimerOfs, timer
         end if

         if (x <= ActorMinX) or (x >= ActorMaxX) then ' Enemy moved out?
            if type = EnemyTypeBall or type = EnemyTypeTank or type = EnemyTypeArrow then
               ' Turn around
               if spd < 0 then
                  x = ActorMinX + 1
               else
                  x = ActorMaxX - 1
               end if
               
               spd = -spd
               poke p + EnemyXOfs, x
               poke p + EnemySpdOfs, spd
               
               if type = EnemyTypeArrow then
                  ' Become a tank
                  poke p + EnemyTypeOfs, EnemyTypeTank
               end if
            else
               ' Disappear
               poke p + EnemySpdOfs, 0
            end if
         end if
         
         CollideEnemy(p, i)
      end if      
   
      p = p + EnemyMemSize
   next
end sub


' LoadPalette(ResourceAddr(ForestPal), 16, 0)
' LoadPalette(ResourceAddr(MManiaPal), 16, 16)

' LoadTiles(ScoreBaseTile, ResourceAddr(ScoreTil), ScoreTileCount, 4)
' LoadTiles(PlayerBaseTile, ResourceAddr(MManiaTil), PlayerTileCount, 4)
' LoadTiles(ShotBaseTile, ResourceAddr(PlayerShotTil), ShotTileCount, 4)
' LoadTiles(256, ResourceAddr(DefaultBkgTil), 64, 4)
' LoadTiles(MapBaseTile, ResourceAddr(ForestTil), 64, 4)


playerX = PlayerCenterX
playerY = PlayerMinY
playerCurrentLane = 0
playerTargetLane = 0

' Background palette
LoadPalette(ResourceAddr(ShipPal), 16, 0)
' Ship palette
LoadPalette(ResourceAddr(ShipPal), 16, 16)
' Tileset
LoadTiles(0, ResourceAddr(ShipTil), 256, 4)

DrawLanes()
InitEnemies()
InitShots()

do
   ' *** Player ***
   
   joy = ReadJoypad1()   
   
   if joy band joyLeftMask then
      playerLookingLeft = 1
   elseif joy band joyRightMask then
      playerLookingLeft = 0
   end if

   if playerCurrentLane = playerTargetLane then
      if (joy band joyUpMask) and (playerCurrentLane > 0) then
         playerTargetLane = playerTargetLane - 1
         ChangeLane()
      elseif (joy band joyDownMask) and (playerCurrentLane < LaneCount - 1) then
         playerTargetLane = playerTargetLane + 1
         ChangeLane()
      end if
   else
      if playerY <> playerTargetY then
         if playerY < playerTargetY then
            playerY = playerY + 12
         else
            playerY = playerY - 12
         end if
      else
         playerCurrentLane = playerTargetLane
      end if
   end if
   
'   if joy band (joyFireAMask bor joyFireBMask) then
      Fire()
'   end if

   if playerFireDelay then
      playerFireDelay = playerFireDelay - 1
   end if
   
   ' *** Shots ***
   
   MoveShots()
   MoveEnemies()
      
   ' *** Draw ***

   ResetSprites()   
   DrawPlayerShip()
   DrawShots()
   DrawEnemies()
   FinishSprites()
   
   WaitForVBlankNoInt()
   UpdateSprites()
   
   frameTimer = frameTimer + 1
loop


asm

LaneCoords:
   .db 0*24, 1*24, 2*24, 3*24, 4*24, 5*24, 6*24

end asm
avatar
dub
Patient contaminé

Masculin Nombre de messages : 466
Age : 47
Localisation : France
Date d'inscription : 27/08/2008

http://www.pixelretro.com

Revenir en haut Aller en bas

Re: Développer du homebrew en langage basic aujourd'hui... c'est possible

Message par tfdi le Mar 27 Jan 2015 - 10:39

Quand on commence à avoir des peeks et des pokes en pagaille, avec des routines asm, tu peux passer à l'assembleur direct :) .... on sort de la simplicité du basic, et je trouve plus facile à lire un listing assembleur pur qu'un mélange de routine basic/peek/poke/asm.

Sans parler de toutes les astuces qu'on apprend en asm, les trucs pas documentés, le reverse engineering sur les programmes des autres, etc ... Wink

Désolé pour le HS du post initial ...


Dernière édition par tfdi le Mar 27 Jan 2015 - 10:47, édité 1 fois
avatar
tfdi
Patient contaminé

Masculin Nombre de messages : 505
Age : 44
Date d'inscription : 19/10/2010

Revenir en haut Aller en bas

Re: Développer du homebrew en langage basic aujourd'hui... c'est possible

Message par drfloyd le Mar 27 Jan 2015 - 10:44

oui peek & poke = mauvais basic.

_______________________________________________________


Mon profil Gamoapt Advisor de vendeur :
http://www.gamopat-forum.com/t94659-dr-floyd-advisor







avatar
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 122148
Age : 47
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

Re: Développer du homebrew en langage basic aujourd'hui... c'est possible

Message par drfloyd le Mar 27 Jan 2015 - 11:19

Il y a sinon INTY Basic pour Intellivision

http://atariage.com/forums/topic/222570-intybasic-compiler-v05/page-6

Pas trouvé de guide/manuel pour l'instant.

_______________________________________________________


Mon profil Gamoapt Advisor de vendeur :
http://www.gamopat-forum.com/t94659-dr-floyd-advisor







avatar
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 122148
Age : 47
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

Re: Développer du homebrew en langage basic aujourd'hui... c'est possible

Message par philip le Ven 30 Jan 2015 - 13:53

Amos basic pour l'Amiga, j'ai fait mon premier jeu dessus, envoyé par courrier postal, l'éditeur via son programmeur m'a gentilment répondu en me conseillant l'assembleur... toute une époque ! Wink
avatar
philip
Docteur *
Docteur *

Masculin Nombre de messages : 1905
Age : 46
Localisation : 31350 déménagement terminé.
Date d'inscription : 10/04/2011

http://philip-md.blogspot.fr/

Revenir en haut Aller en bas

Re: Développer du homebrew en langage basic aujourd'hui... c'est possible

Message par drfloyd le Ven 30 Jan 2015 - 13:54

oui apres apres il y a les basics alternatifs sur ST et Amiga bien sur....

_______________________________________________________


Mon profil Gamoapt Advisor de vendeur :
http://www.gamopat-forum.com/t94659-dr-floyd-advisor







avatar
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 122148
Age : 47
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

Re: Développer du homebrew en langage basic aujourd'hui... c'est possible

Message par F.L le Mer 4 Fév 2015 - 23:57

salut
quelqu'un ici a déja testé dragon basic , le basic pour gba ?
il a l'air abouti et fonctionnel , mais....
j'ai donc installé le logiciel, reglé les parametres grosso modo au lancement (le probleme vient peut etre de là)
mais je n'arrive pas à compiler la moindre ligne de code..... meme pas un "print 0"
si quelqu'un peut m'aider ou me conseiller un tuto ou un forum ça serait cool
merci d'avance
avatar
F.L
Docteur *
Docteur *

Masculin Nombre de messages : 2152
Age : 42
Localisation : hérault
Date d'inscription : 11/06/2012

http://fl.basic.free.fr

Revenir en haut Aller en bas

Re: Développer du homebrew en langage basic aujourd'hui... c'est possible

Message par drfloyd le Jeu 5 Fév 2015 - 7:16

ne me dis pas que tu as l'idée de porter BARBARIAN sur GameBoy ????

_______________________________________________________


Mon profil Gamoapt Advisor de vendeur :
http://www.gamopat-forum.com/t94659-dr-floyd-advisor







avatar
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 122148
Age : 47
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

Re: Développer du homebrew en langage basic aujourd'hui... c'est possible

Message par dub le Jeu 5 Fév 2015 - 9:47

J'ai juste installé DragonBasic pour tester et chez moi ça fonctionne. Enfin ça compile et la rom marche, après ... dans le code y a des peek et des poke alors ... OK je sors MDR

J'ai configuré le lien vers le compilateur au démarrage du prog comme toi je pense, après je suis pas allé voir les autres paramètres.

Pour la doc : http://ric.san.free.fr/_donnees/dragon%20basic.pdf
et d'autres infos http://ric.san.free.fr/gba.htm

Pour des Src : http://homepages.manx.net/bootlegger/gba_programming.html

Et pour les tutos : http://members.home.nl/penpvdbs/Downloads/DB.rar
Dedans il y a des tutos de base. Le 1er affiche un hello world avec compteur, bien documenté dans le source code.
avatar
dub
Patient contaminé

Masculin Nombre de messages : 466
Age : 47
Localisation : France
Date d'inscription : 27/08/2008

http://www.pixelretro.com

Revenir en haut Aller en bas

Re: Développer du homebrew en langage basic aujourd'hui... c'est possible

Message par F.L le Jeu 5 Fév 2015 - 10:25

@dub a écrit:J'ai juste installé DragonBasic pour tester et chez moi ça fonctionne. Enfin ça compile et la rom marche, après ... dans le code y a des peek et des poke alors ... OK je sors MDR

J'ai configuré le lien vers le compilateur au démarrage du prog comme toi je pense, après je suis pas allé voir les autres paramètres.

Pour la doc : http://ric.san.free.fr/_donnees/dragon%20basic.pdf
et d'autres infos http://ric.san.free.fr/gba.htm

Pour des Src : http://homepages.manx.net/bootlegger/gba_programming.html

Et pour les tutos : http://members.home.nl/penpvdbs/Downloads/DB.rar
Dedans il y a des tutos de base. Le 1er affiche un hello world avec compteur, bien documenté dans le source code.

merci beaucoup dub !
je vais regarder tout ça.
j'aimerais au moins compiler une rom pour voir

@drfloyd a écrit:ne me dis pas que tu as l'idée de porter BARBARIAN sur GameBoy ????

si justement. Mr. Green depuis quelques temps, je cherche une autre console qui acceuillerait mes codes en basic de Barbarian. mais ça ne court pas les rues et il faut que la console soit assez "puissante" quand meme.
mais bon, si il y a de peek et des pokes je decroche vite MDR
avatar
F.L
Docteur *
Docteur *

Masculin Nombre de messages : 2152
Age : 42
Localisation : hérault
Date d'inscription : 11/06/2012

http://fl.basic.free.fr

Revenir en haut Aller en bas

Re: Développer du homebrew en langage basic aujourd'hui... c'est possible

Message par tfdi le Jeu 5 Fév 2015 - 11:15

@dub a écrit:J'ai juste installé DragonBasic pour tester et chez moi ça fonctionne. Enfin ça compile et la rom marche, après ... dans le code y a des peek et des poke alors ... OK je sors MDR

MDR
avatar
tfdi
Patient contaminé

Masculin Nombre de messages : 505
Age : 44
Date d'inscription : 19/10/2010

Revenir en haut Aller en bas

Re: Développer du homebrew en langage basic aujourd'hui... c'est possible

Message par drfloyd le Jeu 5 Fév 2015 - 11:54

peek et poke et colegram.... Mr. Green

_______________________________________________________


Mon profil Gamoapt Advisor de vendeur :
http://www.gamopat-forum.com/t94659-dr-floyd-advisor







avatar
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 122148
Age : 47
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

Re: Développer du homebrew en langage basic aujourd'hui... c'est possible

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Page 1 sur 3 1, 2, 3  Suivant

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum