Комментарии 18
как происходит доставка конечного бинарника на Playdate, у них есть какой-то собственный стор или только локальная установка? интересен момент именно шаринга между юзерами
Elite с ZX-Spectrum чудно смотрелось бы на этой приставке.
С ArrayImpl немного не так должно быть.
В этом был бы смысл, если бы Array был доступен пользователю в виде struct Array { ..... struct ArrayImpl *pimpl; }
Так бы мы приватные внутренности прятали внутри этой структуры. А тут вся структура Array приватная.
Вот-вот: https://habr.com/ru/articles/753272/
// array.h
extern PlaydateAPI *api;
typedef struct Array Array;
void ArrayClear(Array *array);
// array.c
struct Array {
void *data;
int capacity;
int size;
// int itemSize;
};
void ArrayClear(Array *array) {
void *data = array->data;
if (data) {
api->system->realloc(data, 0);
array->capacity = 0;
array->size = 0;
}
}
А где вы брали консоль? Она ж у авторов 200$ стоит (уже не говоря про доставку) и на Али 700$ (тоже без доставки)
я брал подержанную на ebay когда был в Майами в прошлом году за 220$ или 250$ - уже не помню точно. За два дня доставили
Интересно, откуда такая цена сумасшедшая? Да там себестоимость на уровне кнопочной звонилки будет. По сути примитивнейшая борда с дешёвым arm-процом, экранчик, и пластиковый корпус с парой кнопок. Такое вообще по 10$ должно продаваться
С одной стороны интересное устройство, даже руки иной раз чешутся попробовать. Но, блин, почему не 4 кнопки действия? В чем была сложность из добавить? Чисто упор на гиммик в лице ручки? Но это удобно как дополнение, а 4 кнопки бы позволило добавить более комплексные игры. Ех...
На первый взгляд можно подумать «ну и кто в такое играет?». Однако я щас без преувеличений скажу, что уже для Playdate сделано более 800 игр. То есть, в отличие от миллиона неизвестных консолей, которые сегодня создаются для тех, кто вспоминает детство за сегой и дэнди, пардон, нинтендой, у Playdate реально есть активное сообщество.
ну никто спорить не станет, что люди могут объединиться в любом порыве и творить разное. Но это совсем не обязательно какой-то разумный порыв.
Приставка просто неинтересна по двум основным параметрам - цена и управление.
Подскажите, а как у неё устроено разделение памяти и загрузка игр? В официальной документации этот момент не затронут - вроде как знать это прикладным разработчикам не нужно
У неё ведь "основной процессор" (на котором крутится игра) не имеет MMU? Что мешает игре окирпичить всё устройство?
Крутая статья, спасибо. Обычно страшно кринжую, когда авторы пытаются в неформальный слог, но у вас получилось иначе. Ну ты понел.
Версия стандарта Си не указана, компилятор не указан.
Может, пора использовать __cleanup__ variable attribute
? Даже в ядре линукса начали писать макросы с ним. https://habr.com/ru/articles/503536/
Ещё: может, вместо того, чтобы таскать десятки указателей, не проще сделать один статический указатель на playdate->system->realloc и инициализировать его в kEventInit?
// main.c
PlaydateAPI *api = NULL;
Game *game = NULL;
int eventHandler(PlaydateAPI *playdate, …) {
switch (event) {
case kEventInit:
api = playdate;
// …
// array.h
extern PlaydateAPI *api;
void ArrayClear(Array *array);
// array.c
void ArrayClear(Array *array) {
// …
vpid *data = arrayImpl->data;
if (data) {
api->system->realloc(data, 0);
arrayImpl->capacity = 0;
arrayImpl->size = 0;
}
}
Делаю игрулю на Playdate на чистом C. Глава 1