Jump to content

alekmaul

Members
  • Content Count

    276
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by alekmaul

  1. thanks guys for typo, I will fix them and it will save 2 bytes in Rom \o/ YES ! (and more for MATCH<>GAME switch).
  2. I did them And I'm using Pletter and RLE compression to save space in ROM. RLE because I'm doing runtime decompression of Robee sprite during game. I will test with pletter later but I think it will be too slow in 4 players mode. Also, scoreboard is a "hommage" for the SNES version of Bomberman : http://www.mobygames.com/game/snes/super-bomberman/screenshots/gameShotId,103629/
  3. It was a long time that I didn't update this post. Progress for RobeeBlaster is now really good. Multiplayer mode (4 players) seems OK and works fine (you can use 9 bombs max per player regarding the bonus you collected). You can use 2 to 4 players, but Colecovision can't replace a player ... Tournaments are from 1 to 5 victories. Story mode is also OK with 24 levels currently and four enemy types. Levels are dispatched in areas with differents graphics, 4 levels per area , so 6 area are in place in the game. I will see if I can add levels and enemy types when the sounds will be added. Bonus are of course bombs, bomb ranges, death, life, points. I will see to add more bonus. Here is a little video about multiplayer mode :
  4. thanks for your replies Philipp, it is clear for me now.
  5. Yes, a chapter with homebrew and cartridges that can run homebrews or real console. Also , non official hardware will be very nice in such book. We have such book in France for other consoles like the SNES : "La bible SNES" is a good example about such book.
  6. I hope they will be also a nice chapter regarding homebrews
  7. You're right, it seems to work, Compiler transforms the value into byte a1 which seems correct ! To easy for me to test that Thanks a lot artrag !
  8. I don't understand your reply (certainly my request was not enough explicit ). I want to declare a global const table with this struct, not to assign vars for it. The struct is using 5 bytes for the password, and 1 another for bonus, nbbricks, not two bytes for them because I'm using 3 bits for bonus and 5 for nbbricks, so the compiler knows it can be join into only one byte. My goal is to assign const for that and I don't want to use variables and only this struct to define the const table.for all the levels. It works fine without bit declaration, so I think it is fesible, just need to find how .... The problem is only for the byte concerning nbbricks and bonus, not for the password.
  9. another question, i'm using structure with bit size specification like that : typedef struct { byte password[5]; // 0..4 level password byte bonus:3; // 5 bonus type (0..7) bbbbbttt byte nbbircks:5; // 5 nb bricks to destroy (0..31) } LevelStruct; bonus is 3 bit sized (so values between 0..7) and nbbricks 5 (values between 0..31). I want to define a const with such structure. const LevelStruct contentlevel[MAXAREA*MAXLEVEL] = { { "AAAA", 2 | (20<<3) , ... But what I tried to test to init the bit sized value, the compiler says : level.c(63) : warning 158: overflow in implicit constant conversion and of course, put 0 instead of the value in the constant. Someone has a solution regarding this problem ?
  10. Yes I did, I modified Daniel's crtcv.s file and shipped it with each project that need this player instead than in the library. Here is the source code I used for UWOL, it works fine but I think I will update it for 50/60Hz management. The currrent checking is not OK, only adapt for coleco bios music. You can remove the frequency checking, it is useless. As you can see, the only thing I did is to removed calls to Coleco BIOS music to avoid problems. ; crt0.s for Colecovision cart .module crt0 ;; external sound table setting routine .globl set_snd_table ;; global from this code .globl _buffer32 .globl _no_nmi .globl _vdp_status .globl _nmi_flag .globl _joypad_1 .globl _keypad_1 .globl _joypad_2 .globl _keypad_2 .globl snd_areas .globl _vid_freq .globl _vid_frsw ;; global from C code .globl _main .globl _nmi .globl _update_music .globl l__INITIALIZER .globl s__INITIALIZER .globl s__INITIALIZED ;; Ordering of segments for the linker - copied from sdcc crt0.s .area _HOME .area _CODE .area _INITIALIZER .area _GSINIT .area _GSFINAL .area _DATA .area _INITIALIZED .area _BSEG .area _BSS .area _HEAP ;; TABLE OF VARIABLES (IN RAM) .area _DATA _buffer32:: .ds 32 ; buffer space 32 [7000-701F] snd_addr:: .ds 11 ; sound addresses [7020-702A] snd_areas:: .ds 61 ; 5 sound slots + NULL (00h) [702B-...] _no_nmi:: .ds 1 _vdp_status:: .ds 1 _nmi_flag:: .ds 1 _joypad_1:: .ds 1 _keypad_1:: .ds 1 _joypad_2:: .ds 1 _keypad_2:: .ds 1 _vid_freq:: .ds 1 _vid_frsw:: .ds 1 ;; CARTRIDGE HEADER (IN ROM) .area _HEADER(ABS) .org 0x8000 .db 0x55, 0xaa ; no default colecovision title screen => 55 AA .dw 0 ; no copy of sprite table, etc. .dw 0 ; all unused .dw _buffer32 ; work buffer .dw 0 ; ?? .dw start_program ; start address for game coding .db 0xc9,0,0 ; no RST 08 support .db 0xc9,0,0 ; no RST 10 support .db 0xc9,0,0 ; no RST 18 support .db 0xc9,0,0 ; no RST 20 support .db 0xc9,0,0 ; no RST 28 support .db 0xc9,0,0 ; no RST 30 support .db 0xc9,0,0 ; no RST 38 support (spinner) jp _nmi_asm ;; CODE STARTS HERE WITH NMI .area _CODE _nmi_asm: push af ld a,#1 ld (_nmi_flag),a ; set NMI flag ;;; call 0x1fdc ; get VDP status ld (_vdp_status),a ;;; ld a,(_no_nmi) ; check if nmi() should be or a ; called jp nz,nmi_exit inc a ld (_no_nmi),a ld a,(_vid_frsw) ; update flag for frequency inc a ld (_vid_frsw),a push bc push de push hl push ix push iy ex af,af' push af exx push bc push de push hl call 0x1f76 ; update controllers ld a,(0x73ee) and #0x4f ld (_joypad_1),a ld a,(0x73ef) and #0x4f ld (_joypad_2),a ld a,(0x73f0) and #0x4f ld (_keypad_1),a ld a,(0x73f1) and #0x4f ld (_keypad_2),a call decode_controllers call _nmi ; call C function ld a,(_vid_freq) ; if 50Hz, setting redo music for bagman sub #0x32 jr nz, $1101 ld a,(_vid_frsw) ; only recall if 1 cycle per 3 and #0x03 jr nz, $1101 $1101: pop hl pop de pop bc exx pop af ex af,af' pop iy pop ix pop hl pop de pop bc xor a ld (_no_nmi),a nmi_exit: pop af ret keypad_table:: .db 0xff,8,4,5,0xff,7,11,2,0xff,10,0,9,3,1,6,0xff ; joypads will be decoded as follows: ; bit ; 0 left ; 1 down ; 2 right ; 3 up ; 4 -------- ; 5 -------- ; 6 button 2 ; 7 button 1 ; keypads will hold key pressed (0-11), or 0xff decode_controllers: ld ix, #_joypad_1 call decode_controller inc ix inc ix decode_controller: ld a,0(ix) ld b,a and #0x40 rlca ld c,a ld a,b and #0x0f or c ld b,a ld a,1(ix) ld c,a and #0x40 or b ld 0(ix),a ld a,c cpl and #0x0f ld e,a ld d,#0 ld hl,#keypad_table add hl,de ld a,(hl) ld 1(ix),a ret start_program: im 1 ; interrupt mode -> rst 38h di xor a ; clear carry ld bc,#0x3b8 ; ram size left ld hl,#0x7000 ; starting from 7000 ld de,#0x7001 ld (hl),a ldir ; zero-fill bss call gsinit ; Initialize global variables. ld h,#0 ; set dummy sound table call set_snd_table ld hl,#0x0033 ; initialise random generator ld (0x73c8),hl ; set screen mode 2 text call 0x1f85 ; set default VDP regs 16K ld de,#0x4000 ; clear VRAM xor a ld l,a ld h,a call 0x1f82 ld a, (0x0069) ; initialise video frequency ld (_vid_freq),a ; call main rountine jp _main .area _GSINIT gsinit:: ld bc, #l__INITIALIZER ld a,b or a,c jr z, gsinit_next ld de, #s__INITIALIZED ld hl, #s__INITIALIZER ldir gsinit_next: .area _GSFINAL ret ;
  11. Lol, really. Perhaps he knows the author of this new version !
  12. ok, I tested your last version (i used sdcc 3.3.0, not the 3.4.0). Here are some things I noticed : - it use less code, we can save more than 1K for some games !, that's really great and it seems to work well. I can't notice some changes with sdcc 3.3.0 (but it is certainly faster because of code saving). Example for RObeeBlaster : - I still have this warning for bagman compilation but not for RobeeBlaster : Any idea about this warning, what does it mean ?
  13. I think I will buy two more cables for my future game : robee blaster, count me in !
  14. you know, if you can be on stock again, i will buy 2 more cables again count me in !
  15. thanks a lot for this release, will test it for my future releases on CV !
  16. ouch, not a simple trick for coleco pad I will check, perhaps you're right. I think I do not have enough "chaos monkeys" to test such things (http://blog.codinghorror.com/working-with-the-chaos-monkey/)
  17. well, don't know when I will have time to add such feature. RAM and ROM >32 KO support is not a problem, it is just AY emulation that needs some works ...
  18. if you add bagman, I would be interest too
  19. ok, will check but certainly not before next year The big deal is certainly to have the same digits as I did for Coleco. The other thing is that I'm really happy that this game is apperciate by the community, thanks all of you for that, that's great !
  20. Thanks a lot, really nice review
  21. Nope, MazezaM, RobeeBlaster and UWOL will be here, trust me
  22. Perhaps, the main problem is to try to answer something about this : "porting is not coding" ? What do you think about that ?
×
×
  • Create New...