/* $1b ABA inherent ***** */ INLINE void aba (void) { UINT16 t; t=A+B; CLR_HNZVC; SET_FLAGS8(A,B,t); SET_H(A,B,t); A=t; }
/* $f9 ADCB extended ***** */ INLINE void adcb_ex( void ) { UINT16 t,r; EXTBYTE(t); r = B+t+(CC&0x01); CLR_HNZVC; SET_FLAGS8(B,t,r); SET_H(B,t,r); B = r; }
/* $fb ADDB extended ***** */ INLINE void addb_ex( void ) { UINT16 t,r; EXTBYTE(t); r = B+t; CLR_HNZVC; SET_FLAGS8(B,t,r); SET_H(B,t,r); B = r; }
/* $bb ADDA extended ***** */ INLINE void adda_ex( void ) { UINT16 t,r; EXTBYTE(t); r = A+t; CLR_HNZVC; SET_FLAGS8(A,t,r); SET_H(A,t,r); A = r; }
// actually this is ADDX, causes garbage in nightgal.cpp otherwise INLINE void adcx_im( void ) { UINT16 t,r; IMMBYTE(t); r = X+t/*+(CC&0x01)*/; CLR_HNZVC; SET_FLAGS8(X,t,r); SET_H(X,t,r); X = r; }
/* $b9 ADCA extended ***** */ INLINE void adca_ex( void ) { UINT16 t,r; EXTBYTE(t); r = A+t+(CC&0x01); CLR_HNZVC; SET_FLAGS8(A,t,r); SET_H(A,t,r); A = r; }
/* $eb ADDB indexed ***** */ M6800_INLINE void addb_ix( void ) { UINT16 t,r; IDXBYTE(t); r = B+t; CLR_HNZVC; SET_FLAGS8(B,t,r); SET_H(B,t,r); B = r; }
/* $d9 ADCB direct ***** */ M6800_INLINE void adcb_di( void ) { UINT16 t,r; DIRBYTE(t); r = B+t+(CC&0x01); CLR_HNZVC; SET_FLAGS8(B,t,r); SET_H(B,t,r); B = r; }
/* $ab ADDA indexed ***** */ M6800_INLINE void adda_ix( void ) { UINT16 t,r; IDXBYTE(t); r = A+t; CLR_HNZVC; SET_FLAGS8(A,t,r); SET_H(A,t,r); A = r; }
/* $99 ADCA direct ***** */ M6800_INLINE void adca_di( void ) { UINT16 t,r; DIRBYTE(t); r = A+t+(CC&0x01); CLR_HNZVC; SET_FLAGS8(A,t,r); SET_H(A,t,r); A = r; }
/** @method copy_from( rect ) -> self Sets @self to the same position and size as @rect. This is meant for optimizations. Returns @self. */ static VALUE rb_array_copy_from(VALUE self, VALUE rect) { if(self==rect){ return Qtrue; } Check_Type(rect, T_ARRAY); SET_X(array_get_x(rect)); SET_Y(array_get_y(rect)); SET_W(array_get_w(rect)); SET_H(array_get_h(rect)); return self; }
static VALUE rb_array_inflate_bang(VALUE self, VALUE size) { normalize(self); { GET_X(); GET_Y(); GET_W(); GET_H(); double dx=array_get_x(size); double dy=array_get_y(size); SET_X(x-dx/2); SET_Y(y-dy/2); SET_W(w+dx); SET_H(h+dy); } return self; }
__inline__ static void normalize(VALUE self) { GET_W(); GET_H(); if(w<0){ GET_X(); x=x+w; w=-w; SET_X(x); SET_W(w); } if(h<0){ GET_Y(); y=y+h; h=-h; SET_Y(y); SET_H(h); } }