Ansat писал(а):
правильно ли я понимаю, что исходники никогда не публиковались (кроме ltk_miles_13_12_11)?
кстати, публиковались ведь. для 1-й версии точно где-то были, только чёт не ищется и с сайта не скачивается. ltk_milesxxx - это уже вольное переложение оригинала
LTagKirov, спс за схему в диптрейсе. так-то немало отличий v2 от v1 - ноги, частота.
кстати, раз уж такая пьянка пошла, то последний вариант прошивки задумывался как какой-то промежуточный описательный язык игровой логики транслируемый либо компилируемый lex'ом/yacc'ом в подходящий вариант для различных железок (v1/v2/asket/pic/stm32). Типа хочешь гранату - берёшь универсальный файлик, прогоняешь его прогой которая с железкой шла и дальше уже по обстоятельствам либо компилируешь полученную прошивку, либо заливаешь байт-код в мк, ну или как оно там в разных железках. Но чёт в реальности всё одно не так и много разных железок и у всех лишь ружья, да повязки, ну и писать на промежуточном варианте код спагетти логики чёт не менее муторно чем просто под каждый вариант написать логику ружья, и как главная отмазка - всё одно больше чем для одной железки код писать не приходится
а вот если люди с разными железяками соберутся, то им есть смысл логику в каком-то промежуточном варианте писать (ради этого предложения весь абзац писал).
например, прошлогодняя прошивка как-то так выглядела сначала (HW/SW - это требования на железку/парсер):
Код:
HW_VERSION 1
SW_VERSION 1
***hardware***
led led_fire
led led_hit requied
led led_empty
button btn_restart name:"New game button"
button btn_mode name:"Burst mode button"
button btn_fire name:"Firebutton"
button switch_mode name:"Burst mode switch"
button btn_reload name:"Reload button"
***variables***
int id default:0 editable range:{0..127} name:"id"
int team default:0 editable range:{0..3} name:"team" values:{"red", "green", "blue", "yellow"}
int health default:1 editable range:{0..255} name:"health"
int rounds default:30 editable range:{0..INF}
int mags default:3 editable range:{0..INF} name:"mags"
bool fire_mode default:false editable values:{"full auto", "semi"}
int burst_size default:false editable range:{0..INF}
bool autoreload default:false editable values:{"manual", "auto"}
bool alive_at_startup default:false editable name:"power on status" values:{"dead", "alive by default"}
sound sound_new_game default:"new_game_sound" editable
sound sound_reload_begin default:"sound_reload_begin" editable
sound sound_reload_end default:"sound_reload_end" editable
sound sound_out_of_ammo default:"sound_out_of_ammo" editable
sound sound_fire default:"fire" editable
sound sound_beep default:"sound_beep" editable
sound sound_beep_beep default:"sound_beep_beep" editable
sound sound_power_on default:"sound_power_on" editable
timer timer_fire
timer timer_shock
timer timer_vulnerable
timer timer_flash
bool ready_to_fire
***code***
function reload_done() {
//перезарядка завершена, устанавливаем количество патронов, сбрасываем значение отсекателя
burst = get_default(burst)
rounds = get_default(rounds)
//играем звук, выключаем лампочку и переводим автомат в состояние готовности
play_sound(sound_reload_done)
ready_to_fire = true
disable_led(led_empty)
}
function reload_weapon() {
if (mags>0) {
mags = mags-1
ready_to_fire = false
start_timer(timer_fire, reload_time, reload_done)
play_sound(sound_reload_begin)
} else {
play_sound(sound_out_of_ammo)
}
}
function flash_done() {
disable_fire_led()
}
function firing_done() {
ready_to_fire = true
}
...
и т.д. по тексту
всякие эти editables, name и values нужны для конфигурирования всего этого хозяйства утилитами (для прошивок где эти утилиты (bluetooth/radio/uart/etc) есть, для остальных - конфиг файлики и т.д.), вообщем, где-то это всё уже обсуждалось и не раз. Но вот если кто возьмется забацать что-нить такое (или не такое, но универсальное) - готов помогать, могу парсер с какого-нить языка под ltk v1/v2 сделать
(в прошлый раз дальше описания в bison'е дело но ушло - всё одно под одну платформу поиск с заменой удобней)
не гербалайф, пасаны - надо лишь всем толпой с описательной частью определиться и усё (ну или взять язык уже существующий, какой-нить простой, добавить ограничений, да ЛТ специфики), а дальше каждый под разные железки свои парсеры сделает.