Jump to content

Leonardo Santiago

Members
  • Posts

    27
  • Joined

  • Last visited

2 Followers

About Leonardo Santiago

  • Birthday 08/13/1981

Profile Information

  • Gender
    Male
  • Location
    São Carlos - SP - Brazil

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Leonardo Santiago's Achievements

Space Invader

Space Invader (2/9)

129

Reputation

  1. Hi everyone, I've been working on developing my programming skills, and with each new milestone, I strive to apply what I've learned to create a new game. This time was no different. My challenge was to create a one-line kernel with beautiful graphics for a simple and fun game under 4kb. I'm not sure if I achieved what I aimed for, but at least the game is almost done. I present to you Flippets: In a distant land, concealed within the mystical forests of the north, there exists a magical place known as the Mushroom Grove. In this enchanted realm, dwell the adorable Flippets, small green beings who serve as the guardians of the forest's secrets. One day, the Flippets decided to create an intriguing game to test their skills against each other. This game involved a special formation where all the Flippets stood aligned, except for one who turned away from the others. This small challenge became a fun tradition among the Flippets, known as "Find Me." The player takes on the role of a fearless Flippet explorer, embarking on an exciting journey to locate the Flippet who chose to turn their back to the group. Do you have the dexterity and keen insight required to find the intrepid Flippet? The Mushroom Grove awaits you, filled with mysteries and unparalleled fun! The idea of the game is to find the Flippet that is turned away from the others in a grid of 36 of them. To do this, the player needs to move the cursor below the Flippet and press the red button. In the first level, the player needs to find 5 Flippets sequentially within a total time of 50 seconds, which is relatively easy. In the second level, the Flippets start blinking, increasing the difficulty. In the third level, the mischievous Flippets change positions, so be careful not to make a mistake. Besides losing 5 points, you'll also lose 3 seconds from the clock. In the fourth level, they not only change positions but also blink. After that comes a bonus level, and everything repeats. Scoring: Found Flippet: 10 points Wrong selection: -5 points and -3 seconds on the clock At the end of the level, the remaining time is converted into points. In the bonus level: 2 identical Flippets: 20 points 3 identical Flippets: 90 points The DEMO has 7 levels to reach the end. There will be a 2-player mode, where the player who finds 50 Flippets first wins. The game is in the final debugging stage and we hope to release it soon. Have fun! flippets_demo_001.bin Play Online
  2. You are not late. All the subjects here are atemporal. 😁 That was my first game, I was just figuring things out so I used DPC+ which was an easier development option. It would have been possible to use the ball as a cross, just like using the standard kernel, although it would have graphical limitations but the gameplay would be there. (using flicker on P1 or doubles) Nowadays, I would do it very differently, developing directly in assembly, but it's nice to have this game as a photograph of the "old Leonardo"😝
  3. A long gameplay video that shows many aspects of the game. Enjoy.
  4. 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: contact@redbuttongames.com.br
  5. 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 contact@redbuttongames.com.br
  6. 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.
  7. 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. ?
  8. 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 (leocsantiago@yahoo.com.br) 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
  9. Very cool! I hope you're playing and drinking one of those wines back there. ?
  10. 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.
  11. 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.
  12. Very nice! Great job on the music, the graphics and the gameplay as well! ?
  13. 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.
×
×
  • Create New...