#cuando algo funciona bien *casi ni se nota
me refiero a la función draw_map() es #magia , no lo notaste el "#" hash
si, la operación hash que implente para calcular el tile correspondiente en base a sólo una matriz binaria lo utilize en https://djarky.itch.io/bonefinder y como es super genial también lo estoy usando en este
pero de que se trata?
en si es una operación que toma los tiles adyacentes y les asigna un valor que sea potencia de 2 y luego los suma de la siguiente forma
[. ][2^1][. ]
[2^2][. ][2^3]
[. ][2^4][. ]
o como gustes
el resultado te dará con exactitud cuáles tiles son sólidos o no.
como en gbdk el joypad() se mapea de manera similar usando las definiciones J_UP J_DOWN J_LEFT y J_RIGHT decidí utilizar estas mismas ya que en el fondo son solo definiciones #define es decir que el compilador cuando ve alguno de estos lo cambia por sus respectivos valores 0x01 0x02... etc (ver include/gb.h)
void calcule_hash(UBYTE U,UBYTE mapa[]){ hash=0x00; if(mapa[U]==0x01){ if(mapa[U-1]==0x00||mapa[U-1]==0x02){ hash+=J_LEFT;} if(mapa[U+1]==0x00||mapa[U+1]==0x02){ hash+=J_RIGHT;} if(mapa[U+10]==0x00||mapa[U+10]==0x02){hash+=J_DOWN;} if(mapa[U-10]==0x00||mapa[U-10]==0x02){hash+=J_UP;} } //fix for indexoff if(U<10) {hash=hash&~J_UP;} if(U>0x50 && U<0x5A){hash=hash&~J_DOWN;} if(U%10==0){ hash=hash&~J_LEFT;} if(U%10==9){ hash=hash&~J_RIGHT;} if(mapa[U]==0x00){hash=0xFF;} if(mapa[U]==0x02){hash=J_A;} } //y luego
void draw_hash(UBYTE X,UBYTE Y,UBYTE U,UBYTE mapa[]){ calcule_hash(U,mapa); switch(hash){ case J_LEFT+J_UP: set_bkg_tiles(X*2,Y*2,2,2,Tile_A);break; case J_UP+J_RIGHT: set_bkg_tiles(X*2,Y*2,2,2,Tile_B);break; case J_RIGHT+J_DOWN:set_bkg_tiles(X*2,Y*2,2,2,Tile_C);break; case J_DOWN+J_LEFT: set_bkg_tiles(X*2,Y*2,2,2,Tile_D);break; case J_UP: set_bkg_tiles(X*2,Y*2,2,2,Tile_E);break; case J_DOWN: set_bkg_tiles(X*2,Y*2,2,2,Tile_F);break; case J_LEFT: set_bkg_tiles(X*2,Y*2,2,2,Tile_G);break; case J_RIGHT: set_bkg_tiles(X*2,Y*2,2,2,Tile_H);break; case J_RIGHT+J_LEFT+J_UP: set_bkg_tiles(X*2,Y*2,2,2,Tile_I);break; case J_RIGHT+J_LEFT+J_DOWN:set_bkg_tiles(X*2,Y*2,2,2,Tile_J);break; case J_UP+J_DOWN+J_LEFT: set_bkg_tiles(X*2,Y*2,2,2,Tile_K);break; case J_UP+J_DOWN+J_RIGHT: set_bkg_tiles(X*2,Y*2,2,2,Tile_L);break; case J_UP+J_DOWN: set_bkg_tiles(X*2,Y*2,2,2,Tile_M);break; case J_LEFT+J_RIGHT: set_bkg_tiles(X*2,Y*2,2,2,Tile_N);break; case J_DOWN+J_UP+J_LEFT+J_RIGHT:set_bkg_tiles(X*2,Y*2,2,2,Tile_O);break; case 0x00:set_bkg_tiles(X*2,Y*2,2,2,Tile_P);break; case 0xFF:set_bkg_tiles(X*2,Y*2,2,2,PSY_MOS);break; case J_A:set_bkg_tiles(X*2,Y*2,2,2,Tile_Hueso);break; } } void draw_map(UBYTE mapa[]){ LOAD_PSY_BKG(rand()%0x0A); for(i=0;i<90;i++){ draw_hash(i%10,i/10,i,mapa); } } //fin
22
Get keychan
keychan
gbdk2020 Gameboy game
Status | In development |
Author | Arky750 |
Genre | Platformer |
Tags | Game Boy, gbdk, gbdk2020, GBJam, Retro |
More posts
- Ho Ho Ho xmas spin-offNov 30, 2023
- ファンサービス (fan service)Nov 01, 2023
- "_jam"Sep 13, 2023
- Gb compo deadlineSep 04, 2023
- 089RAug 31, 2023
- Un bug másAug 27, 2023
- Generando puertas proceduralmente y como hice un soduku sin darme cuentaAug 27, 2023
- New 089KAug 26, 2023
Leave a comment
Log in with itch.io to leave a comment.