Son İletiler

#71
Sinclair zx.tr / Ynt: Zx Spectrum Next üçüncü v...
Son İleti Gönderen dodogildo - 13 Kasım 2025, 22:10:50
Benim başıma bir talihsizlik geldi.
#72
Sinclair zx.tr / Ynt: Zx Spectrum Next üçüncü v...
Son İleti Gönderen unay - 13 Kasım 2025, 18:18:48
KS3'leriniz ne durumda, var mı teslim edilen/ulaşan?
#73
Amstrad / Ynt: Duke M4 Board Üretimine D...
Son İleti Gönderen Hifly - 05 Kasım 2025, 15:06:54
Alıntı yapılan: unay - 05 Kasım 2025, 14:45:29
Alıntı yapılan: Hifly - 05 Kasım 2025, 14:37:51
Alıntı yapılan: unay - 05 Kasım 2025, 13:29:21
PCB siparişi vermiş olabilirim.

Olasılıklar:

1- Siparişi verdi, onay sayfası çıkmadı o yüzden emin olamadı
2- Schrödinger'in kedisi hesabı kutuyu açmadan bilemiyor, sipariş süper pozisyon durumunda.

Amstrad camiası adına verildiğini umuyoruz :)

MSX için bir gazla girdiğim Spider Flash ve DC-600 floppy controller işini 6 ayda bitirince böyle ucu açık söylemler...

PCB'ler yolda. STM32F407 çipde gelecek, kalanlar yurtiçinden temin edilir sanırım.
Geriye bunları bir araya getirecek birini bulmak kalıyor :)

Amstrad camiası dediğin zaten 3,5 kişi falan herhalde


Bir Amstradcı 10 retrocu gücündedir derler, azımsamayalım kendimizi :P

Ben bir araya getirebilirim.
#74
Amstrad / Ynt: Duke M4 Board Üretimine D...
Son İleti Gönderen unay - 05 Kasım 2025, 14:45:29
Alıntı yapılan: Hifly - 05 Kasım 2025, 14:37:51
Alıntı yapılan: unay - 05 Kasım 2025, 13:29:21
PCB siparişi vermiş olabilirim.

Olasılıklar:

1- Siparişi verdi, onay sayfası çıkmadı o yüzden emin olamadı
2- Schrödinger'in kedisi hesabı kutuyu açmadan bilemiyor, sipariş süper pozisyon durumunda.

Amstrad camiası adına verildiğini umuyoruz :)

MSX için bir gazla girdiğim Spider Flash ve DC-600 floppy controller işini 6 ayda bitirince böyle ucu açık söylemler...

PCB'ler yolda. STM32F407 çipde gelecek, kalanlar yurtiçinden temin edilir sanırım.
Geriye bunları bir araya getirecek birini bulmak kalıyor :)

Amstrad camiası dediğin zaten 3,5 kişi falan herhalde
#75
Amstrad / Ynt: Duke M4 Board Üretimine D...
Son İleti Gönderen Hifly - 05 Kasım 2025, 14:37:51
Alıntı yapılan: unay - 05 Kasım 2025, 13:29:21
PCB siparişi vermiş olabilirim.

Olasılıklar:

1- Siparişi verdi, onay sayfası çıkmadı o yüzden emin olamadı
2- Schrödinger'in kedisi hesabı kutuyu açmadan bilemiyor, sipariş süper pozisyon durumunda.

Amstrad camiası adına verildiğini umuyoruz :)
#76
Amstrad / Ynt: Duke M4 Board Üretimine D...
Son İleti Gönderen unay - 05 Kasım 2025, 13:29:21
PCB siparişi vermiş olabilirim.
#77
Amstrad / Ynt: Duke M4 Board Üretimine D...
Son İleti Gönderen Hifly - 05 Kasım 2025, 13:11:59
Alıntı yapılan: hades - 20 Ekim 2025, 21:49:06
Bir kaç sene önce çizdiğim ddi pcb si. Yapmak isteyen olursa gerber dosyalarını göndereyim. Çalışır mı çalışmaz mı orasını bilemem.
Ekleme: 2018'de çizmişim.

PCB'yi hallettikten ve devre elemanlarını yerleştirdikten sonra yapılması gerekenler nedir? Yazılım vs.?

#78
Amstrad / Ynt: Amstrad CPC / CPC Plus / ...
Son İleti Gönderen unay - 01 Kasım 2025, 18:10:57
Dün itibarı ile yayınlandı: Sonic GX
İsminden de anlaşılacağı üzere GX4000 ve CPC PLUS serisi için Sonic.

7 yıllık bir çalışmanın ardından (benim Plus sahibi olmamı beklemişler) son hali paylaşılan Sonic GX çeşitli laglar içerse de GX4000/PLUS platformunun limitlerini zorlamış görünüyor. (Haber sitesi yazarı gibi oldu, olduğu kadar artık)
Cpr dosyasını ekliyorum, buna bi kartuş yapmak şart artık.



#79
Diğer Retro Sistemler / Ynt: MSX'te DC-600 ile SPIDER ...
Son İleti Gönderen unay - 26 Ekim 2025, 07:54:23
Şahaneymiş, benim kızlar bayılacak :)
Eline sağlık.
#80
Diğer Retro Sistemler / Ynt: MSX'te DC-600 ile SPIDER ...
Son İleti Gönderen Ref - 25 Ekim 2025, 23:51:55
buyrun size spider flash'a atılacak bir rom :)  "the inevitable end"

el emeği göz nuru. BlueMSX ile denedim çalışıyor ama MSX1 only çünkü ColecoVision geliştirme kitini kullandım (libCV). 8bitworkshop'ta hazır var, incelemek isteyenler için kodu da ekliyorum.

[attachment=0,msg15691]

MSX'ten zerre anlamadığım için teyp kasedi dosyası üretmeyi bilmiyorum. Öyle birşey var mı onu da bilmiyorum. Hangi format? Nasıl paketlenir? derlenmiş kod ~3KB civarı, teyple de rahat yüklenecek bir boyut.

Neyse sonuçta KARTUŞ haliyle ekte veriyorum. BlueMSX'de standard MSX açıp, file>cartridge  slot 1> insert seçip zip'in içindeki binary dosyayı verin.


// Ref 2025  -- https://zx.tr/ret
// "the inevitable end"

#include <stdlib.h>
#include <cv.h>
#include <cvu.h>
#include "common.h"

byte b;
word pg;
byte logo_y, logo_x;


byte draw_y;
byte draw_x;

//  LUT çünk RND komutu ~1 frame sürüyor, saçmalık
byte random_color_table[256];
byte random_index = 0;

//  Sprite pattern isimleri
#define SPRITE_NAME_ref          0
#define SPRITE_NAME_BALL_ROUND    4
#define SPRITE_NAME_BALL_STRETCH  8
#define SPRITE_NAME_BALL_SQUASH    12

//  üşendim 16x16 sprite kullandım bu yüzden boş spritelara ihtiyacım var
const unsigned char blank_pattern[8] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

void setup_random_table() {
    int i;
    for (i = 0; i < 256; i++) {
        random_color_table[i] = (rand() & 14) + 1;
    }
}

void vdp_setup() {
  cv_set_screen_active(false);
  cv_set_screen_mode(CV_SCREENMODE_STANDARD);
  cv_set_image_table(IMAGE);
  cv_set_character_pattern_t(PATTERN);
  cv_set_color_table(COLOR);
  cv_set_sprite_pattern_table(SPRITE_PATTERNS);
  cv_set_sprite_attribute_table(SPRITES);
  cv_set_sprite_big(true);
}


const char *all_logos[3][5] = {
    { "RRR  EEEE TTT RRR  OOO    J EEEE N  N", "R  R E    T  R  R O  O  J E    NN  N", "RRR  EEE  T  RRR  O  O  J EEE  N N N", "R R  E    T  R R  O  O  J E    N  NN", "R  R EEEE  T  R  R  OOO  JJ  EEEE N  N" },
    { " SSSSPPP  I DDD  EEEEERRR  FFFFFL    A  SSS H  H", "S      P I D  D E      R F    L    A A S    H  H", " SSS PPP  I D  D EEE  RRR  FFF  L  AAAAA SSS HHHHH", "  S P    I D  D E    R R  F    L  A  A  S H  H", "SSS  P    I DDD  EEEE R  RRF    LLLLA  ASSS  H  H" },
    {
        "TTTTT H  H X  X    222    U  U N  N  AAA  Y  Y",
        "  T  H  H  X X        2  U  U NN  N A  A  Y Y ",
        "  T  HHHHH  X      22    U  U N N N AAAAA  Y  ",
        "  T  H  H  X X    2      U  U N  NN A  A  Y  ",
        "  T  H  H X  X    2222    UUU  N  N A  A  Y  "
    }};

const byte logo_x_positions[3] = {12, 7, 8};

//ref bitmapı
const unsigned char ref_sprite_pattern[16] = {
    0x06, 0x18, 0xA0, 0xC1, 0x92, 0xAA, 0xBA, 0xA7, 0x32, 0x1A, 0x02, 0x04, 0x04, 0x08, 0x30, 0x00
};

//animasyon bilgimizi konuşturalım yani
const unsigned char ball_round_pattern[8] = {
    0x00, 0x3C, 0x7E, 0x7E, 0x7E, 0x7E, 0x3C, 0x00
};
const unsigned char ball_stretch_pattern[8] = {
    0x18, 0x3C, 0x7E, 0x7E, 0x7E, 0x7E, 0x3C, 0x18
};
const unsigned char ball_squash_pattern[8] = {
    0x00, 0x00, 0x00, 0x3C, 0x7E, 0xFF, 0xFF, 0x7E
};

//bu colecovision structu
struct cvu_sprite my_sprite_attributes[2];

void setup_my_sprite_pattern() {
  // Ref (16x16) aslında iki tane 8'lik kullanmak vardı, chetçipiti'ye kandım yanlış başladım, şimdi ceremesini çek işte
  cvu_memtovmemcpy(SPRITE_PATTERNS + (SPRITE_NAME_ref * 8), ref_sprite_pattern, sizeof(ref_sprite_pattern));
  cvu_memtovmemcpy(SPRITE_PATTERNS + (2 * 8), blank_pattern, sizeof(blank_pattern));
  cvu_memtovmemcpy(SPRITE_PATTERNS + (3 * 8), blank_pattern, sizeof(blank_pattern));

  // YUVARLAK TOP Bloku
  cvu_memtovmemcpy(SPRITE_PATTERNS + (SPRITE_NAME_BALL_ROUND * 8), ball_round_pattern, sizeof(ball_round_pattern));
  cvu_memtovmemcpy(SPRITE_PATTERNS + (5 * 8), blank_pattern, sizeof(blank_pattern));
  cvu_memtovmemcpy(SPRITE_PATTERNS + (6 * 8), blank_pattern, sizeof(blank_pattern));
  cvu_memtovmemcpy(SPRITE_PATTERNS + (7 * 8), blank_pattern, sizeof(blank_pattern));

  // UZAMIŞ TOP Bloku
  cvu_memtovmemcpy(SPRITE_PATTERNS + (SPRITE_NAME_BALL_STRETCH * 8), ball_stretch_pattern, sizeof(ball_stretch_pattern));
  cvu_memtovmemcpy(SPRITE_PATTERNS + (9 * 8), blank_pattern, sizeof(blank_pattern));
  cvu_memtovmemcpy(SPRITE_PATTERNS + (10 * 8), blank_pattern, sizeof(blank_pattern));
  cvu_memtovmemcpy(SPRITE_PATTERNS + (11 * 8), blank_pattern, sizeof(blank_pattern));

  // YAYILMIŞ TOP Bloku
  cvu_memtovmemcpy(SPRITE_PATTERNS + (SPRITE_NAME_BALL_SQUASH * 8), ball_squash_pattern, sizeof(ball_squash_pattern));
  cvu_memtovmemcpy(SPRITE_PATTERNS + (13 * 8), blank_pattern, sizeof(blank_pattern));
  cvu_memtovmemcpy(SPRITE_PATTERNS + (14 * 8), blank_pattern, sizeof(blank_pattern));
  cvu_memtovmemcpy(SPRITE_PATTERNS + (15 * 8), blank_pattern, sizeof(blank_pattern));
}


void multicolor_fullscreen_image_table(word ofs) {
  byte x,y;
  for (y=0; y<48; y++) { for (x=0; x<32; x++) { cvu_voutb(x + (y>>2)*32, ofs++); } }
}
void setup_multicolor() {
  cvu_vmemset(0, 0, 0x4000);
  cv_set_image_table(IMAGE);
  cv_set_character_pattern_t(PATTERN);
  cv_set_screen_mode(CV_SCREENMODE_MULTICOLOR);
  multicolor_fullscreen_image_table(IMAGE);
}
void set_pixel(byte x, byte y, byte color) {
  if (x >= 64 || y >= 48) return;
  pg = (x>>1)*8 + (y & 7) + (y & ~7)*32 + PATTERN;
  b = cvu_vinb(pg);
  if (x&1) b = color | (b & 0xf0); else b = (color<<4) | (b & 0xf);
  cvu_voutb(b, pg);
}

// şu anda 25FPS'e göre ayarlandı. 50fps için bunu 20 yapın
#define PIXELS_PER_FRAME 35

const char bounce_table[16] = {
    0, -3, -6, -9, -12, -14, -15, -16, -16, -15, -14, -12, -9, -6, -3, 0
};
const byte ref_base_y = 20;
const byte ball_base_y = 175;
byte bounce_step = 0;


#ifdef __MAIN__

void main() {
 
  byte current_logo_index = 0;
  word display_counter = 0;
  byte pixels_drawn_this_frame;

 
  byte ball_x = 120;
  char ball_direction_x = 1;

  vdp_setup();
  setup_multicolor();
  setup_random_table();
  setup_my_sprite_pattern();

 
  my_sprite_attributes[0].y = ref_base_y;
  my_sprite_attributes[0].x = 240;
  my_sprite_attributes[0].name = SPRITE_NAME_ref;
  my_sprite_attributes[0].tag = CV_COLOR_LIGHT_BLUE;
 
  my_sprite_attributes[1].y = ball_base_y;
  my_sprite_attributes[1].x = ball_x;
  my_sprite_attributes[1].name = SPRITE_NAME_BALL_ROUND;
  my_sprite_attributes[1].tag = CV_COLOR_WHITE;

  logo_x = logo_x_positions[current_logo_index];
  logo_y = 21;
  draw_x = 0;
  draw_y = 0;

  cv_set_screen_active(true);

  while(1) {

    my_sprite_attributes[0].y = ref_base_y;

    my_sprite_attributes[1].y = ball_base_y + bounce_table[bounce_step];
    ball_x += ball_direction_x;
    if (ball_x >= 248) {
        ball_direction_x = -1;
    } else if (ball_x <= 0) {
        ball_direction_x = 1; 
    }
    my_sprite_attributes[1].x = ball_x;

    if (bounce_step >2) {
        my_sprite_attributes[1].name = SPRITE_NAME_BALL_ROUND;
    } else if (bounce_step == 0 || bounce_step == 15) {
        my_sprite_attributes[1].name = SPRITE_NAME_BALL_SQUASH;
    } else {
        my_sprite_attributes[1].name = SPRITE_NAME_BALL_STRETCH;
    }
   
    bounce_step = (bounce_step + 1) & 15;
   
    // VDP güncelle -- Daha fazla bilgi için retroskop'un yeni sezonunu izleyiniz! :) YAKINDA!
    cvu_memtovmemcpy(SPRITES, my_sprite_attributes, sizeof(my_sprite_attributes));

    // V-Sync bekle ki bu zx spectrumdan arakladığım bir taktik oldu
    __asm__("EI");   
    __asm__("halt");


    display_counter++;
    if (display_counter >= 180) {
        display_counter = 0;
        current_logo_index = (current_logo_index + 1) % 3;
        logo_x = logo_x_positions[current_logo_index];
        draw_x = 0;
        draw_y = 0;
        cvu_vmemset(PATTERN, 0, 0x1800);
    }
   
    pixels_drawn_this_frame = 0;
    while (pixels_drawn_this_frame < PIXELS_PER_FRAME) {
        if (all_logos[current_logo_index][draw_y][draw_x] == '\0') {
            draw_x = 0;
            draw_y++;
            if (draw_y >= 5) { draw_y = 0; }
            continue;
        }
        if (all_logos[current_logo_index][draw_y][draw_x] != ' ') {
            set_pixel(logo_x + draw_x, logo_y + draw_y, random_color_table[random_index]);
            random_index++;
            pixels_drawn_this_frame++;
        }
        draw_x++;
    }
  }
}

#endif

//bu satırın bir altında boş bir satır olmalı, gerekirse basın enter'a burda altı boş olsun