Jump to content

Leonardo Santiago

New Members
  • Content Count

    24
  • Joined

  • Last visited

Everything posted by Leonardo Santiago

  1. Hello everybody. Last Friday was the premiere of my new game "Razor's Edge" on the ZeroPage Homebrew channel. The game is a Beat'em Up style where the player controls Sarah Stone, a reporter and expert fighter who decides to rescue her sister Vanessa who was kidnapped by the evil David Scarblade's gang. Here is the story of the game. The game logic was done in bB but I made a custom kernel in Assembly so I could have the graphical elements I wanted, thanks to the rich tutorials by Andrew Davie, Darrell Spice, Jr. (SpiceWare), numerous tips from here on the forum and all the material provided by Duane Hahn (RandomTerrain) on his website. To create the game's soundtrack, I had the help of my friend Leandro Camara (Rally Racer and Zarkstars Saga) who majestically showed me the path to follow, allowing me to "compose" my own loops. Luciano Clemente was the official beta tester and for the graphic material I had Cláudia Maria (who made the drawings for K-Jo Chases the Cheese) For those who want to test the game, here is the small demo. Use the joystick to move the character to all sides. Button = Alternate punches Button + Up = Jump Kick Button + Down = Defense RazorsDemo.bin Play Razor's Edge on Javatari The game is finished and anyone who wants to buy it contact: [email protected]
  2. Wow. I've been away from the forum for some time and when I came back I saw this! ... Amazing! Nice score!!! For who are interested in the game, I increased the CIB copies from 50 to 80 and I have about 10 copies left. Send an email to [email protected]
  3. For about a month I have been studying a little bit of Assembly through the great material gathered on the Random Terrain website. (https://www.randomterrain.com/atari-2600-memories.html#assembly_language) Although I managed to create my own kernel, several parts of it I still don't understand. And instead of spending effort with such deep learning, I researched if it was possible to simply create a kernel for batariBasic and continue programming in bB. I found this post which presents a way to use a custom kernel. With some modifications I got to this version below. It's a 2LK and I'm trying to use the same variables as bB to control the players, but this is the problem: I can't (I don't have enough knowledge) use the players pointer correctly. Could anyone clarify my ideas? Player0Draw = $A4 ; I'm not using the vars (0-47) Player1Draw = $A5 BackgroundPtr = $A6 ; $A7 .customdrawscreen custom_eat_overscan ;bB code runs during overscan. We wait for overscan to finish so the ;frame timing doesn't get screwed up. lda INTIM bmi custom_eat_overscan custom_do_vertical_sync ;just a standard vsync lda #2 sta WSYNC ;one line with VSYNC sta VSYNC ;enable VSYNC sta WSYNC ;one line with VSYNC sta WSYNC ;one line with VSYNC lda #0 sta WSYNC ;one line with VSYNC sta VSYNC ;turn off VSYNC custom_setup_vblank_timing ;use bB timing variables so it should work with both PAL and NTSC ifnconst vblank_time lda #42+128 else lda #vblank_time+128 endif sta TIM64T ; feel free to throw useful pre-kernel code in here, so long as it ; completes before vblank is over. custom_eat_vblank ;wait for vblank to complete lda INTIM bmi custom_eat_vblank lda #0 sta WSYNC sta VBLANK custom_setup_visible_timing ;my preference is to use TIM64T to ensure a full screen is drawn. lda #230 sta TIM64T ;------------------------------------------------------------------------------ ; Desenha a parte superior da tela ; 192 - 22 scanlines = 192 - (11*2) = 170 lda #$02 ; Cor cinza no PF sta COLUPF ; COR no PF lda #1 ; sta CTRLPF ; Liga o REFLECT ldx #11 UpperSection: sta WSYNC lda customPFPattern,x sta PF0 sta PF1 sta PF2 lda customPFColor,x sta COLUBK sta WSYNC dex bne UpperSection stx PF0 stx PF1 stx PF2 ; y position lda #80 adc player0height sbc player0y sta Player0Draw ;------------------------------------------------------------------------------ ;-- AREA DE JOGO ;------------------------------------------------------------------------------ ; Desenha a área de jogo ; 170 - 160 scanlines = 170 - (80*2) = 10 (base ... not implemented) ldy #80 ; Carrega o y com o tamanho da área de jogo KernelLoop: ; 15 - todal de 15 ciclos, vindos do bne KernelLoop ; Continuação da segunda linha do 2LK ; precalcula os dados usados na primeiralinha do 2LK lda player0height ; 2 17 - altura do Player0 - IMPORTANTE!! este valor deve ser altura-1 dcp Player0Draw ; 5 22 - Decrementa Player0Draw e compara com a altura bcs DoDrawGrp0 ; 2 24 - (3 25) se o Carry estiver setado, player0 está na scanline atual lda #0 ; 2 27 - caso contrário, desliga o player0 .byte $2C ; 4 31 - $2C = BIT with absolute addressing, trick that ; causes the lda (HumanPtr),y to be skipped DoDrawGrp0: ; 25 - 25 ciclos do pior caso na linha bcs DoDrawGrp0 lda (player0pointer),y ; 5 30 - carrega o formato do player0 <<----------------------------- It's not working sta WSYNC ; 3 33 - Aguarda o fim da scanline ;------------------------------------------------- ; começo da primeira linha do 2LK sta GRP0 ; 3 3 - @ 0-22, desenha o player0 efetivamente (entre os ciclos 0 e 22) lda (BackgroundPtr),y ; 5 8 - Atualizo a linha do BG sta COLUBK ; 3 11 - guardo o valor do BG no resitrador COLUPF lda (player0color),y ; 5 16 - Pega a cor do Player0 sta COLUP0 ; 3 19 - seta a cor do Player0 ; todo esse código acima precisa estar entre o ciclo 0 e 22 ; para adicionar mais alguma coisa neste scanline, é preciso liberar algo acima ; sobraram apenas 3 ciclos ... é possível ainda colocar algum padrão de PF em PF1 e PF2 ;-------------------------------------------------- ; pre calcula os dados necessáriso para a segunda linha do 2LK ; lda player1height ; 2 21 - altura do Player0 - IMPORTANTE!! este valor deve ser altura-1 ; dcp player1y ; 5 26 - Decrementa Player1Draw e compara com a altura ; bcs DoDrawGrp1 ; 2 28 - (3 18) se o Carry estiver setado, player1 está na scanline atual ; lda #0 ; 2 31 - caso contrário, use 0 para desligar o player1 ; .byte $2C ; 4 35 - $2C = BIT with absolute addressing, trick that ; causes the lda (BoxPtr),y to be skipped DoDrawGrp1: ; 28 - 28 ciclos vindo do bcs DoDrawGRP1 ; lda (player1pointer),y ; 5 32 - Carrega a aparencia do player1 sta WSYNC ; 3 35 - Aguarda o inicio de uma nova scanline ;--------------------------------------- ; inicio da segunda linha do 2LK ; sta GRP1 ; 3 3 - @0-22, desenha o player1 efetivamente (entre os ciclos 0 e 22) ; lda (player1color),y ; 5 8 - Pega a cor do Player1 ; sta COLUP1 ; 3 11 - seta a cor do Player1 ; todo o codigo acima precisa estar entre os ciclos 0 e 22. ; ainda há 11 ciclos sobrando, talvez um playfield ou ball, ou missile ; possa entrar aqui neste ponto. dey ; 2 13 - decrementa o y bne KernelLoop ; 2 15 - se não for igual a zero, pula plá pra cima ;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------ sty COLUBK custom_eat_visible ;wait for the visible display to complete lda INTIM bne custom_eat_visible custom_setup_overscan_timing ifnconst overscan_time lda #35+128 else lda #overscan_time+128-3-1 endif sta TIM64T lda #%11000010 sta WSYNC sta VBLANK ;bB macro to return from a bank-switch gosub or from a regular gosub. RETURN customPFPattern .byte %11011001 .byte %11111111 .byte %11011001 .byte %11001001 .byte %11011111 .byte %11011001 .byte %11011001 .byte %11001001 .byte %01001001 .byte %01001001 .byte %01001001 .byte %01001001 .byte %11001001 .byte %00001000 .byte %00001000 .byte %11001001 .byte %11011001 customPFColor: .byte $00, $AA, $00, $AA, $00, $AA, $00, $AA, $00, $AA, $00, $AA, $00 Thanks in advance.
  4. This is just a demo, the full game has a total of 60 levels and was designed to fit in 4kb. I have only 16 free bytes. 😁
  5. Hi everyone. I have been working on a game with only 4k that was challenging, fun and that looked like games from the 70s and 80s. So "K-Jo chases the cheeses" was born! The biggest challenge was to put all the concepts imagined in just 4kb, using batariBasic as the main programming language. For that I had to adapt some functions, rewriting them in Assembly, which made me learn more about the language and optimized the game in size and performance. There are 60 stages with 10 different mazes. Every 10 stages, the color of the walls changes, characterizing a new house. There are 6 houses with 10 stages each, totaling 60 stages. The amount of cheese to be collected starts at 4 (at the first stage), and at each new house (10 stages) is increased by one. The time you have to complete the stage is always the same: 40 seconds. [ UPDATE ] Hi guys! K-Jo chases the cheeses will be released here in Brazil. If you are interested in the game, please send me an email ([email protected]) so that I can put your name on a pre-order list. As soon as the game is officially released I will contact you. Please put as subject the word "K-Jo". Thanks! [ UPDATE ] Very limited demo version: 10 levels 4 cheeses on all levels All available game challenges K-Jo_Demo.bin or Play K-Jo on Javatari Advertisement : Promotional Vídeo: You can also watch James and Tanya playing the full version at ZeroPage Homebrew. Leo
  6. Very cool! I hope you're playing and drinking one of those wines back there. 🤪
  7. Thank you! Unholy will be distributed by AtariAge soon. It was scheduled to be released at the end of last year, but due to the large volume of games, we prefer to release it earlier this year. It will soon be published in the store.
  8. Man, I can't believe we had the same idea in the mechanics of our games! LOL! 😄 😅 This is the "K-Jo in: Chasing the cheese" that is about to be released here in Brazil. I've been working on it since September and is currently in the "Release Candidate 01" version. I will make a topic of it soon.
  9. Very nice! Great job on the music, the graphics and the gameplay as well! 😁
  10. What's up guys? I returned to the topic to inform that the game is finished!! 😁😆 I am trying to release the game later this year. Thanks to everyone who helped me during development.
  11. Yes, it was the end of the demo. Was it hard to get there? Well, I'd left it as a punishment, or an advantage, depending the way you are navigating, but now I changed, if you are on that unreachable place and die for any reason, you start over on the center of the screen (sometimes the enemies could be there also 😁) I also fixed that line count issue and I'm improving the performance. Thanks for the feedback!
  12. Thanks a lot. Castlevania was one of my references when I started this project. I love this kind of game. Your game is amazing too. You almost forget you are playing on an Atari 2600. Obrigado Marco
  13. Hey everyone! Here is the 3rd demo update ... enjoy!
  14. Thanks for the feedback. I'm trying to improve the rooms and turn them less frustrating. All the suggestions are good, I'll try some on this way. For now, I have a new video made exclusively to Homebrew Brasil Facebook page.
  15. Hi guys. I fixed some issues on the demo. I decided keep only the newest demo version.
  16. Yes! ... Batari Basic & DPC+ kernel
  17. 1st demo available! If you ant to support the develpment, check it out: https://leocsanti.itch.io/unholy 😁
  18. Really nice. I don't have artistic skills ... that I've done was my best. (haha) 😁
  19. The YouTube videos was uploaded after I started the design. Firstly I was sharing some short videos and images on my Instagram. (Just some context) I think I found better sprites for Sancti, but it works better with a dark background than that colored one I have, but i think it's ok. About the Devil, I know I have to improve it, and the "final battle" also. The game has a good amount of screens (I thought better not say how much ...) but you have to pass each one at least twice to complete the journey, then the enemies have to be always there. You can "kill" them once, but they are ghosts, they can come back to disturb you again ... 😁 ... That was always the intention. Other considerations, what do you guys think about the score? Is it needed? ... Sometimes I miss it.
  20. I was thinking about it since I read your suggestion, but I don't know how could I improve the movement without take that cassock off. (Weird .. :) I think some pants could make a monk looks like a normal person. What do you think? But I'll try to change ... Thanks
  21. Hi everyone. About a month I decided create a game for Atari 2600. I've tried create a simple one some time ago, but now I started some bigger. Then Unholy was born. The story is based on a legend from my city: A young lady (Isabella Lorraine) gave a carnival party in her mansion on a Christian reserved date, disrespecting her parents and the traditions. At the party, an uninvited person, Daniel Evander Von Icarus Lutox or just D.E.V.I.L, started to seduce her. She falled in love with him giving a passionate kiss, but after the kiss, a lightening hit the mansion, killing almost every guest and then the Devil got the lady's body. An young monk (Gabriel Sancti) from a monastery nearby, was designated to save the survivors and take the young lady back. So you are the monk with a wooden crucifix inside a unknown mansion. The mission is rescue 4 survivors and find Isabella to take her back. ######################################### 4th Demo - 08-20-2020 Unholy_demo_2020_08_20.bin ##################################### ######################################### 3rd Demo - 07-07-2020 ** REMOVED ** ######################################### ######################################### 2nd Demo - 06-09-2020 ** REMOVED ** ######################################### ######################################### 1st Demo - 06-05-2020 ** REMOVED ** ######################################### The game is almost done, but I have to debug and test on a real hardware yet. This is the teaser: What do you think? Thanks...
×
×
  • Create New...