{"id":303378,"date":"2020-05-11T15:00:36","date_gmt":"2020-05-11T15:00:36","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=303378"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=303378","title":{"rendered":"\u0425\u0430\u043a\u0438\u043d\u0433 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e Sonic the Hedgehog \u0434\u043b\u044f Sega"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/501398\/\">\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043b\u0435\u0433\u0435\u043d\u0434\u0430\u0440\u043d\u043e\u0439 \u0438\u0433\u0440\u044b Sonic the Hedgehog \u0434\u043b\u044f \u043f\u0440\u0438\u0441\u0442\u0430\u0432\u043a\u0438 Sega Mega Drive, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0435\u0435 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438\u043b\u0438, \u043a\u0430\u043a \u0435\u0449\u0435 \u0433\u043e\u0432\u043e\u0440\u044f\u0442, \u0445\u0430\u043a\u0438\u043d\u0433\u0430. \u042d\u0442\u0430 \u0438\u0433\u0440\u0430 \u043d\u0430\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 <a href=\"http:\/\/info.sonicretro.org\/Sonic_hacks\" rel=\"nofollow\">\u0441\u043e\u0442\u043d\u0438 \u0445\u0430\u043a\u043e\u0432<\/a>, \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0438\u0445 \u043a\u0430\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u044b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b (\u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a <a href=\"https:\/\/www.youtube.com\/watch?v=24gnW3iAwYU\" rel=\"nofollow\">Pana Der Hejhog<\/a> \u0438\u043b\u0438 <a href=\"http:\/\/info.sonicretro.org\/Sonic_1_Remastered_(hack)\" rel=\"nofollow\">Sonic Remastered<\/a>), \u0442\u0430\u043a \u0438 \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0435 \u0438 \u0434\u0430\u0436\u0435 \u0436\u0443\u0442\u043a\u043e\u0432\u0430\u0442\u044b\u0435 (\u0432\u0440\u043e\u0434\u0435 <a href=\"https:\/\/www.youtube.com\/watch?v=ThSpW33w2gA\" rel=\"nofollow\">An Ordinary Sonic ROM Hack<\/a>). \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a \u0438\u0445 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c, \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u043a\u0430\u043a \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0430\u0441\u0441\u0435\u043c\u0435\u0431\u043b\u0435\u0440\u0430 Motorola 68K (\u043e\u0431\u044b\u0447\u043d\u043e \u0438\u0433\u0440\u044b \u0434\u043b\u044f \u043f\u0440\u0438\u0441\u0442\u0430\u0432\u043e\u043a \u0442\u0435\u0445 \u0432\u0440\u0435\u043c\u0435\u043d \u043f\u0438\u0441\u0430\u043b\u0438\u0441\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435), \u043e\u0442\u043a\u0443\u0434\u0430 \u0432\u0437\u044f\u0442\u044c \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0438\u0433\u0440\u044b \u0438 \u043a\u0430\u043a\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u0438\u043c\u0435\u0435\u0442 \u0435\u0435 \u0434\u0432\u0438\u0436\u043e\u043a.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ju\/oj\/e0\/juoje0s6s3resgmg5p6hbgos3dy.png\" alt=\"Sonic hacks\"><\/p>\n<p>  <\/p>\n<p>\u0414\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 ROM-\u0444\u0430\u0439\u043b\u043e\u0432 \u0434\u043b\u044f Sega \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430 \u0438 \u0434\u0435\u0431\u0430\u0433\u0433\u0435\u0440\u0430 <a href=\"https:\/\/www.hex-rays.com\/products\/ida\/\" rel=\"nofollow\">IDA Pro<\/a>. \u0417\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043a\u0440\u043e\u043f\u043e\u0442\u043b\u0438\u0432\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438, \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043f\u0440\u0438\u0447\u0435\u0441\u044b\u0432\u0430\u043d\u0438\u044f \u0441\u044b\u0440\u043e\u0433\u043e \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0434\u0435\u0431\u0430\u0433\u0433\u0435\u0440\u0430 (\u0438 \u0441\u043c\u0435\u043a\u0430\u043b\u043a\u0438). \u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b Sega Mega Drive \u0438 \u0438\u0433\u0440 \u0434\u043b\u044f \u043d\u0435\u0435.<\/p>\n<p>  <\/p>\n<p>\u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u043d\u0430 GitHub \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438 \u0440\u0430\u0437\u043c\u0435\u0447\u0435\u043d\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0432\u0441\u0435\u0445 \u0438\u0433\u0440 \u0441\u0435\u0440\u0438\u0438 Sonic the Hedgehog, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u044d\u043d\u0442\u0443\u0437\u0438\u0430\u0441\u0442\u0430\u043c\u0438 \u043f\u0440\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435 \u0441\u0430\u0439\u0442\u0430 <a href=\"https:\/\/sonicretro.org\" rel=\"nofollow\">Sonic Retro<\/a>. \u041b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0447\u0435\u043d \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0435\u0440\u0432\u043e\u0439 \u0438\u0433\u0440\u044b \u0441\u0435\u0440\u0438\u0438. \u042d\u0442\u0430 \u0432\u0435\u0440\u0441\u0438\u044f \u043a\u043e\u0434\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 <a href=\"https:\/\/github.com\/sonicretro\/s1disasm\" rel=\"nofollow\">sonicretro \/ s1disasm<\/a> \u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043d\u0430 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0432 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0438\u0433\u0440\u0443\u0448\u043a\u0438 \u043d\u0430\u0447\u043d\u0435\u043c \u0441 \u0442\u0435\u043e\u0440\u0438\u0438.<\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<h2 id=\"tehnicheskiy-obzor-pristavki\">\u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u043f\u0440\u0438\u0441\u0442\u0430\u0432\u043a\u0438<\/h2>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/it\/te\/nm\/ittenmcitt2n0_xhwwnt6d3gupe.jpeg\" align=\"right\" width=\"250\">  <\/p>\n<p>Sega Mega Drive (\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u0432 \u0421\u0428\u0410 \u043a\u0430\u043a Sega Genesis) \u043e\u0441\u043d\u0430\u0449\u0435\u043d\u0430 32-\u0431\u0438\u0442\u043d\u044b\u043c \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c Motorola MC68000 (\u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u043d\u043e Motorola 68K) \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0437\u0432\u0443\u043a\u043e\u0432\u044b\u043c \u0441\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c Zilog Z80 (\u0432\u0437\u0430\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 Z80 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u0449\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c). \u041e\u0431\u044a\u0435\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 (RAM) \u2013\u00a064K. \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u044d\u043a\u0440\u0430\u043d\u0430 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 (\u0432 \u0430\u043c\u0435\u0440\u0438\u043a\u0430\u043d\u0441\u043a\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438) \u2013 320&#215;224 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439.<\/p>\n<p>  <\/p>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 Motorola 68K \u0432 \u0441\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0431\u044b\u043b \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d. \u042d\u0442\u043e\u0442 \u0447\u0438\u043f \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u043b\u0441\u044f \u0432 \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445, \u043e\u0442 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0445 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u0432 \u0438 \u0438\u0433\u0440\u043e\u0432\u044b\u0445 \u043f\u0440\u0438\u0441\u0442\u0430\u0432\u043e\u043a \u0434\u043e <a href=\"https:\/\/history.nasa.gov\/computers\/Ch4-8.html\" rel=\"nofollow\">\u043a\u043e\u0441\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0448\u0430\u0442\u0442\u043b\u043e\u0432<\/a>. \u041e\u0434\u043d\u0430 \u0438\u0437 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0439 Motorola 68K \u0434\u0430\u0436\u0435 \u0431\u044b\u043b\u0430 <a href=\"https:\/\/everymac.com\/systems\/apple\/mac_classic\/specs\/mac_128k.html#macspecs1\" rel=\"nofollow\">\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430<\/a> \u0432 \u043b\u0435\u0433\u0435\u043d\u0434\u0430\u0440\u043d\u043e\u043c Apple Macintosh.<\/p>\n<p>  <\/p>\n<p>\u0413\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0430 Mega Drive \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 \u0432\u0438\u0434\u0435\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435 Yamaha YM7101 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0434\u0432\u0443\u043c\u044f \u0441\u043b\u043e\u044f\u043c\u0438 \u0444\u043e\u043d\u0430 \u0438 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0443 \u0434\u043e 80 \u0441\u043f\u0440\u0430\u0439\u0442\u043e\u0432 \u043f\u043e\u0432\u0435\u0440\u0445 \u043d\u0438\u0445. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u0432 \u0438\u0433\u0440\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043d\u0430 \u0434\u0430\u043b\u0435\u0435; \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043e \u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u0432 Sega Mega Drive \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 <a href=\"https:\/\/habr.com\/ru\/post\/471914\/\">&quot;\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 Sega Mega Drive: Video Display Processor&quot;<\/a>.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0438\u0433\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <a href=\"http:\/\/john.ccac.rwth-aachen.de:8000\/as\/\" rel=\"nofollow\">\u043c\u0430\u043a\u0440\u043e\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440 AS<\/a>. \u041d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u044d\u0442\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0441\u0435\u0433\u043e 82 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438. \u0414\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f: \u043f\u043e \u043f\u043e\u0434\u0441\u0447\u0435\u0442\u0430\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f ResearchGate \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 Intel Core I7 <a href=\"https:\/\/www.researchgate.net\/post\/What_is_the_number_of_instructions_in_a_modern_CPU\" rel=\"nofollow\">\u0438\u043c\u0435\u0435\u0442 338 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439<\/a>.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0438\u043c\u0435\u0435\u0442 \u0432\u043e\u0441\u0435\u043c\u044c 32-\u0431\u0438\u0442\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: <code>D0<\/code>\u2013<code>D7<\/code>. \u0412\u0441\u0435 \u044d\u0442\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u0438\u0433\u0440\u0430\u0445 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u043e\u0432 \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439. \u0422\u0430\u043a\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u043e\u0441\u0435\u043c\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 <em>\u0430\u0434\u0440\u0435\u0441\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432<\/em> <code>A0<\/code>\u2013<code>A7<\/code>. \u0410\u0434\u0440\u0435\u0441\u043d\u044b\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439 \u043d\u0430 \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u0445 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\u043d\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 A7 \u043f\u043e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0443 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u043c \u0441\u0442\u0435\u043a\u0430 \u0438 \u0438\u043c\u0435\u0435\u0442 \u0430\u043b\u0438\u0430\u0441 <code>SP<\/code>.<\/p>\n<p>  <\/p>\n<p>\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u043c\u043e\u0433\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u0442\u0440\u0435\u0445 \u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u0440\u0430\u0437\u0440\u044f\u0434\u043d\u043e\u0441\u0442\u0438. \u0421\u0443\u0444\u0444\u0438\u043a\u0441 <code>.l<\/code> (long) \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0432 32-\u0431\u0438\u0442\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435. \u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0443\u0444\u0444\u0438\u043a\u0441\u043e\u0432 <code>.w<\/code> (word) \u0438 <code>.b<\/code> (byte) \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043c\u043b\u0430\u0434\u0448\u0438\u043c\u0438 16-\u044e \u0438\u043b\u0438 8-\u044e \u0431\u0438\u0442\u0430\u043c\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u043e\u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e.<\/p>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 Motorola 68K.<\/p>\n<p>  <\/p>\n<h3 id=\"operaciya-kopirovaniya\">\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/h3>\n<p>  <\/p>\n<p><code>move<\/code> \u2013 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0432 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u044b:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>move.l #48, d4<\/code> \u2013 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0434\u0435\u0441\u044f\u0442\u0438\u0447\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e 48 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 <code>d4<\/code>.<\/li>\n<li><code>move.w d5, d6<\/code> \u2013 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u043b\u0430\u0434\u0448\u0438\u0435 16 \u0431\u0438\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 <code>d5<\/code> \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 <code>d6<\/code>.<\/li>\n<li><code>move.w #$12FF, obStatus(a0)<\/code> \u2013 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e 12FF \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438, \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043e\u0439 <code>obStatus<\/code> \u0441\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u043c, \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 <code>a0<\/code>.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0432\u044b\u0448\u0435, \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u0435\u0441\u044f\u0442\u0438\u0447\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0432 \u044d\u0442\u043e\u043c \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0444\u0438\u043a\u0441 <code>#<\/code>. \u0414\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0448\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0442\u0438\u0440\u0438\u0447\u043d\u044b\u0445 \u0447\u0438\u0441\u043b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0444\u0438\u043a\u0441 <code>#$<\/code>.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u0430 \u0432 \u0441\u043a\u043e\u0431\u043a\u0430\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u043f\u043e \u0442\u0430\u043a\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>move.l #5, (a0)<\/code> \u2013 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0434\u0435\u0441\u044f\u0442\u0438\u0447\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e 5 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438, \u0445\u0440\u0430\u043d\u044f\u0449\u0435\u043c\u0443\u0441\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 <code>a0<\/code>.<\/li>\n<li><code>move.l (a1), d2<\/code> \u2013 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443, \u0445\u0440\u0430\u043d\u044f\u0449\u0435\u043c\u0443\u0441\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 <code>a1<\/code>, \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 <code>d2<\/code>.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u043e\u0439 \u0440\u0435\u0436\u0438\u043c \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0430\u0434\u0440\u0435\u0441\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 (<code>a*<\/code>).<\/p>\n<p>  <\/p>\n<h3 id=\"arifmeticheskie-operacii\">\u0410\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438<\/h3>\n<p>  <\/p>\n<ul>\n<li><code>add<\/code> \u2013 \u043f\u0440\u0438\u0431\u0430\u0432\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0430.<\/li>\n<li><code>sub<\/code> \u2013\u00a0\u043e\u0442\u043d\u044f\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u043e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0430.<\/li>\n<li><code>mulu<\/code> \u2013 \u0431\u0435\u0437\u0437\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435; <code>muls<\/code> \u2013 \u0437\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435.<\/li>\n<li><code>divu<\/code>\u00a0\u2013 \u0431\u0435\u0437\u0437\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u0434\u0435\u043b\u0435\u043d\u0438\u0435; <code>divs<\/code> \u2013 \u0437\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u0434\u0435\u043b\u0435\u043d\u0438\u0435.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u044b:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>add.b #$08, d0<\/code> \u2013 \u043f\u0440\u0438\u0431\u0430\u0432\u0438\u0442\u044c \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e 08 \u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 <code>d0<\/code>.<\/li>\n<li><code>sub.w (v_screenposx).w, d1<\/code> \u2013 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 <code>d1<\/code> \u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <code>v_screenposx<\/code> (\u0432 16-\u0440\u0430\u0437\u0440\u044f\u0434\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435).<\/li>\n<li><code>mulu.w #10, d0<\/code> \u2013\u00a0\u0443\u043c\u043d\u043e\u0436\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 <code>d0<\/code> \u043d\u0430 10 (\u0447\u0438\u0441\u043b\u043e \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 <code>d0<\/code> \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0431\u0435\u0437\u0437\u043d\u0430\u043a\u043e\u0432\u044b\u043c).<\/li>\n<li><code>divs.w #$68, d2<\/code> \u2013\u00a0\u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 <code>d2<\/code> \u043d\u0430 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e 68 (\u0447\u0438\u0441\u043b\u043e \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 <code>d2<\/code> \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0437\u043d\u0430\u043a\u043e\u0432\u044b\u043c).<\/li>\n<\/ul>\n<p>  <\/p>\n<h3 id=\"operacii-upravleniya-potokom-vypolneniya\">\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0442\u043e\u043a\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f<\/h3>\n<p>  <\/p>\n<ul>\n<li><code>jmp<\/code>, <code>bra<\/code> \u2013 \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434.<\/li>\n<li><code>jsr<\/code>, <code>bsr<\/code> \u2013 \u0432\u044b\u0437\u043e\u0432 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, <code>rts<\/code> \u2013 \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u0438\u0437 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b (\u0430\u043d\u0430\u043b\u043e\u0433\u0438 <code>call<\/code> \u0438 <code>ret<\/code> \u0432 x86).<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u044b:<\/p>\n<p>  <\/p>\n<pre><code class=\"lisp\">jmp .foo  ; \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u043c\u0435\u0442\u043a\u0443 .foo nop       ; \u0434\u0430\u043d\u043d\u0430\u044f \u043f\u0443\u0441\u0442\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f (nop) \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 .foo:     ; \u043c\u0435\u0442\u043a\u0430 .foo<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"lisp\">SubRoutine:  ; \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b SubRoutine nop rts          ; \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u0438\u0437 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"lisp\">bsr SubRoutine  ; \u0432\u044b\u0437\u043e\u0432 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b SubRoutine<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"operacii-vetvleniya\">\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u044f<\/h3>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435 68K \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440 <code>CCR<\/code> (Condition Code Register). \u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 <code>cmp<\/code>, <code>tst<\/code> \u0438 <code>btst<\/code> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0431\u0438\u0442\u044b (\u0444\u043b\u0430\u0433\u0438) \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0442\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u0445 \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 <code>beq<\/code>, <code>bne<\/code>, <code>bge<\/code>, <code>ble<\/code> \u0438 \u0434\u0440\u0443\u0433\u0438\u0445.<\/p>\n<p>  <\/p>\n<ul>\n<li><code>cmp<\/code> \u2013\u00a0\u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.<\/li>\n<li><code>tst<\/code> \u2013 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441 \u043d\u0443\u043b\u0435\u043c.<\/li>\n<li><code>btst<\/code> \u2013 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u0431\u0438\u0442 \u0441 \u043d\u0443\u043b\u0435\u043c.<\/li>\n<li><code>beq<\/code>\/<code>bne<\/code> \u2013 \u043f\u0435\u0440\u0435\u0439\u0442\u0438, \u0435\u0441\u043b\u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0431\u044b\u043b\u0438 \u0440\u0430\u0432\u043d\u044b\/\u043d\u0435 \u0440\u0430\u0432\u043d\u044b.<\/li>\n<li><code>bge<\/code>\/<code>ble<\/code> \u2013\u00a0\u043f\u0435\u0440\u0435\u0439\u0442\u0438, \u0435\u0441\u043b\u0438 \u0432\u0442\u043e\u0440\u043e\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u0431\u043e\u043b\u044c\u0448\u0435\/\u043c\u0435\u043d\u044c\u0448\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u044b:<\/p>\n<p>  <\/p>\n<pre><code class=\"lisp\">cmp.w   #32,d0  ; \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c d0 \u0438 32 bge.s   .foo    ; \u0435\u0441\u043b\u0438 d0 &gt; 32, \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u043c\u0435\u0442\u043a\u0443 .foo<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"lisp\">btst    #0,d0  ; \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u043d\u0443\u043b\u0435\u0432\u043e\u0439 (\u043c\u043b\u0430\u0434\u0448\u0438\u0439) \u0431\u0438\u0442 d0 \u0441 \u043d\u0443\u043b\u0435\u043c bne.s   .foo   ; \u0435\u0441\u043b\u0438 \u0431\u0438\u0442 \u043d\u0435 \u0440\u0430\u0432\u0435\u043d \u043d\u0443\u043b\u044e, \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u043c\u0435\u0442\u043a\u0443 .foo<\/code><\/pre>\n<p>  <\/p>\n<p>\u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b Motorola 68K \u0432\u0430\u043c \u043f\u043e\u043c\u043e\u0436\u0435\u0442 <a href=\"http:\/\/mrjester.hapisan.com\/04_MC68\/\" rel=\"nofollow\">\u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u043c\u0430\u043d\u0443\u0430\u043b<\/a> (\u0441 \u0443\u0436\u0430\u0441\u043d\u044b\u043c \u0444\u043e\u043d\u043e\u043c \u0438 \u0448\u0440\u0438\u0444\u0442\u0430\u043c\u0438) \u0430\u0432\u0442\u043e\u0440\u0430 \u041c\u0430\u0440\u043a\u0438 \u0414\u0436\u0435\u0441\u0442\u0435\u0440\u0430, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u0430\u044f \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043d\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e.<\/p>\n<p>  <\/p>\n<h2 id=\"sborka-igry\">\u0421\u0431\u043e\u0440\u043a\u0430 \u0438\u0433\u0440\u044b<\/h2>\n<p>  <\/p>\n<p>\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 s1disasm \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 Python-\u0441\u043a\u0440\u0438\u043f\u0442, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0449\u0438\u0439 \u043d\u0443\u0436\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430 \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c\u0438 \u0444\u043b\u0430\u0433\u0430\u043c\u0438. \u0422\u0430\u043a\u0436\u0435 \u044d\u0442\u043e\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0434\u043b\u044f \u0438\u0433\u0440\u044b Sonic the Hedgehog \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e <a href=\"https:\/\/segaretro.org\/Kosinski_compression\" rel=\"nofollow\">&quot;Kosinski compression&quot;<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0436\u0438\u043c\u0430\u0435\u0442 \u043a\u0430\u0440\u0442\u044b \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 (\u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u043b\u0438\u0441\u044c \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u043a\u0430\u0440\u0442\u0440\u0438\u0434\u0436\u0430).<\/p>\n<p>  <\/p>\n<p>\u0412\u0441\u0435, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e, \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 git-\u0432\u0435\u0442\u043a\u0443 <code>AS<\/code> (<code>git checkout AS<\/code>) \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">.\/build.py<\/code><\/pre>\n<p>  <\/p>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0442\u0430\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0439 ROM-\u0444\u0430\u0439\u043b \u0438\u0433\u0440\u044b \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c <code>s1built.bin<\/code>. \u042d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432 \u0432\u0430\u0448\u0435\u043c \u043b\u044e\u0431\u0438\u043c\u043e\u043c \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435 Sega Mega Drive. \u0414\u043b\u044f macOS, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 <a href=\"https:\/\/openemu.org\" rel=\"nofollow\">OpenEmu<\/a>.<\/p>\n<p>  <\/p>\n<h2 id=\"arhitektura-dvizhka-igry\">\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0434\u0432\u0438\u0436\u043a\u0430 \u0438\u0433\u0440\u044b<\/h2>\n<p>  <\/p>\n<p>\u041d\u0430\u0447\u043d\u0435\u043c \u043e\u0431\u0437\u043e\u0440 \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0432\u0445\u043e\u0434\u0430 \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0438\u0433\u0440\u044b \u2013 \u0444\u0430\u0439\u043b\u0430 <a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/sonic.asm\" rel=\"nofollow\"><code>sonic.asm<\/code><\/a>. \u0412 \u043d\u0435\u043c \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438: \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u0441\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 Zilog Z80 (<a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/sonic.asm#L183\" rel=\"nofollow\"><code>WaitForZ80<\/code><\/a>), \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0432\u0438\u0434\u0435\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 (<a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/sonic.asm#L976\" rel=\"nofollow\"><code>VDPSetupGame<\/code><\/a>) \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 <a href=\"https:\/\/segaretro.org\/Checksum\" rel=\"nofollow\">\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439 \u0441\u0443\u043c\u043c\u044b<\/a>. \u041f\u043e\u0441\u043b\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u0433\u0440\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 <a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/sonic.asm#L340\" rel=\"nofollow\"><code>GameInit<\/code><\/a> \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u0432 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0446\u0438\u043a\u043b <a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/sonic.asm#L353\" rel=\"nofollow\"><code>MainGameLoop<\/code><\/a>, \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c\u0443 \u0435\u043c\u0443 \u043a\u043e\u0434\u0430.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0438\u0433\u0440\u043e\u0439 \u0432\u044b\u043d\u0435\u0441\u0435\u043d \u0432 \u0444\u0430\u0439\u043b <a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/Variables.asm\" rel=\"nofollow\"><code>Variables.asm<\/code><\/a>. \u041a\u0430\u0436\u0434\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0443 \u0441\u043e \u0441\u0441\u044b\u043b\u043a\u043e\u0439 \u043d\u0430 \u0430\u0434\u0440\u0435\u0441 \u0432 RAM, \u0433\u0434\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439.<\/p>\n<p>  <\/p>\n<p>\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u0440\u0435\u0436\u0438\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/Variables.asm#L107\" rel=\"nofollow\"><code>v_gamemode<\/code><\/a>. \u0421\u043f\u0438\u0441\u043e\u043a \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u0438\u0433\u0440\u043e\u0432\u044b\u0445 \u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f:<\/p>\n<p>  <\/p>\n<ul>\n<li>00 \u2013\u00a0\u044d\u043a\u0440\u0430\u043d &quot;Sega&quot;,<\/li>\n<li>01 \u2013\u00a0\u0442\u0438\u0442\u0443\u043b\u044c\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d \u0441 \u0421\u043e\u043d\u0438\u043a\u043e\u043c,<\/li>\n<li>08 \u2013\u00a0\u0434\u0435\u043c\u043e,<\/li>\n<li>0C \u2013 \u0443\u0440\u043e\u0432\u0435\u043d\u044c,<\/li>\n<li>10 \u2013 special stage,<\/li>\n<li>14 \u2013 \u044d\u043a\u0440\u0430\u043d &quot;Continue&quot;,<\/li>\n<li>18 \u2013 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u0441\u0442\u0430\u0432\u043a\u0430,<\/li>\n<li>1C \u2013 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0438\u0442\u0440\u044b,<\/li>\n<li>8C \u2013 \u0442\u0438\u0442\u0440 \u0443\u0440\u043e\u0432\u043d\u044f.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0412 \u0441\u0442\u0440\u043e\u043a\u0435 <code>move.b #id_Sega,(v_gamemode).w<\/code> \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b <a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/sonic.asm#L340\" rel=\"nofollow\"><code>GameInit<\/code><\/a> \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>v_gamemode<\/code> \u0437\u0430\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0440\u0435\u0436\u0438\u043c, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0438\u0433\u0440\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u0442\u044c. \u0415\u0441\u043b\u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c <code>id_Sega<\/code> \u043d\u0430 <code>id_Title<\/code> \u0438 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0438\u0433\u0440\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <code>.\/build.py<\/code>, \u0442\u043e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0445\u0430\u043a, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u044d\u043a\u0440\u0430\u043d\u0430 &quot;Sega&quot; \u0438\u0433\u0440\u0430 \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0430\u0441 \u0442\u0438\u0442\u0443\u043b\u044c\u043d\u044b\u043c \u044d\u043a\u0440\u0430\u043d\u043e\u043c, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0434\u0435\u0431\u0430\u0433\u0430.<\/p>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <code>v_gamemode<\/code> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0434\u043b\u044f \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 <code>id_Title<\/code> \u043f\u0440\u0438\u0441\u0442\u0430\u0432\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 <a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/sonic.asm#L2097\" rel=\"nofollow\"><code>GM_Title<\/code><\/a>, \u0430 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 <code>id_Level<\/code> \u2013\u00a0<a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/sonic.asm#L2755\" rel=\"nofollow\"><code>GM_Level<\/code><\/a>.<\/p>\n<p>  <\/p>\n<h3 id=\"igrovye-parametry\">\u0418\u0433\u0440\u043e\u0432\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b<\/h3>\n<p>  <\/p>\n<p>\u041c\u043d\u043e\u0433\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0432 \u0444\u0430\u0439\u043b\u0435 <a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/Variables.asm\" rel=\"nofollow\"><code>Variables.asm<\/code><\/a> \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u0434\u043b\u044f \u0445\u0430\u043a\u0438\u043d\u0433\u0430. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 <a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/Variables.asm#L179\" rel=\"nofollow\"><code>v_sonspeedmax<\/code><\/a>, <a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/Variables.asm#L180\" rel=\"nofollow\"><code>v_sonspeedacc<\/code><\/a> \u0438 <a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/Variables.asm#L181\" rel=\"nofollow\"><code>v_sonspeeddec<\/code><\/a>.<\/p>\n<p>  <\/p>\n<p>\u0418\u0437\u043c\u0435\u043d\u044f\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u043c\u044b\u0435 \u0432 \u044d\u0442\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0432 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 <a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/sonic.asm#L6927\" rel=\"nofollow\"><code>Sonic_Main<\/code><\/a>, \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0421\u043e\u043d\u0438\u043a\u0430: \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u0438 \u0442\u043e\u0440\u043c\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043f\u043e\u043b\u0443\u0447\u0430\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b:<\/p>\n<p>  <\/p>\n<pre><code class=\"lisp\">move.w  #$600,(v_sonspeedmax).w  ; Sonic's top speed move.w  #$C,(v_sonspeedacc).w    ; Sonic's acceleration move.w  #$80,(v_sonspeeddec).w   ; Sonic's deceleration<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u0440\u043e\u0431\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0441 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u043e\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0438\u0445 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0430 256. \u0422\u0430\u043a, \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0421\u043e\u043d\u0438\u043a\u0430 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442 0xC \/ 256 = 0.046875, \u0430 \u0442\u043e\u0440\u043c\u043e\u0436\u0435\u043d\u0438\u0435 \u2013 0x80 \/ 256 = 0.5 (\u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u043d\u0430 \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u0446\u0438\u043a\u043b \u0432 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0435).<\/p>\n<p>  <\/p>\n<h3 id=\"grafika\">\u0413\u0440\u0430\u0444\u0438\u043a\u0430<\/h3>\n<p>  <\/p>\n<p>\u0413\u0440\u0430\u0444\u0438\u043a\u043e\u0439 \u0432 Mega Drive \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u0439\u043b\u043e\u0432\u044b\u0439 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 Sega 315\u20115313 (Video Display Processor, VDP). \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 VDP \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432, \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0430\u0434\u0435\u0441\u0430 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 <a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/Constants.asm#L9\" rel=\"nofollow\"><code>vdp_data_port<\/code><\/a> \u0438 <a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/Constants.asm#L10\" rel=\"nofollow\"><code>vdp_control_port<\/code><\/a>. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 <a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/sonic.asm#L976\" rel=\"nofollow\"><code>VDPSetupGame<\/code><\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0435\u0440\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/sonic.asm#L1013\" rel=\"nofollow\"><code>VDPSetupArray<\/code><\/a>. \u041e\u0434\u043d\u0430\u043a\u043e, \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0438\u0437 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u0438\u0433\u0440\u043e\u0432\u044b\u0445 \u0440\u0435\u0436\u0438\u043c\u043e\u0432, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 \u0438\u0433\u0440\u043e\u0432\u044b\u0445 \u0443\u0440\u043e\u0432\u043d\u044f\u0445 \u044d\u0442\u043e <a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/sonic.asm#L2821\" rel=\"nofollow\">\u0434\u0435\u043b\u0430\u0435\u0442<\/a> \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 <code>GM_Level<\/code>. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432\u0441\u0435\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 VDP \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043e \u0432 <a href=\"https:\/\/segaretro.org\/Sega_Mega_Drive\/VDP_registers\" rel=\"nofollow\">\u0432\u0438\u043a\u0438 Sega Retro<\/a>.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043c \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0438\u0433\u0440\u044b \u0441 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c \u0440\u0435\u0436\u0438\u043c\u043e\u043c Low Color (\u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0431\u0438\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 Mode Register 1 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0432 \u043d\u043e\u043b\u044c):<\/p>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/fn\/d6\/tc\/fnd6tc5mjhfnfxf4rebapuvrcgw.png\" width=\"300\"><\/div>\n<p>  <\/p>\n<p>Video Display Processor \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0434\u0432\u0443\u043c\u044f \u0444\u043e\u043d\u043e\u0432\u044b\u043c\u0438 \u0441\u043b\u043e\u044f\u043c\u0438 \u2013 background (\u0441\u043b\u043e\u0439 B) \u0438 foreground (\u0441\u043b\u043e\u0439 A), \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e \u0441\u043b\u043e\u0435\u043c \u0441\u043f\u0440\u0430\u0439\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0432\u0435\u0440\u0445 \u0444\u043e\u043d\u0430. \u0424\u043e\u043d\u043e\u0432\u044b\u0435 \u0441\u043b\u043e\u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0438\u0437 \u0442\u0430\u0439\u043b\u043e\u0432 8&#215;8 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/segaretro.org\/Plane_mappings\" rel=\"nofollow\">\u043a\u0430\u0440\u0442 \u0442\u0430\u0439\u043b\u043e\u0432<\/a>. \u0421\u043f\u0440\u0430\u0439\u0442\u044b \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0438\u0437 \u0442\u0430\u0439\u043b\u043e\u0432; \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u043f\u0440\u0430\u0439\u0442\u0430 \u2013 4&#215;4 \u0442\u0430\u0439\u043b\u0430. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0441\u043f\u0440\u0430\u0439\u0442\u0430 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 32&#215;32 \u043f\u0438\u043a\u0441\u0435\u043b\u044f.<\/p>\n<p>  <\/p>\n<p>\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0438\u0437 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0444\u043e\u043d\u043e\u0432\u044b\u043c\u0438 \u0441\u043b\u043e\u044f\u043c\u0438 (<a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/sonic.asm#L4315\" rel=\"nofollow\"><code>LoadTilesAsYouMove<\/code><\/a>, <a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/sonic.asm#L5153\" rel=\"nofollow\"><code>DrawChunks<\/code><\/a>) \u0438 \u0441\u043f\u0440\u0430\u0439\u0442\u0430\u043c\u0438 (<a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/sonic.asm#L6284\" rel=\"nofollow\"><code>BuildSprites<\/code><\/a>) \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0438\u0437 \u0438\u0433\u0440\u043e\u0432\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043a \u043a\u0430\u043a\u043e\u043c\u0443 \u0441\u043b\u043e\u044e \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f:<\/p>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/0t\/cq\/dg\/0tcqdgnnn7soo1midkwkvuxroww.png\" width=\"600\"><\/div>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f, \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 <code>LoadTilesAsYouMove<\/code> \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0433\u0440\u0443\u0437\u043a\u043e\u0439 \u0442\u0430\u0439\u043b\u043e\u0432 \u043d\u0430 \u0444\u043e\u043d\u043e\u0432\u044b\u0435 \u0441\u043b\u043e\u0438 \u043f\u043e \u043c\u0435\u0440\u0435 \u043f\u0440\u043e\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0438\u0433\u0440\u043e\u043a\u0430 \u043f\u043e \u0443\u0440\u043e\u0432\u043d\u044e. \u0412 \u0438\u0433\u0440\u0435 Sonic the Hedgehog \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u0431\u043e\u0438\u0445 \u0442\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0435\u0439 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 64&#215;32 \u0442\u0430\u0439\u043b\u0430 \u0438\u043b\u0438 512&#215;256 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0422\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0449\u0438\u0439\u0441\u044f foreground-\u0441\u043b\u043e\u0439 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 Green Hill Zone, GIF-\u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f, 5 \u041c\u0431:<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ga\/tn\/r1\/gatnr1hzmvdj08uo7v-fenazzp8.gif\"><\/div>\n<\/div><\/div>\n<p>  <\/p>\n<p>\u0413\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u0449\u0435\u0435 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0444\u043e\u043d\u043e\u0432\u043e\u0433\u043e \u0441\u043b\u043e\u044f, \u043d\u043e \u0438 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0435\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0440\u044f\u0434\u043e\u0432 \u0442\u0430\u0439\u043b\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u0443\u044e <a href=\"https:\/\/segaretro.org\/Sega_Mega_Drive\/Scrolling\" rel=\"nofollow\">\u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441\u043a\u0440\u043e\u043b\u043b\u0438\u043d\u0433\u0430<\/a>. \u042d\u0442\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0444\u043e\u043d\u0430 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435, \u0447\u0435\u043c \u0431\u043b\u0438\u0437\u043a\u0438\u0435. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u044d\u0444\u0444\u0435\u043a\u0442 \u043f\u0430\u0440\u0430\u043b\u043b\u0430\u043a\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u0438\u0442\u0438\u0440\u0443\u0435\u0442 3D-\u0433\u0440\u0430\u0444\u0438\u043a\u0443 \u0438 \u043f\u0440\u0438\u0434\u0430\u0435\u0442 \u0441\u0446\u0435\u043d\u0435 \u043e\u0431\u044a\u0435\u043c. \u042d\u0442\u043e\u0442 \u044d\u0444\u0444\u0435\u043a\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0447\u0442\u0438 \u0432\u043e \u0432\u0441\u0435\u0445 \u0443\u0440\u043e\u0432\u043d\u044f\u0445 Sonic the Hedgehog.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u042d\u0444\u0444\u0435\u043a\u0442 \u043f\u0430\u0440\u0430\u043b\u043b\u0430\u043a\u0441\u0430 \u0432 \u0444\u043e\u043d\u043e\u0432\u043e\u043c \u0441\u043b\u043e\u0435 \u0443\u0440\u043e\u0432\u043d\u044f Marble Zone, GIF-\u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f, 1 \u041c\u0431:<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/dt\/qu\/in\/dtquinnvovqsfxozo0xvccns_fe.gif\"><\/div>\n<\/div><\/div>\n<p>  <\/p>\n<h3 id=\"igrovye-obekty\">\u0418\u0433\u0440\u043e\u0432\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b<\/h3>\n<p>  <\/p>\n<p>\u0414\u0432\u0438\u0436\u043e\u043a \u0438\u0433\u0440\u044b \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442 8192 \u0431\u0430\u0439\u0442\u0430 \u0432 RAM \u043d\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0441\u0446\u0435\u043d\u044b. \u0412\u0441\u044f \u044d\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043f\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e <a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/Variables.asm#L21\" rel=\"nofollow\"><code>v_objspace<\/code><\/a>. \u041a \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435, \u043a\u0440\u043e\u043c\u0435 \u0441\u0442\u0435\u043d \u0438 \u043f\u043e\u043b\u0430. \u041f\u0440\u0438\u043c\u0435\u0440\u044b: \u0421\u043e\u043d\u0438\u043a, \u0432\u0440\u0430\u0433\u0438 \u0421\u043e\u043d\u0438\u043a\u0430, \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u044b \u0441 \u0431\u043e\u043d\u0443\u0441\u0430\u043c\u0438, \u043a\u043e\u043b\u044c\u0446\u0430, \u043f\u0440\u0443\u0436\u0438\u043d\u044b, \u0411\u043e\u0441\u0441 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u041f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u044e\u0442 \u0441\u0435\u0431\u044f \u0432 \u0441\u043b\u043e\u0435 \u0441\u043f\u0440\u0430\u0439\u0442\u043e\u0432 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b <a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/_incObj\/sub%20DisplaySprite.asm#L8\" rel=\"nofollow\"><code>DisplaySprite<\/code><\/a>.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/qh\/xr\/ig\/qhxrigzf4bhze2rkdicurp2r_lm.png\" alt=\"Sonic game objects\"><\/p>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u043c\u0435\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u043d \u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 64 \u0431\u0430\u0439\u0442\u0430. \u042d\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u043f\u043e\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u044b \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043c\u0430\u043a\u0440\u043e\u0441\u043e\u0432, \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0432 \u0444\u0430\u0439\u043b\u0435 <a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/6dc32551c3adf49b1ef11ffdec352e8f22e814e4\/Constants.asm#L123\" rel=\"nofollow\"><code>Constants.asm<\/code><\/a>. \u0410\u0434\u0440\u0435\u0441 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043e\u0431\u044b\u0447\u043d\u043e \u0437\u0430\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 <code>a0<\/code>. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u0447\u0438\u0442\u0430\u043d\u044b \u0442\u0430\u043a:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>ObX(a0)<\/code>, <code>ObY(a0)<\/code> \u2013\u00a0\u0442\u0435\u043a\u0443\u0449\u0438\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0432 \u043f\u0438\u043a\u0441\u0435\u043b\u044f\u0445.<\/li>\n<li><code>ObVelX(a0)<\/code>, <code>ObVelX(a1)<\/code> \u2013 \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0432 1\/256 \u043f\u0438\u043a\u0441\u0435\u043b\u044f \u0437\u0430 \u0448\u0430\u0433.<\/li>\n<li><code>obHeight(a0)<\/code>, <code>obWidth(a0)<\/code> \u2013 \u0432\u044b\u0441\u043e\u0442\u0430 \u0438 \u0448\u0438\u0440\u0438\u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430.<\/li>\n<li><code>obSubtype(a0)<\/code> \u2013 \u043f\u043e\u0434\u0442\u0438\u043f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 (\u043f\u0440\u0438\u043c\u0435\u0440: \u0442\u0438\u043f \u0431\u043e\u043d\u0443\u0441\u043d\u043e\u0433\u043e \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430).<\/li>\n<li><code>obStatus(a0)<\/code> \u2013 \u0431\u0430\u0439\u0442 \u0441 \u0444\u043b\u0430\u0433\u0430\u043c\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430.<\/li>\n<li><code>obRoutine(a0)<\/code> \u2013 \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u0430.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041e\u0442\u043c\u0435\u0442\u0438\u043c, \u0447\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432 \u0438\u0433\u0440\u0435 \u0442\u0438\u043f\u0438\u0447\u043d\u0430 \u0434\u043b\u044f \u044d\u043a\u0440\u0430\u043d\u043d\u043e\u0439 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0438 \u0438\u043c\u0435\u0435\u0442 \u043e\u0441\u044c X \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0432\u043f\u0440\u0430\u0432\u043e, \u0438 \u043e\u0441\u044c Y, \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0432\u043d\u0438\u0437.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 <a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/sonic.asm#L6217\" rel=\"nofollow\"><code>ExecuteObjects<\/code><\/a> \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0448\u0430\u0433\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u0443\u0440\u043e\u0432\u043d\u044f. \u041e\u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u043a\u043e\u0434 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u0438\u0433\u0440\u043e\u0432\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043d\u0430 \u0441\u0446\u0435\u043d\u0435. \u0421\u043f\u0438\u0441\u043e\u043a \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439 \u043d\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u043a\u043e\u0434 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0437\u0430\u0434\u0430\u043d \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0432 \u0444\u0430\u0439\u043b\u0435 <a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/_inc\/Object%20Pointers.asm\" rel=\"nofollow\"><code>Object Pointers.asm<\/code><\/a>. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u043a\u043e\u0434 \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432\u044b\u043d\u0435\u0441\u0435\u043d \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 <a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/tree\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/_incObj\" rel=\"nofollow\"><code>_incObj<\/code><\/a>.<\/p>\n<p>  <\/p>\n<p>\u041c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438\u043c\u0435\u044e\u0442 \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u043c \u044d\u0442\u0430\u043f\u0430\u043c \u0436\u0438\u0437\u043d\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u043e\u0431\u044a\u0435\u043a\u0442 \u0432 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438, &quot;\u043f\u0440\u0435\u0434\u0441\u043c\u0435\u0440\u0442\u043d\u043e\u0435&quot; \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435). \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u043e\u043c\u0435\u0440 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0441\u0435\u0439\u0447\u0430\u0441, \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u043f\u043e\u043b\u0435 <a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/Constants.asm#L148\" rel=\"nofollow\"><code>obRoutine<\/code><\/a>.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 <a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/_incObj\/sub%20SpeedToPos.asm\" rel=\"nofollow\"><code>SpeedToPos<\/code><\/a>. \u041e\u043d\u0430 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u043f\u0440\u0438\u0431\u0430\u0432\u043b\u044f\u044f \u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a \u0435\u0433\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c.<\/p>\n<p>  <\/p>\n<h3 id=\"hak-no-ring-challenge\">\u0425\u0430\u043a: no-ring challenge<\/h3>\n<p>  <\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0445\u0430\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u0441\u0430\u043c\u044b\u043c \u044f\u0440\u044b\u043c \u0444\u0430\u043d\u0430\u0442\u0430\u043c \u0438\u0433\u0440\u044b: no-ring challenge. \u042d\u0442\u043e\u0442 \u0445\u0430\u043a \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043f\u0440\u043e\u0439\u0442\u0438 \u0438\u0433\u0440\u0443 \u0431\u0435\u0437 \u0437\u043e\u043b\u043e\u0442\u044b\u0445 \u043a\u043e\u043b\u0435\u0446. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435, \u043a\u0430\u0436\u0434\u0430\u044f \u0430\u0442\u0430\u043a\u0430 \u0421\u043e\u043d\u0438\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u0440\u0430\u0437\u0443 \u0443\u0431\u0438\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0438 \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u0433\u0440\u043e\u043a\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0437\u0430\u043d\u043e\u0432\u043e (\u043b\u0438\u0431\u043e \u0441 \u0442\u043e\u0447\u043a\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f).<\/p>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u0432 \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 &quot;\u041a\u043e\u043b\u044c\u0446\u043e&quot; \u2013 <a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/_incObj\/25%20&amp;%2037%20Rings.asm#L44\" rel=\"nofollow\"><code>Ring_Main<\/code><\/a> \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u0441\u0430\u043c\u043e\u0435 \u0435\u0435 \u043d\u0430\u0447\u0430\u043b\u043e \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0443\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043f\u0440\u044b\u0436\u043a\u0430 (<code>bra<\/code>) \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043b\u044c\u0446\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"lisp\">Ring_Main:  ; Routine 0     bra.w   Ring_Delete ; \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u0441\u0435 \u043a\u043e\u043b\u044c\u0446\u0430 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e      lea (v_objstate).w,a2     moveq   #0,d0     move.b  obRespawnNo(a0),d0     ; ...<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421 \u0431\u043e\u043d\u0443\u0441\u043d\u044b\u043c\u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430\u043c\u0438 \u043f\u043e\u0441\u0442\u0443\u043f\u0438\u043c \u0442\u0430\u043a \u0436\u0435. \u0413\u043b\u0430\u0432\u043d\u0430\u044f \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 &quot;\u041c\u043e\u043d\u0438\u0442\u043e\u0440&quot; \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 <a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/_incObj\/26%20Monitor.asm#L18\" rel=\"nofollow\"><code>26 Monitor.asm<\/code><\/a>. \u0422\u0438\u043f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u043f\u043e\u043b\u0435 <code>obSubtype<\/code> \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 1 \u0431\u0430\u0439\u0442. \u042d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u0432\u044b\u044f\u0441\u043d\u0435\u043d\u043e, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430 \u0441 \u043a\u043e\u043b\u044c\u0446\u0430\u043c\u0438 \u0440\u0430\u0432\u043d\u043e 6. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0442\u0438\u043f\u0430 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 <code>cmp<\/code> \u0438 \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0439 \u043f\u0440\u044b\u0436\u043e\u043a <code>beq<\/code> \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u0435\u0433\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0435\u0433\u043e \u0442\u0438\u043f \u0440\u0430\u0432\u0435\u043d \u0448\u0435\u0441\u0442\u0438:<\/p>\n<p>  <\/p>\n<pre><code class=\"lisp\">Mon_Main:   ; Routine 0     cmp.b   #6,obSubtype(a0)  ; \u043c\u043e\u043d\u0438\u0442\u043e\u0440 \u0441 \u043a\u043e\u043b\u044c\u0446\u0430\u043c\u0438?     beq     DeleteObject      ; \u0435\u0441\u043b\u0438 \u0434\u0430, \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442      addq.b  #2,obRoutine(a0)     move.b  #$E,obHeight(a0)     ; ...<\/code><\/pre>\n<p>  <\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432 \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0435\u043c\u0441\u044f ROM&#8217;\u0435 \u043a\u043e\u043b\u044c\u0446\u0430 \u0438 \u0431\u043e\u043d\u0443\u0441\u043d\u044b\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u044b \u0441 \u043a\u043e\u043b\u044c\u0446\u0430\u043c\u0438 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u044f\u0445 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u0443\u0441\u043b\u043e\u0436\u043d\u0438\u0442 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435. \u041f\u0430\u0442\u0447 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/github.com\/okalachev\/s1disasm\/compare\/AS...norings\" rel=\"nofollow\">\u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 GitHub<\/a>. \u0422\u0443\u0434\u0430 \u0436\u0435 \u0432\u044b\u043b\u043e\u0436\u0435\u043d <a href=\"https:\/\/github.com\/okalachev\/s1disasm\/releases\/download\/norings\/sonic-norings.bin\" rel=\"nofollow\">\u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a<\/a> \u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439, \u0435\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u0437\u0430\u0445\u043e\u0447\u0435\u0442 \u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c \u0432 \u0442\u0430\u043a\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0438\u0433\u0440\u044b, \u043d\u0435 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u044f\u0441\u044c \u0441\u043e \u0441\u0431\u043e\u0440\u043a\u043e\u0439.<\/p>\n<p>  <\/p>\n<h3 id=\"hak-prityagivanie-kolec\">\u0425\u0430\u043a: \u043f\u0440\u0438\u0442\u044f\u0433\u0438\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043b\u0435\u0446<\/h3>\n<p>  <\/p>\n<p>\u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u0438\u0433\u0440\u0430\u0445 \u0441\u0435\u0440\u0438\u0438 \u0431\u043e\u043d\u0443\u0441\u043d\u044b\u0439 \u0449\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0449\u0438\u0449\u0430\u0435\u0442 \u0438\u0433\u0440\u043e\u043a\u0430, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0435\u0433\u043e \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a \u043d\u0435\u043c\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0449\u0438\u0442\u0430 \u0438\u0437 Sonic the Hedgehog 3 \u2013 \u043f\u0440\u0438\u0442\u044f\u0433\u0438\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043b\u0435\u0446.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">GIF-\u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f, \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0449\u0430\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0449\u0438\u0442\u0430, 1 \u041c\u0431:<\/b>                         <\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/iu\/gl\/ki\/iuglkizf3_hutk0mdsnb6kladh8.gif\"><\/div>\n<\/p><\/div>\n<p>  <\/p>\n<h4 id=\"algoritm-sonic-the-hedgehog-3\">\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c Sonic the Hedgehog 3<\/h4>\n<p>  <\/p>\n<p>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0439\u0441\u044f \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0430, \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u043d <a href=\"http:\/\/info.sonicretro.org\/SPG:Special_Abilities#Ring_Magnetisation\" rel=\"nofollow\">\u0432 \u0432\u0438\u043a\u0438 Sonic Retro<\/a>. \u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436, \u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0449\u0438\u0439 \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0449\u0438\u0442\u043e\u043c, \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0431\u043b\u0438\u0436\u0435, \u0447\u0435\u043c \u0432 64 \u043f\u0438\u043a\u0441\u0435\u043b\u044f\u0445 \u043e\u0442 \u043a\u043e\u043b\u044c\u0446\u0430 \u043f\u043e \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u043e\u0441\u0435\u0439, \u043a\u043e\u043b\u044c\u0446\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u0432 \u0440\u0435\u0436\u0438\u043c <em>\u043d\u0430\u043c\u0430\u0433\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438<\/em> \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435. \u0412 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u044d\u0442\u043e\u0442 \u0444\u043b\u0430\u0433 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0441\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0441 \u043a\u043e\u043b\u044c\u0446\u0430. \u0412 \u0440\u0435\u0436\u0438\u043c\u0435 \u043d\u0430\u043c\u0430\u0433\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043b\u044c\u0446\u043e \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442\u0441\u044f \u043d\u0430 0.1875 \u0437\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0448\u0430\u0433 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0438\u0433\u0440\u043e\u043a\u0430, \u0435\u0441\u043b\u0438 \u043e\u043d\u043e \u0443\u0436\u0435 \u0434\u0432\u0438\u0436\u0435\u0442\u0441\u044f \u0432 \u043d\u0443\u0436\u043d\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u0439 \u043e\u0441\u0438. \u0415\u0441\u043b\u0438 \u0436\u0435 \u043a\u043e\u043b\u044c\u0446\u043e \u0434\u0432\u0438\u0436\u0435\u0442\u0441\u044f \u043e\u0442 \u0438\u0433\u0440\u043e\u043a\u0430, \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 0.75.<\/p>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u0445 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0430 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u043b\u044c\u0446\u0430 \u0441 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u0435\u043b\u0438\u0432\u0430\u043b\u0438, \u043d\u043e, \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u0435\u043b \u0443\u0436\u0435 \u0441\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u043b\u0438\u0431\u043e \u0435\u0441\u043b\u0438 \u0438\u0433\u0440\u043e\u043a \u0434\u0432\u0438\u0436\u0435\u0442\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u0440\u0435\u0437\u043a\u043e \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0431\u044b\u0441\u0442\u0440\u043e &quot;\u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u043b\u0438\u0441\u044c&quot; \u0438 \u043c\u0435\u043d\u044f\u043b\u0438 \u0441\u0432\u043e\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<h4 id=\"realizaciya-algoritma\">\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430<\/h4>\n<p>  <\/p>\n<p>\u0418\u0437\u0443\u0447\u0438\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u043a\u043e\u0434 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 &quot;\u041a\u043e\u043b\u044c\u0446\u043e&quot;, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 <a href=\"https:\/\/github.com\/sonicretro\/s1disasm\/blob\/c1ed7c78f28bb7abee97bf5f3bec66f6f8e4d9c4\/_incObj\/25%20&amp;%2037%20Rings.asm\" rel=\"nofollow\"><code>25 &amp; 37 Rings.asm<\/code><\/a>. \u0421\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">Ring_Index: ptr_Ring_Main:      dc.w Ring_Main-Ring_Index ptr_Ring_Animate:   dc.w Ring_Animate-Ring_Index ptr_Ring_Collect:   dc.w Ring_Collect-Ring_Index ptr_Ring_Sparkle:   dc.w Ring_Sparkle-Ring_Index ptr_Ring_Delete:    dc.w Ring_Delete-Ring_Index<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u043e\u043b\u044c\u0446\u043e \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0445 \u044d\u0442\u0430\u043f\u043e\u0432: <code>Main<\/code> \u2013 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f; <code>Animate<\/code> \u2013 \u043e\u0431\u044b\u0447\u043d\u043e\u0435 \u0432\u0438\u0441\u0435\u043d\u0438\u0435 \u0441 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0435\u0439 \u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f; <code>Collect<\/code> \u2013\u00a0\u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u0431\u043e\u0440\u0430 \u0421\u043e\u043d\u0438\u043a\u043e\u043c; <code>Sparkle<\/code> \u2013 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f \u0438\u0441\u043a\u0440 \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u0435 \u0421\u043e\u043d\u0438\u043a\u043e\u043c; <code>Delete<\/code> \u2013 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u044c\u0446\u0430. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u044c\u0446\u0430 \u0432 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438, \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b <code>ptr_Ring_Animate<\/code>.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043d\u0430\u043c\u0430\u0433\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043b\u044c\u0446\u0430 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u043e\u0434\u043d\u043e\u0431\u0430\u0439\u0442\u043d\u043e\u0435 \u043f\u043e\u043b\u0435 <code>obStatus<\/code>. \u0410\u043d\u0430\u043b\u0438\u0437 \u043a\u043e\u0434\u0430 \u043a\u043e\u043b\u044c\u0446\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0432 \u044d\u0442\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438\u0433\u0440\u044b \u0444\u043b\u0430\u0433\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f. \u041d\u0430\u0437\u043d\u0430\u0447\u0438\u043c \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0431\u0438\u0442 <code>obStatus<\/code> (\u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043c\u043b\u0430\u0434\u0448\u0438\u0439) \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0437\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0444\u043b\u0430\u0433\u0430 \u043d\u0430\u043c\u0430\u0433\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0431\u0438\u0442\u0430 \u044f\u0447\u0435\u0439\u043a\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 <code>bset<\/code>, \u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043b\u0438 \u043e\u043d \u2013 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 <code>btst<\/code>.<\/p>\n<p>  <\/p>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b <code>Ring_Animate<\/code> \u043a\u043e\u0434, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u0444\u043b\u0430\u0433 \u043d\u0430\u043c\u0430\u0433\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0438\u0433\u0440\u043e\u043a \u0431\u043b\u0438\u0436\u0435 \u043a \u043a\u043e\u043b\u044c\u0446\u0443, \u0447\u0435\u043c \u043d\u0430 64 \u043f\u0438\u043a\u0441\u0435\u043b\u044f \u043f\u043e \u043a\u0430\u0436\u0434\u043e\u0439 \u043e\u0441\u0438:<\/p>\n<p>  <\/p>\n<pre><code class=\"lisp\">Ring_Animate: ; Routine 2     tst.b   (v_shield).w  ; \u0443 \u0421\u043e\u043d\u0438\u043a\u0430 \u0435\u0441\u0442\u044c \u0449\u0438\u0442?     beq.s   .animate      ; \u0435\u0441\u043b\u0438 \u043d\u0435\u0442, \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c  .dist_from_sonic:     ; \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u043e \u0421\u043e\u043d\u0438\u043a\u0430     move.w  (v_player+obX).w,d0  ; \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0438\u0433\u0440\u043e\u043a\u0430 \u043f\u043e X \u0432 d0     sub.w   obX(a0),d0           ; d0 = \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u043e X     move.w  (v_player+obY).w,d1  ; \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0438\u0433\u0440\u043e\u043a\u0430 \u043f\u043e Y \u0432 d1     sub.w   obY(a0),d1           ; d1 = \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u043e Y  .check_magnetised:     ; \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043b\u0438 \u0443\u0436\u0435 \u0444\u043b\u0430\u0433 \u043d\u0430\u043c\u0430\u0433\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u043a\u043e\u043b\u044c\u0446\u0430     btst    #0,obStatus(a0)  ; \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0431\u0438\u0442 obStatus \u0440\u0430\u0432\u0435\u043d 0?     bne.s   .attract         ; \u043d\u0435 \u0440\u0430\u0432\u0435\u043d =&gt; \u0444\u043b\u0430\u0433 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d, \u0438\u0434\u0435\u043c \u043d\u0430 .attract  .check_near_x:     ; \u0444\u043b\u0430\u0433 \u043d\u0430\u043c\u0430\u0433\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f     cmp.w   #64,d0    ; \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u044f \u043f\u043e X &gt; 64?     bge.s   .animate  ; \u0435\u0441\u043b\u0438 \u0434\u0430, \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c     cmp.w   #-64,d0   ; \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u044f \u043f\u043e X &lt; -64?     ble.s   .animate  ; \u0435\u0441\u043b\u0438 \u0434\u0430, \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c  .check_near_y:     cmp.w   #64,d1    ; \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u044f \u043f\u043e Y &gt; 64?     bge.s   .animate  ; \u0435\u0441\u043b\u0438 \u0434\u0430, \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c     cmp.w   #-64,d1   ; \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u044f \u043f\u043e Y &lt; -64?     ble.s   .animate  ; \u0435\u0441\u043b\u0438 \u0434\u0430, \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c      ; \u043a\u043e\u043b\u044c\u0446\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0430 64x64, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0444\u043b\u0430\u0433 \u043d\u0430\u043c\u0430\u0433\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438     bset    #0,obStatus(a0)  .attract:     ; \u0437\u0434\u0435\u0441\u044c \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u0440\u0438\u0442\u044f\u0433\u0438\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043b\u044c\u0446\u0430  .animate:     ; ...<\/code><\/pre>\n<p>  <\/p>\n<p>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442 \u0440\u0430\u0437\u043d\u043e\u0435 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043b\u0435\u0442\u0438\u0442 \u043a\u043e\u043b\u044c\u0446\u043e \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0438\u0433\u0440\u043e\u043a\u0430 \u0438\u043b\u0438 \u043d\u0435\u0442, \u0447\u0442\u043e \u043f\u043e \u0441\u0443\u0442\u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e \u043a\u0430\u043a \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u043a\u043e\u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043a\u043e\u043b\u044c\u0446\u0430 \u0438 \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043a\u043e\u043b\u044c\u0446\u0430 \u0438 \u0438\u0433\u0440\u043e\u043a\u0430. \u0412 \u043f\u0441\u0435\u0432\u0434\u043e\u043a\u043e\u0434\u0435 \u0442\u0430\u043a\u043e\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0432\u0438\u0434:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">if sign(obVelX) == sign(distX):<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0430\u043a\u043e\u0433\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%B4\" rel=\"nofollow\">\u0441\u043f\u043e\u0441\u043e\u0431 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u043a\u043e\u0432\u044b\u0445<\/a> \u0446\u0435\u043b\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 (\u0432\u043a\u043b\u044e\u0447\u0430\u044f Motorola 68K) \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0437\u043d\u0430\u043a \u0447\u0438\u0441\u043b\u0430 \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0442\u0430\u0440\u0448\u0435\u0433\u043e \u0431\u0438\u0442\u0430, \u043f\u0440\u0438\u0447\u0435\u043c 0 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, \u0430 1 \u2013\u00a0\u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u043e \u0431\u0438\u0442\u043e\u0432 \u0432 \u0431\u0430\u0439\u0442\u0435 \u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0433\u043e &quot;\u0438\u043b\u0438&quot; XOR (<code>eor<\/code> \u043d\u0430 Motorola 68K).<\/p>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u0443\u0436\u0435 \u0431\u044b\u043b\u043e \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043e \u0432\u044b\u0448\u0435, \u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f (\u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0438\u0433\u0440\u043e\u0432\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432) \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0441 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u043e\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f (0.1875 \u0438 0.75) \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u043c\u043d\u043e\u0436\u0438\u0442\u044c \u043d\u0430 256 (\u043f\u043e\u043b\u0443\u0447\u0438\u0432 48 \u0438 192 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e).<\/p>\n<p>  <\/p>\n<p>\u0420\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u043f\u0440\u0438\u0442\u044f\u0433\u0438\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043b\u0435\u0446:<\/p>\n<p>  <\/p>\n<pre><code class=\"lisp\">.attract:     ; \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u044c\u0446\u0430 \u043f\u043e X     move.w #48,d4          ; \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432 d4 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 48     move.w  obVelX(a0),d3  ; \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043a\u043e\u043b\u044c\u0446\u0430 \u043f\u043e X \u0432 d3     eor.w   d0, d3         ; \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c \u0437\u043d\u0430\u043a\u0438 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043a\u043e\u043b\u044c\u0446\u0430     btst    #$F,d3         ; \u0435\u0441\u043b\u0438 15-\u0439 \u0431\u0438\u0442 \u0440\u0430\u0432\u0435\u043d 1 (\u0437\u043d\u0430\u043a\u0438 \u0440\u0430\u0432\u043d\u044b)...     beq.s   .x_towards     ; \u0438\u0434\u0435\u043c \u043d\u0430 x_towards     move.w #192,d4         ; \u0437\u043d\u0430\u043a\u0438 \u043d\u0435 \u0440\u0430\u0432\u043d\u044b, \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432 d4 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 192  .x_towards:     ; \u0435\u0441\u043b\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043b\u0435\u0442\u0435\u0442\u044c \u0432\u043b\u0435\u0432\u043e, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c \u0443\u043d\u0430\u0440\u043d\u044b\u0439 \u043c\u0438\u043d\u0443\u0441 (neg) \u043a \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044e (d4)     cmp.w   #0,d0     bge.s   .attract_x     neg d4  .attract_x:     ; \u043f\u0440\u0438\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u043f\u043e X \u043a \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043f\u043e X     add.w   d4,obVelX(a0)      ; \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0443\u044e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u043e\u0441\u0438 Y:     move.w #48,d4     move.w  obVelY(a0),d3     eor.w   d1,d3     btst    #$F,d3     beq.s   .y_towards     move.w #192,d4  .y_towards:     cmp.w   #0,d1     bge.s   .attract_y     neg d4  .attract_y:     add.w   d4,obVelY(a0)  .animate:     ; ...<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u043b\u044c\u0446\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u043b\u043e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044f\u043c, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u044b\u0437\u043e\u0432 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u043e\u0439 \u0432\u044b\u0448\u0435 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b <code>SpeedToPos<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"lisp\">.animate:     jsr (SpeedToPos).l<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0439 ROM \u0438\u0433\u0440\u044b, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0438 \u2014 \u0432\u0443\u0430\u043b\u044f \u2014 \u0444\u0438\u0447\u0430 \u0438\u0437 Sonic 3 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0432 Sonic 1!<\/p>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">GIF-\u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430, 3.5 \u041c\u0431:<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/sc\/9j\/re\/sc9jrejcprrhf_bnpodbowza56a.gif\"><\/div>\n<\/div><\/div>\n<p>  <\/p>\n<p>\u041d\u0430 GitHub \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <a href=\"https:\/\/github.com\/okalachev\/s1disasm\/compare\/AS...magnetic-shield\" rel=\"nofollow\">\u043f\u0430\u0442\u0447 \u0446\u0435\u043b\u0438\u043a\u043e\u043c<\/a>, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0438\u0439\u0441\u044f <a href=\"https:\/\/github.com\/okalachev\/s1disasm\/releases\/download\/magnetic-shield\/sonic-magnetic-shield.bin\" rel=\"nofollow\">\u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a<\/a>.<\/p>\n<p>  <\/p>\n<h2 id=\"zaklyuchenie\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>  <\/p>\n<p>\u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u0431\u0430\u0437\u043e\u0432\u044b\u043c \u0440\u0430\u0437\u0431\u043e\u0440\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438\u0433\u0440\u044b. \u0421\u0442\u0430\u0442\u044c\u044f \u043d\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0443\u0440\u043e\u0432\u043d\u0435\u0439 (<a href=\"https:\/\/info.sonicretro.org\/SonED2\" rel=\"nofollow\">SonED2<\/a>, <a href=\"https:\/\/info.sonicretro.org\/Chaos_(level_editor)\" rel=\"nofollow\">Chaos<\/a>), \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u044b\u0445 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u0439, \u0438\u0433\u0440\u043e\u0432\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438 \u043c\u0435\u0445\u0430\u043d\u0438\u043a. \u0422\u0430\u043a\u0436\u0435 \u043d\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\/\u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a Motorola 68K <a href=\"http:\/\/www.easy68k.com\" rel=\"nofollow\">EASy68K<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u043e\u0447\u044c \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0438\u0441\u0442\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 Sega.<\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438\u0435, \u043f\u043e\u043a\u043e\u043f\u0430\u0432\u0448\u0438\u0441\u044c \u0432 \u043a\u0438\u0448\u043a\u0430\u0445 \u043b\u044e\u0431\u0438\u043c\u043e\u0439 \u0438\u0433\u0440\u044b \u0434\u0435\u0442\u0441\u0442\u0432\u0430. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435\u0439 \u043c\u043d\u0435 \u0443\u0434\u0430\u0441\u0442\u0441\u044f \u0440\u0430\u0437\u0431\u0443\u0434\u0438\u0442\u044c \u0432 \u043a\u043e\u043c-\u0442\u043e \u0442\u0430\u043a\u0443\u044e \u0436\u0435 \u043d\u043e\u0441\u0442\u0430\u043b\u044c\u0433\u0438\u044e, \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 \u0447\u0435\u0440\u043f\u0430\u0442\u044c \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u0438 \u0438\u0437 \u0441\u043e\u0442\u0435\u043d \u0443\u0436\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0445\u0430\u043a\u043e\u0432, \u0438 \u0438\u0437 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0438\u0433\u0440 \u0441\u0435\u0440\u0438\u0438.<\/p>\n<p>  <\/p>\n<h2 id=\"ssylki\">\u0421\u0441\u044b\u043b\u043a\u0438<\/h2>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/segaretro.org\" rel=\"nofollow\">\u0412\u0441\u0435\u043e\u0431\u044a\u0435\u043c\u043b\u044e\u0449\u0430\u044f \u0432\u0438\u043a\u0438 \u043f\u0440\u043e \u043f\u0440\u0438\u0441\u0442\u0430\u0432\u043a\u0438 \u0438 \u0438\u0433\u0440\u044b \u043e\u0442 Sega<\/a><\/li>\n<li><a href=\"https:\/\/info.sonicretro.org\" rel=\"nofollow\">\u0412\u0438\u043a\u0438 \u0441\u043e \u0441\u043a\u0443\u0440\u043f\u0443\u043b\u0435\u0437\u043d\u0435\u0439\u0448\u0438\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0432\u0441\u0435\u0445 \u0438\u0433\u0440, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0421\u043e\u043d\u0438\u043a\u043e\u043c, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0430\u0441\u043f\u0435\u043a\u0442\u044b<\/a><\/li>\n<li><a href=\"http:\/\/68k.hax.com\" rel=\"nofollow\">\u041f\u043e\u043b\u043d\u044b\u0439 \u0440\u0435\u0444\u0435\u0440\u0435\u043d\u0441 \u043f\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0443 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430 Motorola 68K<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/channel\/UCfVFSjHQ57zyxajhhRc7i0g\" rel=\"nofollow\">https:\/\/www.youtube.com\/channel\/UCfVFSjHQ57zyxajhhRc7i0g<\/a> \u2014 YouTube-\u043a\u0430\u043d\u0430\u043b <a href=\"https:\/\/en.wikipedia.org\/wiki\/Jon_Burton\" rel=\"nofollow\">\u0414\u0436\u043e\u043d\u0430 \u0411\u0435\u0440\u0442\u043e\u043d\u0430<\/a>, \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Traveller&#8217;s Tales \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0438\u0433\u0440 \u0434\u043b\u044f Sega, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438\u0433\u0440\u044b Sonic 3D.<\/li>\n<\/ul>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/501398\/\"> https:\/\/habr.com\/ru\/post\/501398\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/501398\/\">\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043b\u0435\u0433\u0435\u043d\u0434\u0430\u0440\u043d\u043e\u0439 \u0438\u0433\u0440\u044b Sonic the Hedgehog \u0434\u043b\u044f \u043f\u0440\u0438\u0441\u0442\u0430\u0432\u043a\u0438 Sega Mega Drive, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0435\u0435 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438\u043b\u0438, \u043a\u0430\u043a \u0435\u0449\u0435 \u0433\u043e\u0432\u043e\u0440\u044f\u0442, \u0445\u0430\u043a\u0438\u043d\u0433\u0430. \u042d\u0442\u0430 \u0438\u0433\u0440\u0430 \u043d\u0430\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 <a href=\"http:\/\/info.sonicretro.org\/Sonic_hacks\" rel=\"nofollow\">\u0441\u043e\u0442\u043d\u0438 \u0445\u0430\u043a\u043e\u0432<\/a>, \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0438\u0445 \u043a\u0430\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u044b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b (\u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a <a href=\"https:\/\/www.youtube.com\/watch?v=24gnW3iAwYU\" rel=\"nofollow\">Pana Der Hejhog<\/a> \u0438\u043b\u0438 <a href=\"http:\/\/info.sonicretro.org\/Sonic_1_Remastered_(hack)\" rel=\"nofollow\">Sonic Remastered<\/a>), \u0442\u0430\u043a \u0438 \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0435 \u0438 \u0434\u0430\u0436\u0435 \u0436\u0443\u0442\u043a\u043e\u0432\u0430\u0442\u044b\u0435 (\u0432\u0440\u043e\u0434\u0435 <a href=\"https:\/\/www.youtube.com\/watch?v=ThSpW33w2gA\" rel=\"nofollow\">An Ordinary Sonic ROM Hack<\/a>). \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a \u0438\u0445 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c, \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u043a\u0430\u043a \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0430\u0441\u0441\u0435\u043c\u0435\u0431\u043b\u0435\u0440\u0430 Motorola 68K (\u043e\u0431\u044b\u0447\u043d\u043e \u0438\u0433\u0440\u044b \u0434\u043b\u044f \u043f\u0440\u0438\u0441\u0442\u0430\u0432\u043e\u043a \u0442\u0435\u0445 \u0432\u0440\u0435\u043c\u0435\u043d \u043f\u0438\u0441\u0430\u043b\u0438\u0441\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435), \u043e\u0442\u043a\u0443\u0434\u0430 \u0432\u0437\u044f\u0442\u044c \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0438\u0433\u0440\u044b \u0438 \u043a\u0430\u043a\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u0438\u043c\u0435\u0435\u0442 \u0435\u0435 \u0434\u0432\u0438\u0436\u043e\u043a.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ju\/oj\/e0\/juoje0s6s3resgmg5p6hbgos3dy.png\" alt=\"Sonic hacks\"><\/p>\n<p>  <\/p>\n<p>\u0414\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 ROM-\u0444\u0430\u0439\u043b\u043e\u0432 \u0434\u043b\u044f Sega \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430 \u0438 \u0434\u0435\u0431\u0430\u0433\u0433\u0435\u0440\u0430 <a href=\"https:\/\/www.hex-rays.com\/products\/ida\/\" rel=\"nofollow\">IDA Pro<\/a>. \u0417\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043a\u0440\u043e\u043f\u043e\u0442\u043b\u0438\u0432\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438, \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043f\u0440\u0438\u0447\u0435\u0441\u044b\u0432\u0430\u043d\u0438\u044f \u0441\u044b\u0440\u043e\u0433\u043e \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0434\u0435\u0431\u0430\u0433\u0433\u0435\u0440\u0430 (\u0438 \u0441\u043c\u0435\u043a\u0430\u043b\u043a\u0438). \u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b Sega Mega Drive \u0438 \u0438\u0433\u0440 \u0434\u043b\u044f \u043d\u0435\u0435.<\/p>\n<p>  <\/p>\n<p>\u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u043d\u0430 GitHub \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438 \u0440\u0430\u0437\u043c\u0435\u0447\u0435\u043d\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0432\u0441\u0435\u0445 \u0438\u0433\u0440 \u0441\u0435\u0440\u0438\u0438 Sonic the Hedgehog, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u044d\u043d\u0442\u0443\u0437\u0438\u0430\u0441\u0442\u0430\u043c\u0438 \u043f\u0440\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435 \u0441\u0430\u0439\u0442\u0430 <a href=\"https:\/\/sonicretro.org\" rel=\"nofollow\">Sonic Retro<\/a>. \u041b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0447\u0435\u043d \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0435\u0440\u0432\u043e\u0439 \u0438\u0433\u0440\u044b \u0441\u0435\u0440\u0438\u0438. \u042d\u0442\u0430 \u0432\u0435\u0440\u0441\u0438\u044f \u043a\u043e\u0434\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 <a href=\"https:\/\/github.com\/sonicretro\/s1disasm\" rel=\"nofollow\">sonicretro \/ s1disasm<\/a> \u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043d\u0430 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0432 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0438\u0433\u0440\u0443\u0448\u043a\u0438 \u043d\u0430\u0447\u043d\u0435\u043c \u0441 \u0442\u0435\u043e\u0440\u0438\u0438.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-303378","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/303378","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=303378"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/303378\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=303378"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=303378"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=303378"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}